{"version":3,"file":"static/js/main.2f44e6a8.js","mappings":"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,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,KAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,KAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,KAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,IAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,KAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,KAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ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GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,OAAAQ,GACAqxC,EAAA7xC,EAAA,MAAAQ,GACAqx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A,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WCnKF,MACMC,GAAqB,CACzB1T,KAAM,CACJiE,MAAQx9P,GAASA,EAAKjyH,OAExB2rX,SAAU,CACR8D,MAAQx9P,GAAS,IAAMA,EAAKx6H,MAG9B/H,SAAU,CACR+/X,MAAQx9P,GAAS5gI,GAAK4gI,EAAKg+P,YAAa,SAE1CxE,oBAAqB,CACnBgE,KAAAA,CAAMx9P,GACJ,MAAMktQ,EAAUpiI,GAAK,IAAK1rQ,GAAK4gI,EAAKgmQ,oBAAqB,MAAO,KAC1D7lY,EAASf,GACb,CACE4gI,EAAKt5H,UACLtH,GAAK,CAAC4gI,EAAKx6H,KAAM0nY,IACjB9tY,GAAK4gI,EAAKikQ,WAAY,MAExB,KAIF,OAAmB,UAAX9jY,EAAqB,GAAKA,EAAS,KAAO6/H,EAAK2kQ,YACzD,GAEFlL,mBAAoB,CAClB+D,MAAOxwV,IAAA,IAAC,SAAEgiO,EAAQ,KAAEh6Q,EAAI,aAAEqoQ,EAAY,WAAE4mI,GAAYj3V,EAAA,OAClDgiO,EACA,KACAh6Q,EACA81Q,GAAK,MAAOzN,GACZyN,GAAK,IAAK1rQ,GAAK6kY,EAAY,KAAK,GAEpCtK,aAAc,CACZ6D,MAAOxnV,IAAA,IAAC,WAAE4uV,GAAY5uV,EAAA,OAA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,IAK9BjB,EAAmB,kBAAay7B,EAAqBx6B,EAAKygG,EAAS8wK,GAAA1yQ,WAAA,EAAAt9C,WAAA,SAGzEw9C,EAAiBy8Z,WAAa,SAAAp7b,GAAA,OAC5BnoB,EAAqBuiF,EAAsBx6B,EAAAs/C,GAAA,GAAUmhD,EAAA,GAAYrgI,GAAA,EAGnE2+B,EAAiBw9I,MAAQ,SAAAn8K,GAAA,OACvBnoB,EAAqBuiF,EAAsBx6B,EAAAs/C,GAAA,GACtCmhD,EAAA,CACH87C,MAAOr+K,MAAMy6I,UAAUlgK,OAAOgoJ,EAAQ87C,MAAOn8K,GAAO7nB,OAAO6tM,WAAA,EAGxDrnJ,CAAA,CDzBO,CAAqC81Q,GAAiB58T,EAAA,EDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIUk2E,SAAQ,SAAAl2E,GAClB24T,GAAO34T,GAAc24T,GAAO34T,EAAA,KELT,oBAAAA,EAOPA,EAAgBuiF,GAAA,KACrB89Q,MAAQrgW,EAAA,KACRqid,YA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zkQ,KAAM,qLACNo6f,SAAU,4CACVC,QACE,y4BACFC,SACE,8FACFC,QACE,0PACFC,aACE,yHACFC,YACE,iPAEJvqE,OAAQ,kDAEVC,QAAS,CACPt5C,KAAM,CACJ,IACE,gFACF,IACE,sEACF,IACE,+IACF,IAAO,2DACP,IAAO,wDACP,IACE,+KACF,IACE,uFACF,IACE,gFACF,IACE,iFACF,IACE,0GACF,IAAO,iDACP,IACE,0FACF,IACE,mGACF,IACE,qHACF,IAAO,8BAET6jH,UAAW,CACTC,wBAAyB,qBACzBC,gBAAiB,WAEnBC,cAAe,oBACfC,cAAe,gBACfC,UAAW,aACXjC,cAAe,iBACfr0P,MAAO,uCACPyrL,OAAQ,kDAEVz4J,OAAQ,CACNhzB,MAAO,yBACPyrL,OAAQ,oDAGZ,iBAAkB,CAChBj5J,MAAO,kBACP+jO,6CACE,yGACF5qE,kBAAmB,qBACnBC,oBAAqB,4BACrBC,sBAAuB,6BACvBC,kBAAmB,oBACnBC,eAAgB,IAChBC,eAAgB,IAChBC,eAAgB,IAChBC,aAAc,qBACdC,mBACE,yEACFC,eAAgB,UAChBp5J,OAAQ,UACRwjO,qBAAsB,wBACtBnqE,wBAAyB,UACzBC,wBAAyB,UACzBC,wBAAyB,UACzBC,YAAa,kBACbC,YAAa,0BACbC,YAAa,WACb+pE,IAAK,sBACLC,WAAY,qBACZC,sBAAuB,wBACvBC,yBACE,oEACFC,iBACE,kEACFltb,OAAQ,2BACRmtb,UAAW,WACXC,gBAAiB,wBACjBC,YAAa,iBACbC,aAAc,iCACdC,iBAAkB,0BAClBC,oBAAqB,uCACrB1rG,WACE,8FACF2rG,gBAAiB,4BACjBC,iBAAkB,yBAClBC,0BAA2B,4BAC3BhC,eAAgB,oBAChBiC,aAAc,mBACdC,2BAA4B,4BAC5BC,oBAAqB,0BACrBC,YAAa,qBACbC,qBAAsB,CACpB,IACE,gFACF,IACE,sEACF,IACE,+IACF,IAAO,2DACP,IAAO,wDACP,IACE,+KACF,IACE,uFACF,IACE,gFACF,IACE,iFACF,IACE,0GACF,IAAO,iDACP,IACE,0FACF,IACE,mGACF,IACE,qH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AAc,mBACdC,aAAc,cACd1xB,YAAa,gBACb2/E,UAAW,aACX3gB,SAAU,cACV4gB,sBACE,sFACFC,6BACE,uDACFC,cAAe,cACfC,UAAW,yBACXC,aAAc,gBACd5yE,SAAU,aACVyqC,QAAS,YACTwE,SAAU,YACVtO,QAAS,YACTkyC,MAAO,kBACPpvE,OAAQ,SACRqvE,iBAAkB,sBAClBC,WAAY,gBACZC,UAAW,aACXC,SAAU,cACVvE,UAAW,kBACXwE,OAAQ,UACRC,sBAAuB,yBACvBC,WAAY,YACZC,oBACE,6FACFC,eAAgB,oBAChBC,4BACE,wDACFC,8BACE,oDACFC,uBAAwB,2CACxBC,mBACE,mMACFC,aAAc,cACdC,SAAU,WACVxrL,OAAQ,UACRyrL,kCACE,2DACFC,gCACE,0DACFC,gCACE,8DACFC,8BACE,6DACFC,WAAY,UACZC,aAAc,eACdC,eAAgB,oBAChBrzB,QAAS,UACTszB,aAAc,aACdC,gBAAiB,qBACjBC,aAAc,uBACdC,eAAgB,qBAChBC,eAAgB,UAChBC,YAAa,mBACbC,iBAAkB,0BAClBC,eAAgB,yDAChBC,sBACE,yLACFC,uBAAwB,uCACxBC,YAAa,iDACbC,YAAa,6CACbC,qBACE,0GACFC,SAAU,mCACVC,iBACE,uMACFC,UAAW,gBACXC,UACE,+FACFC,UAAW,0CACXC,kBACE,yEACFC,kBACE,2EACFC,kBACE,+GACFC,mBAAoB,kCACpBC,WAAY,iBACZ,eAAgB,CACd,EAAK,GACL1mf,EAAG,eACH1I,EAAG,oBAELqvf,QACE,0FACFC,QACE,0FACFC,QACE,qGACFC,WACE,+EACFC,WACE,mFACF8gD,aAAc,4DAEhB,kBAAmB,CACjB7gD,YAAa,UACbC,mBACE,8EACFC,gBAAiB,oDACjB3pC,WAAY,cACZoD,SAAU,YACVhtB,WAAY,sBACZC,SAAU,MACV+yB,WAAY,eACZwgC,aACE,uFACFC,qBACE,mEACFC,UAAW,2DACXC,aACE,gIACFC,kBAAmB,uDACnBC,eAAgB,qCAChBC,WAAY,+BACZC,kBAAmB,iBACnBC,gBAAiB,cACjBC,cAAe,uBACfC,SAA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Ac,sBACdC,WAAY,oCACZC,cAAe,2BACfC,IAAK,4DACLC,WAAY,aACZC,eACE,uFACFC,cAAe,0BACfC,WAAY,iBACZC,cAAe,gDACfr9G,SAAU,aACVs9G,KAAM,cACNh+G,cAAe,qBACfi+G,QAAS,qCACTC,eACE,8EACFC,aAAc,yBACdxL,gBAAiB,mBACjBjkG,SAAU,YACV0vG,SACE,uEACFC,YAAa,gCACbC,WAAY,kBACZC,aAAc,uBACdC,YAAa,cACbC,eAAgB,mBAChBp+G,OAAQ,aACRq+G,gBAAiB,oBAGrB,8BAA+B,CAC7B7gI,QAAS,mBACT,6BACE,iLACF,IAAO,wDACP,IACE,+GACF,IACE,6HACF,IACE,yGACF,IACE,uHACF,IACE,yIACF,IACE,sIACF,IACE,iHACF,IACE,2HACF,IAAO,4BACP,IACE,iHACF,IACE,oFACF,IAAO,+CACP,IACE,+HACF,IACE,sGACF,IACE,mHACF,IACE,+HACF,IACE,6IACF,IACE,oTACF,IACE,6IACF,IACE,0GACF,IACE,yGACF,IAAO,mEACP,IAAO,4DACP,IACE,6EACF,IAAO,gDACP,IACE,iFACF,IAAO,iEACP,IACE,0FACF,IAAO,+DACP,IAAO,yCAETgkC,YAAa,CACXu5D,cAAe,sCAEjBujC,WAAY,CACVC,iBAAkB,2DAClBC,iBAAkB,uBAClBC,iBAAkB,sBAClBC,iBAAkB,mBAClBC,WAAY,aACZtsT,QAAS,CACP,EAAK,QACL,EAAK,QACL,EAAK,WACL,EAAK,QACL,EAAK,WACL,EAAK,SACL,EAAK,YAEPw/R,WAAY,eACZ+sB,iBAAkB,gBAClBC,gBAAiB,2BACjBlvG,MAAO,MACPmvG,cAAe,oBACfC,YAAa,gBACbthG,GAAI,KACJuhG,uBAAwB,yBACxBC,uBAAwB,yBACxBC,uBAAwB,yBACxBC,mBAAoB,6BACpB9+H,OAAQ,CACN++H,IAAK,SACLC,MAAO,SACPx4Z,MAAO,SACP6tU,MAAO,SAET4qF,wBAAyB,kDACzBC,qCAAsC,sCACtCC,0BAA2B,4BAC3B7+G,MAAO,mBACPmoG,IAAK,WACL2W,4BACE,yEACF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FACFC,+BACE,0DACFC,kCACE,wFACFC,2BACE,wEACFC,eAAgB,sDAChBC,gBAAiB,oCACjBC,sBAAuB,0BACvBC,WAAY,CACVC,cAAe,iBACfpwU,MAAO,cACPkwU,sBAAuB,oCACvBG,mBAAoB,4BACpBC,sBAAuB,mCACvBC,8BACE,iDAEJC,gBAAiB,kBACjBC,WAAY,CACV1G,KAAM,qBACN2G,eAAgB,0DAChBC,gBACE,8DACFC,WAAY,qCACZj5B,oBAAqB,4BACrB6iG,OAAQ,iBACR3pE,iBACE,mKAEJC,YAAa,eACbC,KAAM,CACJhH,KAAM,OACNiH,KAAM,QACNC,MAAO,UAETC,iCACE,mDACFupE,kDACE,2FACFC,yBAA0B,uCAC1BC,4CACE,4FACFhxhB,cAAe,qCACfC,oBAAqB,wBACrBC,aAAc,iBACdC,SAAU,6DACVpO,MAAO,oBACPskJ,MAAO,SACP,oBAAqB,CACnB,IAAO,4CACP,IAAO,2BACP,IAAO,gDACP,IAAO,4CACP,IAAO,qBACP,IAAO,qCACP,IAAO,iCACP,IAAO,6BACP,IAAO,uCACP,IACE,0EACF,IAAO,qCACP,IAAO,4BACP,IAAO,sDACP,IAAO,gCACP,IAAO,kCACP,IAAO,2CACP,IAAO,gCACP,IAAO,kCACP,IAAO,sCACP,IAAO,gCACP,IAAO,kCACP,IAAO,0DACP,IAAO,wDACP,IAAO,+DACP,IAAO,wCACP,IACE,8HACF,IACE,qHACF,IACE,2HACF,IACE,wJACF,IACE,uKACF,IACE,gIACF,IAAO,WACP,IACE,qGACF,IAAO,sCACP,IAAO,cACP,IAAO,iDACP,IAAO,cACP,IACE,4GACF,IAAO,yDACP,MACE,oFAEJ46Y,iBAAkB,kBAClBC,gBAAiB,2CACjB1pE,iBAAkB,wBAClB2pE,cAAe,8CACfC,mBAAoB,8CACpBC,oBAAqB,4CACrB5pE,sBACE,6EAEJ,4BAA6B,CAC3B6pE,uBACE,yFACFC,qBACE,wEACF7pE,aAAc,oCACdC,yBAA0B,mDAC1BnD,gBAAiB,2BACjBoD,cAAe,8BACf36B,MAAO,YACPukG,aAAc,uCACd3pE,OAAQ,YACRrv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,UAAW,eACXC,QAAS,aAEX31M,QAAS,uCACT41M,oBAAqB,gCACrBC,0BAA2B,8CAC3B0gC,UAAW,CACTC,kBAAmB,cACnBC,uBAAwB,kCACxBC,SAAU,cACVptH,YAAa,YACbqtH,QAAS,WACTC,UAAW,aACX39hB,UAAW,SACX49hB,wBAAyB,+BACzBC,mBAAoB,sBACpBC,qBAAsB,kCACtBC,gBAAiB,wBACjBC,iBAAkB,wBAClBC,WAAY,aACZlqH,QAAS,aACTrC,MAAO,yBACPN,uBAAwB,gBACxB8sH,SAAU,UACVC,uBAAwB,yBACxBC,YAAa,cACbC,WAAY,UACZC,gBAAiB,8BACjBC,WAAY,WACZC,qBAAsB,oBACtBz8G,gBAAiB,WACjB08G,WAAY,WACZC,gBAAiB,eACjBC,aAAc,aACdC,oBAAqB,mCACrBC,sBAAuB,uBACvB1uH,cAAe,oBACf2uH,qBAAsB,2BACtBC,YAAa,YACbC,aAAc,gBACdC,WAAY,6BACZC,cAAe,oBACfC,IAAK,wCACLC,WAAY,cACZC,eAAgB,kDAChBC,cAAe,8BACfC,WAAY,cACZC,cAAe,iDACfr9G,SAAU,aACVs9G,KAAM,eACNh+G,cAAe,eACfi+G,QAAS,gCACTC,eAAgB,4CAChBC,aAAc,oBACdxL,gBAAiB,qBACjBjkG,SAAU,WACV0vG,SAAU,iEACVC,YAAa,kCACbC,WAAY,WACZC,aAAc,sBACdC,YAAa,aACbC,eAAgB,kBAChBp+G,OAAQ,SACRq+G,gBAAiB,mBAGrB,8BAA+B,CAC7B,IAAO,4BACP,IACE,yGACF,IACE,2EACF,IAAO,+CACP,IAAO,0DACP,IACE,gHACF,IACE,0GACF,IACE,4FACF,IACE,qGACF,IACE,8GACF,IACE,uGACF,IACE,sGACF,IACE,8FACF,IACE,+HACF,IACE,4GACF,IACE,mOACF,IACE,0GACF,IACE,+HACF,IACE,kHACF,IACE,iGACF,IACE,gFACF,IAAO,iDACP,IAAO,+CACP,IACE,8EACF,IAAO,mDACP,IACE,kIACF,IACE,+EACF,IAAO,gEACP,IACE,4FACF,IAAO,2CACP,IAAO,uCACP7gI,QAAS,kBACT,6BACE,0JAEJgkC,YAAa,CACXu5D,cAAe,+CAEjBujC,WAAY,CACVC,iBAAkB,wDAClBC,iBAAkB,sBAClBC,iBAAkB,wBAClBC,iBAAkB,mBAClBC,WAAY,mBACZtsT,QAAS,CACP,EAAK,UACL,EAAK,UACL,EAAK,WACL,EAAK,YACL,EAAK,UACL,EAAK,WACL,EAAK,UAEPw/R,WAAY,eACZ+sB,iBAAkB,iBAClBC,gBAAiB,oBACjBlvG,MAAO,QACPmvG,cAAe,oBACfC,YAAa,cACbthG,GAAI,MACJuhG,uBAAwB,0BACxBC,uBAAwB,0BACxBC,uBAAwB,0BACxBC,mBAAoB,0BACpB9+H,OAAQ,CACN++H,IAAK,SACLC,MAAO,UACPx4Z,MAAO,UACP6tU,MAAO,UAET4qF,wBAAyB,mDACzBC,qCAAsC,iCACtCC,0BAA2B,8BAC3B7+G,MAAO,sBACPmoG,IAAK,YACL2W,4BACE,6EACFC,gCACE,mDACFC,+CACE,+BACF,iBAAkB,iBAClBC,uCAAwC,gCACxC,uBAAwB,6BACxBC,sCAAuC,sBACvC,qBAAsB,kBACtBC,OAAQ,UACRC,aAAc,6BACdpnG,cAAe,wBACfqnG,aAAc,uBACdC,WAAY,kBACZC,aAAc,yBACdC,iBAAkB,iBAClBC,UAAW,uBACX38D,WAAY,oBACZz3D,YAAa,aACbq0H,UAAW,WACXC,OAAQ,YACRC,KAAM,gBACNC,IAAK,WACLC,KAAM,WACNC,KAAM,QACNnoB,KAAM,OACNl+G,IAAK,KACL71G,QAAS,CACP61G,IAAK,sFACLsmI,aACE,6EACFpoB,KAAM,2EACNqoB,cACE,mEACFl3H,IAAK,gFACLm3H,aACE,uEACFroB,OACE,8FACFsoB,gBACE,qFACFroB,UACE,+FACFC,aACE,yGAEJqoB,wBAAyB,6BACzBC,kBAAmB,oBACnBC,kBAAmB,uBACnBC,iBAAkB,oBAClBC,gBAAiB,qBACjBC,gCACE,qDACFC,kBAAmB,uBACnBC,yBAA0B,wCAC1BC,sCACE,sDACFC,sCACE,yDACFC,mCACE,0CACFC,oBAAqB,mBACrBC,kBAAmB,sBACnBC,UAAW,YACXp1J,WAAY,gBACZq1J,YAAa,SACbC,iBAAkB,MAClBhuB,cAAe,cACfiuB,aAAc,MACdC,sBAAuB,gBACvBC,YAAa,6BACbC,kBAAmB,mBACnB79D,oBAAqB,2BACrB89D,oBAAqB,aACrBC,sBAAuB,oBACvBC,sBAAuB,yBACvBC,YAAa,yBACbC,gBAAiB,wBACjB3kG,QAAS,cACT4kG,WAAY,aACZC,qBAAsB,4BACtB/tF,MAAO,SACPguF,oBAAqB,mCACrBC,sBAAuB,0BACvBC,YAAa,mBACbC,cAAe,uBAEjBC,yCAA0C,CACxCvE,iBAAkB,0DAClBj4O,UAAW,WACXC,SAAU,OACVw8O,KAAM,OACNC,WAAY,wBACZ7jI,QAAS,QACT8jI,mBAAoB,mBACpBC,uBAAwB,4BACxBJ,yCAA0C,6BAC1CK,eAAgB,aAElB,eAAgB,CACdC,cAAe,iBACfC,SAAU,gCACVp3F,OAAQ,CACNn6c,QAAS,oDACTwxiB,SAAU,2DAEZC,gBAAiB,CACfzxiB,QAAS,8DACTwxiB,SAAU,iEAEZplI,OAAQ,CACNpsa,QAAS,2DACTwxiB,SAAU,sDAEZE,gBAAiB,CACf1xiB,QACE,qEACFwxiB,SAAU,iEAEZ1rC,YAAa,CACX/yM,MAAO,0BACPgzM,gBAAiB,MACjBC,cAAe,4BAGnB,iBAAkB,CAChB9uF,MAAO,UACP4wF,WAAY,mBACZ/0M,MAAO,mBACPw1O,eAAgB,uBAChBC,wBAAyB,kCACzBC,0BAA2B,0BAC3B1gC,WAAY,gBACZxiB,QAAS,YACTosD,sBAAuB,0BACvB56F,YAAa,WACb66F,cAAe,uCACfC,gBAAiB,8BACjBttC,8BAA+B,iCAEjC,eAAgB,CACdxxM,MAAO,eACP0xN,UAAW,gCACXC,kBAAmB,4BACnBC,2BACE,wEACF5vN,QACE,6KACFi4G,QAAS,cAEX,+BAAgC,CAC9Bj6G,MAAO,+BACP++O,kBAAmB,qBACnBC,yBAA0B,oCAC1BC,0BAA2B,qCAE7B,sBAAuB,CACrBj/O,MAAO,mCAET,uBAAwB,CACtBA,MAAO,wBACPk/O,MAAO,eACP77M,aAAc,WACd87M,gBAAiB,gBACjBnzB,sBAAuB,gCAEzB,gBAAiB,CACf7+gB,MAAO,CACLkxhB,sBAAuB,iDACvBD,qBAAsB,+CAExBh3I,QAAS,CACPg4J,eAAgB,iBAGpB,kBAAmB,CACjBC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,uBAAwB,8BACxBC,4BAA6B,oCAC7BC,wBAAyB,+CACzBC,qBAAsB,qCACtBC,uBAAwB,2BACxBC,+BAAgC,oCAChCC,aAAc,qBACdC,kBAAmB,qBACnBC,kBAAmB,2BACnBC,uBAAwB,qBACxBx/O,OAAQ,YACR67G,KAAM,YACN4jI,aAAc,yBACdpkI,OAAQ,CACNl8G,QAAS,WACTpqN,UAAW,YACXpoG,MAAO,QAETA,MAAO,CACL+yiB,iBACE,2EACFC,iCACE,4DACFC,sBACE,iKACFC,mBACE,oHACFC,kBAAmB,8CACnBC,mBACE,+FACFC,qBACE,0GACFC,aAAc,+DAEhBC,iBAAkB,eAClBxB,MAAO,CACLyB,oBAAqB,sDACrBC,iBAAkB,yBAClBC,sBAAuB,6BACvBC,gBAAiB,uBACjBC,aAAc,0BACdC,aAAc,0BACdC,uBAAwB,6BACxBC,aAAc,0BACdC,eAAgB,4BAChBC,sBAAuB,wBACvBC,kBAAmB,qCACnBC,4BAA6B,wCAC7BC,4BAA6B,wCAC7BC,0BAA2B,4CAC3BC,0BAA2B,6CAC3BC,gCACE,iDACFC,kBAAmB,2BACnBC,0BAA2B,+BAC3BC,wBAAyB,+BACzBC,yBAA0B,gCAC1BC,kCACE,4CACFC,iBAAkB,4BAClBC,gCAAiC,yCACjCC,gBAAiB,2BAEnBxwE,UAAW,CACT1xK,MAAO,iCACP4hK,MAAO,UACPugF,UAAW,WACX/hP,QAAS,gEAEXgnF,QAAS,CACPg7J,oBAAqB,iBACrBtB,gBAAiB,0CACjBuB,sBACE,yEACFC,0BACE,kDACFC,4BACE,qEACFC,kBACE,4FACFC,0BAA2B,+CAC3BtG,kBAAmB,0CACnBuG,+BACE,kDACFC,kBAAmB,yBACnBC,iBAAkB,6CAGtB,qBAAsB,CACpBC,cAAe,yBACfC,eAAgB,uBAChBC,iBAAkB,yCAEpB,iBAAkB,CAChBr2G,MAAO,CACL1pI,QAAS,QACTggP,UAAW,YACXC,kBAAmB,8CACnBC,8BACE,8CACFC,wBAAyB,2CAG7B3lN,cAAe,CACb24K,MAAO,QACPjtf,IAAK,SACL,qBAAsB,CACpB82S,MAAO,cACPgC,QAAS,wDACTf,IAAK,KACLC,GAAI,OAEN45J,IAAK,CACH5wD,WAAY,oBACZgmE,kBAAmB,YACnBkmC,WAAY,gBAEdz1F,OAAQ,CACNsrF,QAAS,aACTv/D,MAAO,KACP2pE,aAAc,CACZ3pE,MAAO,gBACP4pE,SAAU,cACVC,WAAY,OACZC,yBAA0B,OAC1BC,eAAgB,cAElBlrC,kBAAmB,wBACnBmrC,mBAAoB,SACpB7mC,iBAAkB,CAChB8mC,YAAa,WACbC,YAAa,mBAEfC,gBAAiB,CACfn2J,KAAM,OACNo2J,SAAU,WACVC,UAAW,qBACXC,oBAAqB,sBACrBC,aAAc,QACdC,WAAY,UACZC,mBAAoB,sBACpBC,kBAAmB,mBACnBC,iBAAkB,gBAClBrtG,aAAc,cACdqqD,cAAe,gBACfijD,kBAAmB,mBACnBC,eAAgB,8BAElB6rC,SAAU,CACRrzE,MAAO,WACPqnC,kBAAmB,gBACnBisC,UAAW,cAEb7rC,sBAAuB,IACvB9jD,eAAgB,OAChB4vF,oBAAqB,iCACrBC,wBAAyB,qCACzBC,uCAAwC,sBACxC/rC,2BAA4B,CAC1BC,sBAAuB,gCACvBC,wBAAyB,kCACzBC,kBAAmB,6BACnB/1M,OAAQ,SACRg2M,OAAQ,UACR9yE,gBAAiB,oBACjB+yE,YAAa,oBACbC,cAAe,iBAEjB0rC,wCAAyC,CACvCp8iB,EAAG,+DACH05F,EAAG,sFACH06K,EAAG,qIACHioS,GAAI,qIACJC,GAAI,qIACJ50S,GAAI,uFACJsI,GAAI,uFACJ+T,EAAG,qXAGP8yM,MAAO,CACL43C,UAAW,eACXz/E,IAAK,MACLb,IAAK,aACLE,IAAK,WACLsiF,sBAAuB,sBACvB77E,QAAS,eACT63C,UAAW,QAEb39C,IAAK,CACH4hF,cAAe,cACfhpF,SAAU,YAEZipF,2BAA4B,CAC1BrB,gBAAiB,CACfn2J,KAAM,OACNw9H,QAAS,UACTxzE,KAAM,OACNs/D,SAAU,cACV+T,MAAO,UAETr9H,KAAM,OACNw9H,QAAS,KACTxzE,KAAM,MACNs/D,SAAU,MACVl9B,KAAM,WAERjtB,KAAM,UACNr/G,OAAQ,SACR0tK,UAAW,gBACXt1C,MAAO,YACPj3H,MAAO,QACPiiP,eAAgB,4BAChBC,cAAe,6BACftqD,OAAQ,aACRuqD,cAAe,wDACf3rC,0BAA2B,0BAC3B4rC,qBACE,+DACFr4N,SAAU,CACRq8H,SAAU,KACVqwD,GAAI,KACJpuC,SAAU,MACVgtC,oBAAqB,OACrBtrC,KAAM,UACNC,QAAS,UACT,MAAO,MACPC,MAAO,SACP,MAAO,MACPnd,QAAS,QACTE,MAAO,QACPkd,MAAO,WACPC,OAAQ,OACRC,OAAQ,UACRC,MAAO,KACP,WAAY,OACZE,MAAO,QACPC,UAAW,YACXC,QAAS,WACTC,aAAc,iBACd23E,cAAe,4BACfC,cAAe,0BACfC,6BAA8B,kCAC9BC,wBAAyB,2CACzBC,gBAAiB,MACjBC,iBAAkB,KAClBC,wBAAyB,aACzB5rC,mBAAoB,MACpBL,IAAK,OACLC,WAAY,CACV95V,IAAK,QACLsO,KAAM,QACN/F,MAAO,QACP3G,KAAM,SAERiuT,QAAS,YAEXkqC,OAAQ,CACNj9f,MAAO,CACLk9f,mBAAoB,uBACpBC,8BAA+B,wBAC/B/W,oBAAqB,qBACrBgX,mBAAoB,2BACpBC,sBAAuB,gCACvBC,UAAW,cACXC,2BACE,gDAEJlvC,OAAQ,cACRp9B,KAAM,QAERviC,aAAc,cACd8uG,MAAO,oBACPC,QAAS,yBACTh+E,WAAY,aACZytC,QAAS,CACPjqD,KAAM,SACNjlO,KAAM,UACNw3P,QAAS,YACTkoE,OAAQ,aACRC,IAAK,MACLnsC,KAAM,OACNy3E,UAAW,aACXC,UAAW,0BACXC,UAAW,2CACXC,UAAW,wBACXC,UAAW,mBAEbzrC,iBAAkB,CAChBxtC,KAAM,SACNC,QAAS,IACT,MAAO,KACPC,MAAO,KACP,MAAO,KACPnd,QAAS,KACTE,MAAO,KACPi2F,YAAa,CACXl9N,IAAK,IACLn6F,KAAM,IACNL,MAAO,IACPD,KAAM,MAGV83M,gBAAiB,CACfqN,SAAU,YACV+mE,KAAM,kCACNC,sBAAuB,yBACvBC,IAAK,oCACLC,KAAM,oDACNxsC,KAAM,OACNksC,OAAQ,aACRC,IAAK,MACLnB,YAAa,mBACbyB,OAAQ,QACR1B,OAAQ,SACR2B,QAAS,aAEXC,sBAAuB,CACrBz5M,MAAO,6BACP6kP,iBACE,iHACFn4G,MAAO,gBACP+9B,aAAc,gBACd32D,YAAa,KACbi0C,SAAU,KACViiB,SAAU,MACVqE,QAAS,WACT3jE,KAAM,MACNgvG,aAAc,mCACdorC,cACE,iFACFnrC,qBAAsB,CACpBC,QAAS,CACPlsC,OAAQ,UACRC,UAAW,cACXC,MAAO,SACPC,QAAS,aACTC,MAAO,SACPC,UAAW,YACXC,QAAS,6BAEX6rC,KAAM,CACJ/tC,OAAQ,kBACRC,OAAQ,qBACRC,MAAO,oBAET+N,UAAW,CACT+/B,UAAW,CACTpyL,IAAK,WACLn6F,KAAM,YACNL,MAAO,aACPD,KAAM,YAER8sR,QAAS,CACPryL,IAAK,mBACLn6F,KAAM,mBACNL,MAAO,mBACPD,KAAM,oBAGVm/O,QAAS,iBAEX24E,mBACE,4FACFC,iBACE,2FACFC,kBAAmB,4BACnB1mI,KAAM,WACN2mI,kBAAmB,oBACnB9xG,OAAQ,eAEVs9B,mBACE,0DACFy0E,qBAAsB,CACpB13F,iBAAkB,6BAClB23F,MAAO,qDACPC,kBAAmB,4BAErB3vH,IAAK,CACH2gF,aAAc,gCAEhB2D,0BAA2B,CACzBh6M,MAAO,oBACPu5M,OAAQ,QACR19H,QAAS,aACTo+H,SAAU,YACVp6F,KAAM,UACNr/G,OAAQ,YACR05M,KAAM,eACNzyD,QAAS,CACPnV,QAAS,WACTC,YAAa,eACb4nE,wBAAyB,eACzBC,YAAa,iBACbC,gBAAiB,8BACjBC,iBAAkB,oBAClBC,eAAgB,6BAChB+qC,mBAAoB,qCACpBtja,MAAO,UAETuja,aAAc,4BACdpmE,UAAW,aACXnkD,SAAU,YACVwqH,mBACE,8FACFC,2BACE,2DACFC,4BACE,+DACFC,yBACE,0FACFC,0BACE,kGAEJprC,6BAA8B,CAC5Bx6M,MAAO,6BACPu5M,OAAQ,QACR19H,QAAS,aACTo+H,SAAU,YACVp6F,KAAM,UACNr/G,OAAQ,YACRu6H,WAAY,aACZC,SAAU,YACVsB,IAAK,wBACL8W,OAAQ,SACRqnE,YAAa,iBAEforC,uBAAwB,CACtB7lP,MAAO,gDACPq2M,aAAc,gBACd71M,OAAQ,YACR+4L,OAAQ,cAEVh1L,QAAS,CACP1/V,MAAO,CACLmlc,aAAc,gBACdqO,UAAW,cAGfqiG,iBAAkB,CAChBhlb,OAAQ,CACNo7W,QAAS,YACTguC,YAAa,aAEfhke,KAAM,QACNuga,eAAgB,cAChBsjE,MAAO,QACP92B,IAAK,QACLxvC,UAAW,YACX0vC,SAAU,kBACV62B,WAAY,yBACZC,YAAa,gBACbp3e,IAAK,WACLq3e,YAAa,YACb5U,MAAO,kBACPywC,WAAY,CACVpzE,OAAQ,UACRqzE,YAAa,kCACbC,WAAY,cACZ57B,YAAa,uBAEfC,WAAY,CACVC,UAAW,aACXC,YAAa,gBAEf,cAAe,CACbz+D,OAAQ,UAEV0+D,iBAAkB,mBAClBC,SAAU,YACV/yC,KAAM,UACNigB,UAAW,oBACXs5F,SAAU,YACVC,YAAa,WACbhjG,QAAS,WAEX+3D,OAAQ,CACNpnD,eAAgB,sBAChBqnD,iBACE,8PACFC,eACE,+DACFlsC,aAAc,yDACdmsC,kBAAmB,sCACnB+qC,mBACE,wFACFC,mBACE,gKAEJC,aAAc,CACZ1zD,QAAS,iBACThwL,KAAM,2TAER04M,iBAAkB,CAChBC,gBAAiB,mCACjB9gG,KAAM,OACNuM,MAAO,WACPsjD,MAAO,WACPmE,QAAS,WACTrE,SAAU,MACViU,MAAO,MACPC,QAAS,KACTn2B,SAAU,KACVo+F,qBAAsB,gCACtB32E,YAAa,yBACb4rC,OAAQ,CACN1wC,MAAO,sCACP2wC,SACE,mHACF5wC,aAAc,gBACdvtD,QAAS,cACT6nC,QAAS,0CACTu2D,YACE,gGACFxggB,KAAM,SAERyggB,QAAS,CACP9wC,aAAc,qCACdlsC,WAAY,gBACZssC,kBAAmB,sCACnB3tD,QAAS,wCACT4tD,SAAU,kDACVC,MAAO,+BACPC,eAAgB,+CAChB9gE,WACE,2EAGNsxG,uBAAwB,CACtB3E,gBAAiB,CACfn2J,KAAM,OACN+6J,SAAU,cAGdC,oBAAqB,CACnB17M,MAAO,gBACPn0W,QAAS,CACPk3d,MAAO,sBACP8kC,IAAK,cACLkG,WAAY,kBACZ4tD,QAAS,aAEX3xC,SAAU,MACVvie,IAAK,QACLm0gB,YAAa,WACb98F,WAAY,eACZ+8F,kBAAmB,yBACnB5sB,SAAU,iBACV6sB,uBACE,2FACFC,mBAAoB,cACpBr7M,QAAS,aACTF,OAAQ,YACRvgV,OAAQ,CACNmmkB,cAAe,8BACf5jG,UAAW,aACX6jG,WAAY,iBACZlojB,QAAS,cACTq7gB,QAAS,aACT9gG,SAAU,gBAEZk2E,eAAgB,mCAChBD,kBACE,8DACF83B,SAAU,CACRzmN,MAAO,iBACPllT,KAAM,UACNiqc,QAAS,gBACTuhG,eAAgB,8CAChB/pI,WAAY,8CACZgqI,kBAAmB,eACnBC,eAAgB,cAChBnqI,KAAM,aACN77G,OAAQ,aACRimP,YAAa,wBAEfC,sBACE,qEACFC,oBACE,yFACFC,cAAe,gBACfC,YAAa,sBAEfhuf,QAAS,CACPkiY,WAAY,YACZC,SAAU,aAEZ8rH,qBAAsB,CACpBpmM,KAAM,QAERo3D,mBAAoB,CAClB++F,gBAAiB,CACfn2J,KAAM,OACNi7H,OAAQ,WACRq7B,oBAAqB,gBACrBD,UAAW,eAGf9uD,YAAa,CACX8+F,gBAAiB,6CACjBpmI,OAAQ,UAEVqmI,sBAAuB,CACrBj/F,SAAU,kBACV+hB,cAAe,oBACfC,KAAM,SACNrpH,KAAM,OACNipH,OAAQ,YACR3uC,SAAU,YACVisH,yBAA0B,kCAC1BC,uBAAwB,kCACxBC,2BAA4B,kCAC5BC,SAAU,CACR17E,KAAM,UACNC,QAAS,UACT,MAAO,MACPC,MAAO,SACP,MAAO,MACPnd,QAAS,QACTE,MAAO,UAGX04F,0BAA2B,CACzB/4E,aACE,oGACFC,iBAAkB,uBAClBC,cAAe,qBACflyC,IAAK,YACLsyC,QAAS,iBAEX04E,4BAA6B,CAC3B3oH,GAAI,KACJ4oH,cACE,0KACFC,gBACE,4HAGN,cAAe,CACbC,YAAa,UACbC,uBAAwB,2BACxBC,kBAAmB,mBACnBC,cAAe,oBACfC,WAAY,QACZC,aAAc,aACdC,cACE,+FACF3giB,SAAU,aACV4giB,gBAAiB,uBACjBp/F,iBAAkB,sBAClBq/F,cAAe,kDACfC,gBACE,yPACFlmP,QAAS,WACTmmP,WAAY,CACVr0I,YAAa,CACX9zG,MAAO,cACPwC,KAAM,oOACN4lP,aACE,mMAEJziG,YAAa,iBACb0iG,gBAAiB,uBACjBC,OAAQ,WACRzsI,OAAQ,UACR0sI,SAAU,SACVC,QAAS,QACTC,OAAQ,uBAEVC,SAAU,CACR50I,YAAa,CACX9zG,MAAO,cACPwC,KAAM,6bACN4lP,aAAc,IAEhBO,SAAU,aACVC,aAAc,8BACdC,eAAgB,4BAChBC,gBAAiB,oCACjBnwI,QAAS,WACTkD,OAAQ,CACNktI,cAAe,uDACfC,iBAAkB,qCAClBC,sBACE,iEACFC,yBACE,gEACFC,UAAW,iCACXxwI,QAAS,qBAEXywI,mBAAoB,0CACpBC,YAAa,SACbC,mBAAoB,eACpBC,kBAAmB,yCACnBC,kBAAmB,oCACnBC,yBAA0B,0CAC1BC,4BAA6B,+CAE/BC,SAAU,CACR71I,YAAa,CACX9zG,MAAO,cACPwC,KAAM,4RAER23G,WAAY,WACZD,UAAW,cACXG,KAAM,sBACNuM,MAAO,eACPmpF,OAAQ,KACR65C,YAAa,cACbC,WAAY,uBACZC,mBAAoB,eACpBC,SAAU,YACVC,SAAU,qBACVnqI,KAAM,WAERoqI,cAAe,CACbC,MAAO,CACLlqP,MAAO,WACPwC,KAAM,wIAERsxG,YAAa,CACX9zG,MAAO,cACPwC,KAAM,uJAER2nP,QAAS,eACTC,cAAe,eACfC,YAAa,eACbj9iB,QAAS,6BAEXk9iB,YAAa,CACXx2I,YAAa,CACX9zG,MAAO,cACPwC,KAAM,iRAERu0L,MAAO,yBACPwzD,YAAa,8BACbC,YAAa,QACbhC,QAAS,YACTiC,gBAAiB,cACjBzoP,QAAS,WACTixL,OAAQ,qDAGZy3D,UAAW,CACT1qP,MAAO,WACP2qP,qBAAsB,4BACtBC,SAAU,4BACVC,qBAAsB,qCACtBrxC,QAAS,8BACTsxC,UAAW,6BACX32B,QAAS,CACP42B,GAAI,CACF9lE,MAAO,eACPpwE,KAAM,oBAERpyB,KAAM,CACJwiG,MAAO,iBACPpwE,KAAM,qBACNm2I,KAAM,iBAERC,KAAM,CACJhmE,MAAO,oBACPpwE,KAAM,6BAGVq2I,sBAAuB,yBACvBC,iBAAkB,wCAClBC,4BACE,iDACFpwH,SAAU,YACV/L,SAAU,uBACVo8H,4BAA6B,6CAC7BC,cAAe,iBACfC,aAAc,qBACd1vI,OAAQ,CACNA,OAAQ,UACR+D,KAAM,OACNvha,OAAQ,SACRm7f,QAAS,YACTsxC,UAAW,WACXD,qBAAsB,oBAExBjkI,MAAO,GACP4kI,gBAAiB,qBACjBC,gBACE,gKACFC,2BACE,iOACFhrP,QAAS,aACTirP,oBACE,gFAEJ,gCAAiC,CAC/B3rP,MAAO,wCACP0gD,KAAM,OACNi7H,OAAQ,YACRqgC,mBAAoB,OACpBC,SAAU,aACV1vE,KAAM,OACN1T,MAAO,YACPhZ,KAAM,UACNtB,KAAM,WACNu/D,cACE,qEACFt1B,WAAY,+CACZ0zD,aAAc,qCACd30F,aAAc,uCACdggD,UAAW,0DACXxld,OAAQ,cACR6piB,eAAgB,+CAChB3qP,IAAK,KACLC,GAAI,MACJ2qP,eAAgB,gCAChBC,aAAc,sDAEhBC,YAAa,CACXrkO,IAAK,MACLn6F,KAAM,OACNL,MAAO,QACP8+T,QAAS,YACT/+T,KAAM,OACNg/T,OAAQ,oBAEV,iBAAkB,CAChB/qP,GAAI,MACJD,IAAK,KACLk7M,OAAQ,UACR,gBAAiB,uBACjB,cAAe,wBACf,cAAe,uBACf,cAAe,wBACf,eAAgB,sBAChB,gBAAiB,QACjBj2X,QAAS,aACT,mBAAoB,QACpBk2X,gBAAiB,KACjBC,iBAAkB,OAClBC,iBAAkB,KAClBC,KAAM,aACNC,MAAO,YACPC,IAAK,MACLzuX,IAAK,MACL/7E,QAAS,UACTG,OAAQ,QACRQ,QAAS,QACTt8G,QAAS,SACTomjB,WAAY,gBACZC,cAAe,6BACfC,WAAY,iBACZC,OAAQ,UACRn8c,OAAQ,SACRo8c,UAAW,UACXC,UAAW,UACXC,UAAW,WACXC,UAAW,YACXC,UAAW,UACXC,UAAW,WACXC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,UACPC,MAAO,UACPC,MAAO,WACPC,MAAO,YACPC,MAAO,UACPC,MAAO,WACPC,MAAO,SACPC,MAAO,QACPC,OAAQ,UACRC,QAAS,UACTC,UAAW,WACXC,SAAU,YACVC,OAAQ,UACRC,SAAU,WACVC,OAAQ,SACRC,kBAAmB,aACnBC,eAAgB,eAChBC,cAAe,WACfC,mBAAoB,qBACpBC,gBAAiB,uBACjBC,eAAgB,mBAChBC,mBAAoB,kBACpBC,gBAAiB,oBACjBC,eAAgB,gBAChBC,4BAA6B,0BAC7BC,yBAA0B,8BAC1BC,yBAA0B,4BAC1BC,gBAAiB,oBACjBC,WAAY,QACZC,WAAY,UACZC,SAAU,QACVC,kBAAmB,qBACnBC,iBAAkB,kBAClBC,MAAO,KACP,cAAe,0BACf,mBAAoB,4CACpB,gBAAiB,iBACjB,eAAgB,gBAChB,qBAAsB,yBACtB,mBAAoB,qBACpB,mBAAoB,oBACpB,cAAe,oBACfC,IAAK,aACLtxZ,IAAK,eACLuxZ,WAAY,cACZC,OAAQ,MACR,oBAAqB,4CACrB,oBAAqB,yCACrB,oBAAqB,mBACrB,WAAY,SACZ,WAAY,QACZ,YAAa,UACb,gBACE,uGACFl3b,MAAO,UACP,aAAc,eACdm3b,UAAW,aACX,sBAAuB,OACvB,2BAA4B,8BAC5BC,SAAU,aACV,iBAAkB,UAClB,aAAc,QACd,SAAU,eACV,YAAa,gBACb,WAAY,cACZ,cAAe,eACf5wc,QAAS,SACT6mT,QAAS,UACT1P,MAAO,WACPn1N,OAAQ,0BACRwuG,QAAS,kBACT,kBACE,2EACF16P,MAAO,UACP,uBAAwB,0BACxB+6gB,eAAgB,iBAChBC,aAAc,uBACd,aAAc,qBACd,YAAa,cACb5mjB,OAAQ,QACRg1V,OAAQ,aACR0uE,QAAS,YACTmjJ,QAAS,cACT//hB,OAAQ,SACR,WAAY,uBACZ,eAAgB,uBAChB,WAAY,qBACZ,WAAY,kBACZggiB,UAAW,+CACX,gBAAiB,sCACjB,eAAgB,2BAChB,cAAe,2BACf,cAAe,wDACf,sBAAuB,2CACvB,aAAc,mCACd,eAAgB,iDAChB,qBACE,yDACF,qBAAsB,+BAExBisC,cAAe,CACbC,iBAAkB,sBAEpBxd,OAAQ,CACNyd,MAAO,CACLrf,YAAa,qBACb/sO,MAAO,mBACPqsP,iBAAkB,8BAClBl/iB,MAAO,oDACPm/iB,cAAe,8CACf94F,OAAQ,cAGZ,SAAU,CACRn9C,KAAM,CACJ27B,QAAS,yBAEXu6G,WAAY,gCACZC,cAAe,MACfC,SAAU,kBACVC,cAAe,aACf5zH,OAAQ,SACRzf,OAAQ,4DACRszI,cAAe,CACbC,mBAAoB,iDACpBC,sBACE,wEACFC,gCAAiC,sCACjCC,qBAAsB,mDACtBC,aAAc,kDAEhBC,eAAgB,yBAChBC,kBAAmB,CACjBC,sBAAuB,iCACvBC,YAAa,iDAGjBC,iBAAkB,CAChBC,sBAAuB,qCACvBC,aACE,yNACFh+F,QACE,yFACFpuC,MACE,sTACFqsI,WAAY,CACV,EAAK,iFACL,EAAK,wsBAEPxtI,IAAK,CACH,EAAK,iEACL,EAAK,yEAEPytI,UAAW,CACT,EAAK,6JACL,EAAK,sGAGT,oBAAqB,CACnBjgR,MAAO,kDACPx6O,QAAS,mDACTktd,UAAW,oBACXC,mBAAoB,mBACpBxsC,IAAK,CACHl8C,OAAQ,qBACR2oF,OAAQ,uBACRC,MAAO,iBACPC,IAAK,+BAEPC,OAAQ,CACN77iB,KAAM,QACNF,KAAM,eACNzV,UAAW,aACXyxjB,MAAO,iBAET5gG,KAAM,CACJ,OAAU,kCACV,OAAU,sCACV,OAAU,4CACV,OAAU,wBAEZ,eAAgB,CACd5mZ,IAAK,YACLg3I,OAAQ,YACRw9H,MAAO,wCACPz+U,UAAW,aACXwuN,OAAQ,WAGZkjW,WAAY,kBACZC,eAAgB,sBAChBC,IAAK,CACHC,KAAM,CACJpzO,MAAO,qBACPqzO,IAAK,eACLC,YAAa,wBACbC,qBAAsB,6BACtBC,kBAAmB,yBACnBC,eAAgB,wBAChBysC,aAAc,qBACdxsC,aAAc,mBACdC,YAAa,2BACbC,gBAAiB,sBACjBC,gBAAiB,sBACjBC,gBAAiB,0BACjBC,mBAAoB,6BACpBC,gBAAiB,wBACjBC,mBAAoB,uBACpBC,0BAA2B,qBAC3BC,0BAA2B,4BAC3BC,iBAAkB,qBAClBC,oBAAqB,2BACrBC,gBAAiB,2BACjBC,oBAAqB,yBAEvB,aAAc,CACZlB,IAAK,uCACL,eAAgB,oCAChB,wBAAyB,6BACzB,sBAAuB,yBACvB,mBAAoB,wBACpB,gBAAiB,qBACjB,yBACE,kDACF,eAAgB,2BAChB,mBAAoB,sBACpB,mBAAoB,sBACpB,mBAAoB,0BACpB,uBAAwB,6BACxB,oBAAqB,wBACrB,uBAAwB,uBACxB,+BACE,6CACF,qBAAsB,6BACtB,sBAAuB,qBACvB,oBAAqB,yBACrB,oBAAqB,qCACrB,wBAAyB,4BACzB,mCAAoC,mCACpC,qDACE,qDACF,kCAAmC,iCACnC,4CACE,8CAEJlhN,QAAS,CACPqiN,gBAAiB,4BACjBC,iBAAkB,6BAClBC,kBAAmB,uBACnBC,UAAW,qBACXC,sBAAuB,0BACvBC,qBAAsB,0BACtBC,wBAAyB,8BACzBC,4BAA6B,6BAC7BC,uBAAwB,+BACxBC,uBAAwB,wBACxBC,qBAAsB,iBACtBC,mBAAoB,sBACpBC,oBAAqB,uBACrBC,kBAAmB,iCACnBC,qBAAsB,oBACtBC,mCAAoC,8BACpCC,iBAAkB,sBAClBC,oBAAqB,qBACrBC,qBAAsB,8BACtBC,kBAAmB,wBACnBC,iBAAkB,oCAClBC,gBAAiB,uBACjBC,eAAgB,6BAChBC,sBAAuB,6BACvBC,kBAAmB,wBACnBC,mBAAoB,yBACpBC,mBAAoB,0BACpBC,oBAAqB,yBACrBC,wBAAyB,gCACzBC,kBAAmB,gCAErBC,KAAM,CACJ5pX,IAAK,YACL6pX,UAAW,gBAEb,gBAAiB,CACfC,aAAc,kBACdC,UAAW,eACXz/iB,KAAM,OACNqjE,MAAO,UACP8oH,QAAS,UACTuzX,QAAS,eACTC,SAAU,WACV3nO,SAAU,YACV4nO,QAAS,WACTC,gBAAiB,mBACjBC,wBAAyB,wCACzBC,kBAAmB,qBACnBC,2BAA4B,gCAE9BxyE,QAAS,CACP/jM,GAAI,KACJw2Q,IAAK,aACLC,UAAW,YACX7qjB,IAAK,aACLktN,MAAO,QACP49V,cAAe,sBACfC,OAAQ,eACRrnW,OAAQ,SACRsnW,QAAS,WACTC,cAAe,sBACfC,gBAAiB,YACjBC,eAAgB,kBAChBC,eAAgB,mBAChBhliB,OAAQ,SACRgoP,QAAS,SACTi9S,kBAAmB,qBACnBvoU,OAAQ,0BACRj5H,SAAU,WACVh+D,OAAQ,QACRy/f,YAAa,eACbC,iBAAkB,sBAClBC,2BAA4B,kCAC5BsoC,+BAAgC,oCAChCroC,sBAAuB,8BACvBn6b,KAAM,OACNo6b,YAAa,uBACbh+hB,SAAU,OACVD,UAAW,WACXk+hB,cAAe,YACfpvd,QAAS,aACTqvd,wBAAyB,iBACzBC,mBAAoB,yBACpBC,eAAgB,wBAChBC,YAAa,sBACbC,eAAgB,uBAChBC,wBAAyB,oCACzBC,eAAgB,wBAChBC,eAAgB,uBAChBC,iBAAkB,0BAClBC,gBAAiB,2BACjBC,WAAY,uBACZynC,oBAAqB,4BACrB7ojB,MAAO,UACPqhhB,cAAe,sBACfC,iBAAkB,yBAClB38Q,MAAO,SACP48Q,YAAa,iBACbC,cAAe,uBACfC,eAAgB,oBAChB3uhB,QAAS,UACT4uhB,SAAU,WACVC,yBAA0B,qBAC1BC,iBAAkB,qBAClBC,aAAc,UACdC,YAAa,qBACbhmE,IAAK,KACLC,GAAI,MACJh7P,KAAM,UACNghU,eAAgB,wBAChBpxjB,KAAM,QACN6xE,OAAQ,SACRxoD,cAAe,iBACf8ukB,qBAAsB,6BACtB79Y,OAAQ,YACR89Y,sBAAuB,mDACvBC,sBAAuB,kCACvBC,uBAAwB,8BACxBC,yBAA0B,iCAE5B,mBAAoB,CAClBlnC,iBAAkB,kCAClBC,YAAa,gCAEf,aAAc,CACZC,sBAAuB,uBACvB,qCACE,gDACF,8CACE,0CAEJpkN,OAAQ,CACNmkN,YAAa,uBACbE,OAAQ,gEACRC,OAAQ,sDACR,YAAa,UACb,UAAW,aACX,kBAAmB,sBACnB,UAAW,qBACX,yBAA0B,8BAC1B,6BAA8B,4CAC9B,4BAA6B,wCAC7B,wBAAyB,wCACzB,mBAAoB,6BACpB,qBAAsB,iBACtB,sBAAuB,oBACvB,oBAAqB,oCACrBC,sBAAuB,kCACvBC,yBAA0B,iCAC1BC,kBAAmB,mCACnBC,qBAAsB,4BACtBC,aAAc,+BACdC,uBAAwB,8CACxBC,mCACE,uCACFC,oBAAqB,2CACrBC,oBACE,gFACFsmC,cAAe,gCAEjBrmC,IAAK,CACHC,SAAU,UACVC,SAAU,WACVC,SAAU,QACVC,SAAU,QACVC,SAAU,MACVC,SAAU,OACVC,SAAU,OACVC,SAAU,WACVC,SAAU,YACVC,SAAU,UACVC,SAAU,WACVC,SAAU,WACVC,kBAAmB,6BACnB3lM,cAAe,yBACf4lM,eAAgB,8BAChBC,iBAAkB,sBAClBC,iBAAkB,iCAClBC,WAAY,oBACZC,oBAAqB,6BACrBC,UAAW,gDACXC,gBAAiB,uBACjBC,iBAAkB,qBAClBC,aAAc,iBACdC,eAAgB,0CAChBC,8BACE,gDACFC,mBAAoB,iCACpBC,gBAAiB,wDACjBC,kBAAmB,0CACnBC,uBACE,sEACFC,qBAAsB,oDACtBC,gBAAiB,kCACjBC,oBAAqB,8CACrBC,WAAY,gBACZC,iBAAkB,4BAClBC,oBAAqB,iCACrBokC,oBAAqB,kCACrBC,uBAAwB,uCACxBC,oBACE,yHAEJ,gBAAiB,CACfrkC,kBAAmB,kCACnBC,iBAAkB,mCAClBC,oBAAqB,uBACrBC,SAAU,cACVC,QAAS,UACTC,aAAc,gBACdC,aAAc,mBACdC,WAAY,gBACZC,oBAAqB,6BACrBC,wBAAyB,IACzBC,0BAA2B,IAC3BC,2BAA4B,IAC5BC,WAAY,sBACZC,gBACE,0GACFr0f,OAAQ,cACRs0f,QAAS,WACTC,YAAa,kBACbC,SAAU,UACVC,cAAe,cACfC,eAAgB,aAChBrsiB,cAAe,mBACfge,OAAQ,WACRsuhB,WAAY,eACZC,mBAAoB,kCACpBC,eAAgB,qBAChBC,sBAAuB,6BAG3B,kBAAmB,CACjBC,aAAc,2BACd53C,IAAK,CACHp+V,QAAS,qBACTi2Y,SAAU,mBAEZC,KAAM,CACJj+O,MAAO,yBACPk+O,UAAW,sBACXC,KAAM,CACJ32iB,KAAM,2BACN42iB,cAAe,mBACfttd,OAAQ,SACRrpF,SAAU,aACV42iB,MAAO,wBAETC,IAAK,CACHvkf,OAAQ,eACRq1V,OAAQ,WACRt+T,OAAQ,cAGZipZ,OAAQ,CACNwkE,aAAc,CACZv+O,MAAO,0CACPv4T,SAAU,aACV62iB,IAAK,CACH97W,OAAQ,YACR4sN,OAAQ,cAIdzvX,MAAO,CACLl4B,SAAU,mCACV23C,QAAS,uCACTY,QAAS,8CAGb,SAAU,CACRojD,OAAQ,aACRwmK,MAAO,KACPk3U,mBAAoB,kBACpBC,uBAAwB,mCACxBC,cAAe,uBACfC,YAAa,qBACbC,sBAAuB,iCACvBC,uBAAwB,8BACxBC,sBAAuB,uBACvBC,mCACE,gDACFC,sCACE,qDACFC,iCACE,+CACFC,yBAA0B,yCAC1BC,sBAAuB,qCAEzBC,aAAc,CACZC,WAAY,CACV19P,KAAM,CACJuO,MAAO,+BACP0gD,KAAM,cACN0uM,SAAU,2BACVC,YAAa,2BAEf,mBAAoB,CAClBrvP,MAAO,qCACP6/G,KAAM,UACNr/G,OAAQ,YACRq0G,KAAM,YACNztZ,SAAU,aACVkna,iBAAkB,+BAGtB,iBAAkB,CAChBtuH,MAAO,cACPm5N,WAAY,8BACZm2B,QAAS,cACTrjD,QAAS,qBACTsjD,eAAgB,wDAGpBC,qBAAsB,CACpBp8B,UAAW,MAEb,oBAAqB,CACnBpzN,MAAO,gDAET,0BAA2B,CACzBA,MAAO,wCACPyvP,gBAAiB,gCACjBvyI,QAAS,aACT5I,SAAU,eACVmH,IAAK,WACLmE,KAAM,QACNhE,aAAc,iCACd8zI,MAAO,QACP9oI,MAAO,eACP9ra,KAAM,MACN04c,OAAQ,mBACRrmd,MAAO,CACLwijB,YAAa,wDACbC,iBAAkB,yCAClBC,YAAa,gCACbpP,aAAc,qCACdqP,eAAgB,8CAChBn8F,kBAAmB,2BACnBo8F,aAAc,8CAGlBnhG,MAAO,CACLohG,0BACE,8DCr7SN5kmB,EAAQ,OACRA,EAAQ,OAGR6kmB,GAAAA,IAAY3yP,IAAkBxkU,KAC5B,CACEiwT,YAAa,KACbqE,kBAAmB,KACnBoQ,MAAO,CACLJ,aAAa,GAEftY,UAAW,CACTh1O,GAAI,CACF0vP,YAAa,IACR1vP,GACHqkW,KAAM,CACJp4E,aAAc,eACdm0N,KAAM,YACNzgf,WAAY,aACZiuK,SAAU,WACV+qK,YAAa,cACb0nK,WAAY,aACZ1zN,OAAQ,SACR7wT,QAAS,UACT4xT,cAAe,gBACf5iR,UAAW,aAEbvnH,MAAO,CACLm6U,MAAO,SACPh3S,MAAO,gBACPvhB,SAAU,WACVqhI,QAAS,SACT85c,YAAa,sCACb/1jB,MAAM,mFACNg2jB,UAAU,0BAEZz8I,KAAM,CACJ08I,KAAM,uBACNC,MAAO,QACPL,KAAM,iBACNM,gBAAiB,+BACjBC,IAAK,MACL10N,aAAc,wBACdxrC,KAAM,QACNmgQ,UAAW,0BACX13hB,IAAK,MACLzhC,KAAM,aAERklW,OAAQ,CACNk0N,UAAW,YACXC,SAAU,kBACV53hB,IAAK,MACL63hB,WAAY,mBACZC,YAAa,0BACbC,gBAAiB,kBACjBC,YAAa,YACblgB,QAAS,eACTmgB,2BACE,yEACFC,6BACE,6FACFC,cACE,sGACFC,YAAa,UACbC,cAAe,sBACfC,UACE,oEACFthZ,OAAQ,0BACRuhZ,iCAAkC,0CAEpCn3E,UAAW,CACTxlD,MAAO,YACPx/W,MAAO,aACPs/W,QAAS,gCACT88H,OAAQ,yBACRC,wBACE,oIACFC,UAAW,aACXz/e,QAAS,eACT0/e,MAAO,UACPp/e,UAAW,mBACXK,QAAS,iBACTG,MAAO,aACP6+e,cAAe,gBACfC,MAAO,sBACP36hB,MAAO,YACP46hB,cAAe,WACfC,QAAS,kBAEXP,OAAQ,CACNQ,mBAAoB,mBACpBC,qBACE,+DACFb,YAAa,UACbc,WAAY,UAEdhC,KAAM,CACJpxN,aAAc,eACd/C,aAAc,eACdy1N,OAAQ,gBACRtse,SAAU,WACVq5Q,UAAW,YACXmgB,UAAW,gBACX1lV,IAAK,OAEP4hD,UAAW,CACT03a,OAAQ,SAER3ne,OAAO,SACPizU,QAAS,UACThyT,QAAS,UACT4xT,cAAc,iBAEhB9/G,SAAU,CACR6jD,QAAQ,UACRp9T,KAAK,UACLgulB,SAAS,mBACTC,UAAU,aACV98lB,SAAU,qBACV5B,OAAQ,WACRm8G,GAAI,cACJC,GAAI,UACJC,GAAI,aACJsif,QAAS,WACTC,MAAO,cACPC,SAAU,WACVt9kB,SAAU,WACVu9kB,OAAQ,SACRx7N,IAAK,eACLrQ,SAAU,WACV8rO,iBACE,mUAEJC,mBAAoB,2BACpBhmf,SAAUimf,GAAAA,QAA6B7if,GACvC8if,YAAa9if,GAAG,YAAYmhC,aAC5B4hd,QAAS,CACPh9e,GAAI,KACJitL,MAAO,YAIbjzL,GAAI,CACF2vP,YAAa,IACR3vP,GACHskW,KAAM,CACJp4E,aAAc,SACdm0N,KAAM,YACNzgf,WAAY,iBACZiuK,SAAU,cACV+qK,YAAa,cACb0nK,WAAY,gBACZvkhB,QAAS,eACT4xT,cAAe,gBACf5iR,UAAW,YACX6hR,OAAQ,eACRm3E,KAAM,WAERvgd,MAAO,CACLm6U,MAAO,iBACPh3S,MAAO,gBACPvhB,SAAU,eACVqhI,QAAS,eACT85c,YACE,oEAEF/1jB,MAAM,2HACNu2Z,cAAc,wBACdy/J,UAAU,wBAEZz8I,KAAM,CACJ08I,KAAM,wBACNC,MAAO,UACPL,KAAM,gBACNM,gBAAiB,8BACjBC,IAAK,SACL10N,aAAc,wBACdxrC,KAAM,UACNmgQ,UAAW,8BACX13hB,IAAK,UACLzhC,KAAM,iBAERklW,OAAQ,CACNk0N,UAAW,eACXC,SAAU,cACV53hB,IAAK,UACL63hB,WAAY,8BACZC,YAAa,iCACbC,gBAAiB,kCACjBC,YAAa,gBACblgB,QAAS,kBACTmgB,2BACE,oFACFC,6BACE,iHACFC,cACE,6KACFC,YAAa,YACbC,cAAe,kCACfC,UACE,wFACFthZ,OAAQ,yBACRuhZ,iCAAkC,iDAEpCn3E,UAAW,CACTxlD,MAAO,aACPx/W,MAAO,2BACPs/W,QAAS,wCACT88H,OAAQ,0BACRC,wBACE,0IACFC,UAAW,eACXz/e,QAAS,WACT0/e,MAAO,SACPp/e,UAAW,kBACXK,QAAS,UACTG,MAAO,aACP6+e,cAAe,eACfC,MAAO,yBACP36hB,MAAO,WACP46hB,cAAe,eACfC,QAAS,sBAEXP,OAAQ,CACNQ,mBAAoB,mBACpBC,qBACE,+DACFb,YAAa,YACbc,WAAY,WAEdhC,KAAM,CACJpxN,aAAc,kBACd/C,aAAc,cACdy1N,OAAQ,cACRtse,SAAU,WACVq5Q,UAAW,cACXmgB,UAAW,gBACX1lV,IAAK,WAEP4hD,UAAW,CACT03a,OAAQ,UACR3ne,OAAO,sBACP6yU,cAAe,gBACfI,QAAS,WACThyT,QAAS,gBAEX8xM,SAAU,CACR6jD,QAAQ,WACRp9T,KAAK,YACLgulB,SAAS,gBACTC,UAAU,kBACV98lB,SAAU,wBACV5B,OAAQ,iBACRm8G,GAAI,cACJC,GAAI,UACJC,GAAI,aACJsif,QAAS,oBACTC,MAAO,oBACPC,SAAU,iBACVt9kB,SAAU,eACVu9kB,OAAQ,WACRx7N,IAAK,2BACLrQ,SAAU,oBACV8rO,iBAAkB,0bAClBC,mBAAoB,2CAEtBhmf,SAAUimf,GAAAA,QAA6B9if,GACvC+if,YAAa/if,GAAG,YAAYohC,aAC5B4hd,QAAS,CACPh9e,GAAI,KACJitL,MAAO,YAIb/yL,GAAI,CACFyvP,YAAa,IACRzvP,GACHokW,KAAM,CACJp4E,aAAc,YACdm0N,KAAM,WACNzgf,WAAY,YACZiuK,SAAU,eACV+qK,YAAa,aACb0nK,WAAY,YACZvkhB,QAAS,aACT4xT,cAAe,gBACf5iR,UAAW,aACX6hR,OAAQ,UAEVppY,MAAO,CACLm6U,MAAO,WACPh3S,MAAO,cACPvhB,SAAU,aACVqhI,QAAS,WACT85c,YAAa,sDACbC,UAAU,0BAEZz8I,KAAM,CACJ08I,KAAM,oBACNC,MAAO,QACPL,KAAM,cACNM,gBAAiB,0BACjBC,IAAK,OACLz3hB,IAAK,QACLu3R,KAAM,UACNwrC,aAAc,YACd20N,UAAW,8BACXn5jB,KAAM,eAERklW,OAAQ,CACNk0N,UAAW,UACXC,SAAU,aACV53hB,IAAK,QACL63hB,WAAY,wBACZC,YAAa,yBACbC,gBAAiB,oBACjBC,YAAa,eACblgB,QAAS,cACTmgB,2BACE,yEACFC,6BACE,iGACFC,cACE,qHACFC,YAAa,aACbC,cAAe,mBACfC,UACE,4DACFthZ,OAAQ,0BACRuhZ,iCAAkC,mCAEpCn3E,UAAW,CACTxlD,MAAO,YACPx/W,MAAO,oBACPs/W,QAAS,mCACT88H,OAAQ,0BACRC,wBACE,2HACFC,UAAW,mBACXz/e,QAAS,iBACT0/e,MAAO,eACPp/e,UAAW,eACXK,QAAS,cACTG,MAAO,qBACP6+e,cAAe,sBACfC,MAAO,4BACP36hB,MAAO,eACP46hB,cAAe,cACfC,QAAS,yBAEXP,OAAQ,CACNQ,mBAAoB,4BACpBC,qBACE,uFACFb,YAAa,aACbc,WAAY,aAEdhC,KAAM,CACJpxN,aAAc,cACd/C,aAAc,YACdy1N,OAAQ,gBACRtse,SAAU,YACVq5Q,UAAW,gBACXmgB,UAAW,eACX1lV,IAAK,aAEP4hD,UAAW,CACT03a,OAAQ,UACR3ne,OAAO,YACP6yU,cAAe,gBACfI,QAAS,YACThyT,QAAS,cAEX8xM,SAAU,CAGR6jD,QAAQ,YACRp9T,KAAK,aACLgulB,SAAS,sBACTC,UAAU,kBACV98lB,SAAU,gBACV5B,OAAQ,YACRm8G,GAAI,cACJC,GAAI,UACJC,GAAI,aACJsif,QAAS,YACTC,MAAO,aACPC,SAAU,cACVt9kB,SAAU,aACVu9kB,OAAQ,WACRx7N,IAAK,sBACLrQ,SAAU,aACV8rO,iBACE,kYAEJC,mBAAoB,8BACpBhmf,SAAUimf,GAAAA,QAA6B5if,GACvC6if,YAAa7if,GAAG,YAAYkhC,aAC5B4hd,QAAS,CACPh9e,GAAI,KACJitL,MAAO,YAIbijD,cAAe,CAAC,KAGpB,SC1ZF,MAcA,GAdqBqrH,GAAOC,GAAG;;;;;;;uBAORpJ,GAAWx0E;;;eAGnBq0E,GAAK3mU;;ECTd2xd,GAAcC,EAAS;;;;;;;;;EAUvBC,GAAeD,EAAS;;;;;;;;;EAUxBE,GAAuB7hJ,GAAOC,GAA2B;;sBAEzCjJ,GAAMuB;yBACFxiZ,GACtBA,EAAM+riB,UAAY9qJ,GAAME,MAAQF,GAAMuB;;oBAEtBxB,GAAOgrJ;yBACF/qJ,GAAMgrJ;gBACflrJ,GAAUF;;;uBAGHC,GAAWx0E;;;;;iBAKjBu/N,MAAgB7qJ,GAAOgrJ;;;mBAGrBL,MAAe3qJ,GAAOgrJ;;;uBAGlBlrJ,GAAWx0E;;;;;EAsBlC,GAfoBj3U,IAMb,IANc,SACnB4pF,EAAQ,UACRolE,GAIDhvJ,EACC,MAAM,WAAE8qZ,GAAep7F,KACvB,OACEuJ,EAAAA,GAAAA,KAACw9O,GAAoB,CAACC,YAAa5rJ,EAAWlhU,SAC3CA,GACoB,ECjE3B,IAAI,GAAO,GACX,SAAS,KAAa,OAAO,GAAW75I,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,uhBACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2IACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WAEpB,CACA,MAAM,GAA0B,aAAiB,IAClC,IClCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWhnmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,UACA,gBAAoB,OAAQ,CAC3C14jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,UACA,gBAAoB,OAAQ,CAC3C14jB,EAAG,skBACHy4jB,OAAQ,UACRj+S,YAAa,UACE,gBAAoB,OAAQ,CAC3Cx6Q,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,YACT,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH3/S,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IChDf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAiBimD,EAAMy4T,GAC9B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,8LACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,kCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,4OACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICtDf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,mhBACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,UACA,gBAAoB,OAAQ,CAC3C14jB,EAAG,mNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICzCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAgBimD,EAAMy4T,GAC7B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,qgFACHy4jB,OAAQ,UACRj+S,YAAa,WAEjB,CACA,MAAM,GAA0B,aAAiB,IAClC,IC1Bf,IAAI,GAAO,GAAQ,GACnB,SAAS,KAAa,OAAO,GAAW7oT,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAiBimD,EAAMy4T,GAC9B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,4bACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,8OACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,g8BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WAEpB,CACA,MAAM,GAA0B,aAAiB,IAClC,ICxCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWhnmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAmBimD,EAAMy4T,GAChC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mIACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,kCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,+BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,+BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC5Df,IAAI,GAAO,GAAQ,GAAQ,GAC3B,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,iHACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,oNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,yNACHy4jB,OAAQ,UACRj+S,YAAa,WACV,KAAW,GAAsB,gBAAoB,OAAQ,CAChEx6Q,EAAG,yHACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,WAEnB,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Cf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAW/mmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAoBimD,EAAMy4T,GACjC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,4nBACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAsBimD,EAAMy4T,GACnC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,ooBACH+xK,KAAM,YACS,gBAAoB,OAAQ,CAC3C/xK,EAAG,4fACH+xK,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICpCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAyBimD,EAAMy4T,GACtC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,o9BACH+xK,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAoBimD,EAAMy4T,GACjC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,2wCACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAwBimD,EAAMy4T,GACrC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,yrDACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAyBimD,EAAMy4T,GACtC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,6xDACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAA2BimD,EAAMy4T,GACxC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,q8BACH+xK,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAoBimD,EAAMy4T,GACjC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,y4CACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAO,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GACjI,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAmB,gBAAoB,IAAK,CACtDl5B,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAU,GAAqB,gBAAoB,OAAQ,CAC5Dz6U,EAAG,kQACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,kQACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,kQACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAW,GAAsB,gBAAoB,OAAQ,CAC9Dz6U,EAAG,mRACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,mRACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,mRACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAW,GAAsB,gBAAoB,OAAQ,CAC9Dz6U,EAAG,8QACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,6QACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,6QACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAY,GAAuB,gBAAoB,OAAQ,CAChEz6U,EAAG,mRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,mRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,mRACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAY,GAAuB,gBAAoB,OAAQ,CAChEz6U,EAAG,8QACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,4QACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,4QACH+xK,KAAM,eACD,KAAY,GAAuB,gBAAoB,SAAU,CACtE2oK,GAAI,QACJC,GAAI,QACJvgU,EAAG,QACH23J,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICtGf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,EACP2wB,OAAQ,GACRi4H,QAAS,WACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,oKACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAO,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GACjI,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAaimD,EAAMy4T,GAC1B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAmB,gBAAoB,IAAK,CACtDl5B,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAU,GAAqB,gBAAoB,OAAQ,CAC5Dz6U,EAAG,oQACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,oQACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,oQACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAW,GAAsB,gBAAoB,OAAQ,CAC9Dz6U,EAAG,6QACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,8QACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,8QACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAW,GAAsB,gBAAoB,OAAQ,CAC9Dz6U,EAAG,iRACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,+QACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,+QACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAY,GAAuB,gBAAoB,OAAQ,CAChEz6U,EAAG,kRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,kRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,kRACH+xK,KAAM,eACY,gBAAoB,IAAK,CAC3C2nG,QAAS,IACK,gBAAoB,IAAK,CACvCt5E,MAAO,CACLq6I,aAAc,aAEf,KAAY,GAAuB,gBAAoB,OAAQ,CAChEz6U,EAAG,gRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,gRACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,gRACH+xK,KAAM,eACD,KAAY,GAAuB,gBAAoB,SAAU,CACtE2oK,GAAI,QACJC,GAAI,OACJvgU,EAAG,QACH23J,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICtGf,IAAI,GAAO,GAAQ,GACnB,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAQimD,EAAMy4T,GACrB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,4BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,4BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,4BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WAEpB,CACA,MAAM,GAA0B,aAAiB,IAClC,ICxCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWhnmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,0BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,0BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,4BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,iNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,kNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC9Ef,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,yNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mHACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,0BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IChDf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,+iBACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,ixCACH+xK,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,uoBACH+xK,KAAM,YACS,gBAAoB,OAAQ,CAC3C/xK,EAAG,qgBACH+xK,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICpCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,2tBACHy4jB,OAAQ,UACRj+S,YAAa,QACbm+S,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,s3BACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,8kBACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2iBACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC1Cf,IAAI,GAAO,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GACnE,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAkBimD,EAAMy4T,GAC/B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,qaACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,sBACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,qBACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,gBACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,sBACHy4jB,OAAQ,UACRj+S,YAAa,IACbk+S,cAAe,QACfC,eAAgB,WAEpB,CACA,MAAM,GAA0B,aAAiB,IAClC,IC5Ef,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWhnmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAoBimD,EAAMy4T,GACjC,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,opEACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAaimD,EAAMy4T,GAC1B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,kXACHy4jB,OAAQ,QACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,gOACHy4jB,OAAQ,QACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,QACNynD,UAAW,oCAEf,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Cf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAW7nQ,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAgBimD,EAAMy4T,GAC7B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,kuBACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICjCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAgBimD,EAAMy4T,GAC7B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,4iBACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAgBimD,EAAMy4T,GAC7B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,ywCACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,0NACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC1Cf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,msDACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,+sBACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAO,GAAQ,GAAQ,GAC3B,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,wNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,0FACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,gBAAoB,OAAQ,CAChE34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,WAEpB,CACA,MAAM,GAA0B,aAAiB,IAClC,IC9Cf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWhnmB,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,mwDACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,oqDACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAQimD,EAAMy4T,GACrB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,6gFACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,QAClC,sjBC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAaimD,EAAMy4T,GAC1B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,m9BACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,m9BACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,mgBACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,46CACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAaimD,EAAMy4T,GAC1B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,48BACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,0iBACHy4jB,OAAQ,UACRj+S,YAAa,QACbm+S,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,+dACHy4jB,OAAQ,UACRj+S,YAAa,QACbm+S,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICxCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,ukEACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,wrBACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAOimD,EAAMy4T,GACpB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,q9CACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAQimD,EAAMy4T,GACrB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,+0BACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAYimD,EAAMy4T,GACzB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,k3CACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,iDACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mDACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mEACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mEACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,0BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,2BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,gNACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,6DACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IClHf,IAAI,GAAO,GACX,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,gjCACH+xK,KAAM,WACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE8mZ,SAAU,UACVC,SAAU,UACV94jB,EAAG,0kCACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IChCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAOimD,EAAMy4T,GACpB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,wxDACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,0BACI,gBAAoB,OAAQ,CAC1C54jB,EAAG,oCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,qIACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,kCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,mCACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,UACD,gBAAoB,OAAQ,CAC3C34jB,EAAG,6BACHy4jB,OAAQ,UACRj+S,YAAa,QACbk+S,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH99lB,GAAI,oBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC5Df,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAOimD,EAAMy4T,GACpB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,+9FACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,+uHACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,2/EACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,goDACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAWimD,EAAMy4T,GACxB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,u4CACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,2tDACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAI,GACR,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAASimD,EAAMy4T,GACtB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEgmR,SAAU,yBACI,gBAAoB,OAAQ,CAC1CC,SAAU,UACVC,SAAU,UACV94jB,EAAG,67EACH+xK,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHl3M,GAAI,mBACU,gBAAoB,OAAQ,CAC1C82N,MAAO,GACP2wB,OAAQ,GACRvwC,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICnCf,IAAI,GACJ,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAUimD,EAAMy4T,GACvB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,GACP2wB,OAAQ,GACRi4H,QAAS,YACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EimR,SAAU,UACVC,SAAU,UACV94jB,EAAG,+7BACH+xK,KAAM,WAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC3Bf,IAAI,GAAO,GAAQ,GAAQ,GAC3B,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAiBimD,EAAMy4T,GAC9B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,IACP2wB,OAAQ,IACRi4H,QAAS,cACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,sJACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,qTACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,ggLACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,275BACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IClCf,IAAI,GAAO,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GAAS,GAC5J,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAeimD,EAAMy4T,GAC5B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,IACP2wB,OAAQ,IACRi4H,QAAS,cACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,+2CACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,qgDACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,6XACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,4vDACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,wiBACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,wcACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,8lBACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,kZACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,mNACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,k5DACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,+SACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,6VACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,iTACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,mTACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,+MACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,kTACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,4qKACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE/xK,EAAG,2wBACH+xK,KAAM,aACH,KAAY,GAAuB,gBAAoB,OAAQ,CAClE8mZ,SAAU,UACVC,SAAU,UACV94jB,EAAG,oyDACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,ICjFf,IAAI,GAAO,GACX,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAcimD,EAAMy4T,GAC3B,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,IACP2wB,OAAQ,IACRi4H,QAAS,cACTxoK,KAAM,OACNyoK,MAAO,6BACPv7W,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E5yS,EAAG,w5/BACH+xK,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChE/xK,EAAG,wqaACH+xK,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB,IAClC,IC5Bf,IAAI,GAAO,GACX,SAAS,KAAa,OAAO,GAAWpgN,OAAO8sC,OAAS9sC,OAAO8sC,OAAOq7C,OAAS,SAAUt/D,GAAK,IAAK,IAAInoB,EAAI,EAAGA,EAAIsJ,UAAUC,OAAQvJ,IAAK,CAAE,IAAIuiF,EAAIj5E,UAAUtJ,GAAI,IAAK,IAAI+nD,KAAKw6B,GAAG,CAAG,GAAEqkC,eAAelU,KAAKnwB,EAAGx6B,KAAO5/B,EAAE4/B,GAAKw6B,EAAEx6B,GAAK,CAAE,OAAO5/B,CAAG,EAAG,GAASy+B,MAAM,KAAMt9C,UAAY,CAEnR,SAAS,GAAQimD,EAAMy4T,GACrB,IAAI,MACFznC,EAAK,QACL0nC,KACG/tT,GACD3K,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD+vK,MAAO,IACP2wB,OAAQ,IACRi4H,QAAS,cACTxoK,KAAM,OACNyoK,MAAO,6BACPu+O,WAAY,+BACZ95lB,IAAKo7W,EACL,kBAAmBC,GAClB/tT,GAAQqmR,EAAqB,gBAAoB,QAAS,CAC3D/3U,GAAIy/W,GACH1nC,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3EjhH,MAAO,IACP2wB,OAAQ,IACRvwC,KAAM,oBACH,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,UAAW,CAChHl3M,GAAI,WACJm+lB,oBAAqB,oBACrBrnY,MAAO,EACP2wB,OAAQ,GACM,gBAAoB,MAAO,CACzCkxD,UAAW,qBACXh6C,UAAW,kCACK,gBAAoB,QAAS,CAC7C3+P,GAAI,oBACJ82N,MAAO,IACP2wB,OAAQ,IACRkxD,UAAW,i+SAEf,CACA,MAAM,GAA0B,aAAiB,IC6J3CylT,ID5JS,IC4Je,CAC5BhgP,WAAY,CACV4oB,OAAM,GACN29I,UAAS,GACT3vZ,KAAI,GACJizJ,SAAQ,GACRo2U,UAAS,GACTlgJ,KAAI,GACJnrB,YAAW,GACXynK,KAAI,GAEJ6D,cAAa,GACbC,gBAAe,GACfC,mBAAkB,GAClBC,cAAa,GACbC,kBAAiB,GACjBC,mBAAkB,GAClBC,qBAAoB,GACpBC,cAAa,GAEb/mmB,OAAM,GACNgnmB,UAAS,GACTC,OAAM,GACNC,KAAI,GACJC,WAAU,GACVC,QAAO,GACPjhmB,OACF,IACAkhmB,MAAO,CACLC,OAAM,GACNC,SAAQ,GACRC,YAAW,GACXC,YAAW,GACXC,UAAS,GACTC,SAAQ,GACRC,gBAAe,GACfC,kBAAiB,GACjB5vf,KAAI,GACJm3I,OAAM,GACN5zK,KAAI,GACJsshB,cAAa,GACbC,WAAU,GAEVC,cAAa,GACbC,cAAa,GACbC,cAAa,GAEbC,KAAI,GACJ79jB,QAAO,GACPwkF,KAAI,GACJrpB,QACF,IACAyc,WAAY,CACVkmf,WAAU,GACVC,QAAO,GACPC,QAAO,GACPC,SAAQ,GACRC,WAAU,GACVC,QAAO,GACPC,UACF,IACArD,YAAa,CACXsD,MAAK,GACL7lO,IAAG,GACH8lO,MAAK,GACLz7e,SAAQ,GACR07e,MAAK,GACLC,MAAK,GACLC,IAAG,GACHC,QAAO,GACPC,IAAG,GACHC,OAAM,GACNC,QAAO,GACPC,MAAK,GACLC,QAAO,GACPC,MAAK,GACLC,MAAK,GACL12C,OACF,IAEA22C,cAAe,CACbC,eAAc,GACdC,YAAW,GACXC,WAAU,GACVC,OACF,MAqBF,GAjBgC,CAC9BtjP,WAAY,CACVsjP,OAAQ/rmB,EAAQ,OAChBgsmB,QAAShsmB,EAAQ,QAEnBwpmB,MAAO,CACL5hgB,QACF,IAEA0wL,MAAO,CACL35K,QAAS3+G,EAAQ,OACjBqxY,OAAQrxY,EAAQ,OAChBqkH,WAAYrkH,EAAQ,OACpB85H,SAAU95H,EAAQ,SC/RhBismB,GAAgBjmJ,GAAOr7J,GAAG;;EAG1BuhT,GAAelmJ,GAAOC,GAI1B;QACOlqZ,GACPA,EAAMmqZ,MACF,GAAGxJ,GAAKyvJ,QACRpwiB,EAAMqwiB,aACN,OACA,GAAG1vJ,GAAKhsZ,EAAIgsZ,GAAK1mU;SACbj6E,GACRA,EAAMmqZ,MACF,GAAGxJ,GAAKyvJ,QACRpwiB,EAAMqwiB,aACQ,EAAX1vJ,GAAKyvJ,IAAR,KACA,GAAGzvJ,GAAKhsZ,EAAIgsZ,GAAK1mU;;;;;QAKdj6E,GAAWA,EAAMqwiB,aAAe,YAAS7pmB;SACxCw5D,GAAWA,EAAMqwiB,aAAe,YAAS7pmB;WACvCw5D,GAAWA,EAAMk+P,MAAQl+P,EAAMk+P,WAAQ13T;;;;EAuBnD,GAba6uD,IAAmD,IAAlD,MAAEi7iB,EAAK,MAAEpyS,EAAK,MAAEisJ,EAAK,aAAEkmJ,GAAqBh7iB,EACxD,GAAqB,kBAAVi7iB,EACT,OAAOhiP,EAAAA,GAAAA,KAAC4hP,GAAa,CAACx1R,IAAK41R,IACtB,CACL,MAAMC,EAAQD,EACd,OACEhiP,EAAAA,GAAAA,KAAC6hP,GAAY,CAACjyS,MAAOA,EAAOisJ,MAAOA,EAAOkmJ,aAAcA,EAAapxd,UACnEqvO,EAAAA,GAAAA,KAACiiP,EAAK,KAGZ,GCzCIC,GAAeC,EAAgB;;;;;;;;;;;;;;WAc1BxvJ,GAAMI;;;;;IAKbhsZ,IAAA,IAAC,WAAEq7iB,EAAU,MAAE5gZ,EAAK,QAAE6gZ,EAAO,UAAEC,GAAWv7iB,EAAA,MAC3B,YAAfq7iB,IACCC,GACD7gZ,GACA2gZ,EAAG;yBACkBxvJ,GAAMuB;gBACfvB,GAAMI;;;;;0BAKIJ,GAAM4vJ;;KAE3B;;IAEDxyiB,IAAA,IAAC,UAAEuyiB,GAAWvyiB,EAAA,OACduyiB,GACAH,EAAG;;iBAEU9vJ,GAAKE;KACjB;;IAEDriZ,IAAA,IAAC,KAAEiuZ,GAAMjuZ,EAAA,OACTiuZ,GACAgkJ,EAAG;wBACiBxvJ,GAAMuB;;KAEzB;;IAED9jZ,IAAA,IAAC,QAAEiyiB,GAASjyiB,EAAA,OACZiyiB,GACAF,EAAG;0BACmBxvJ,GAAMyB;;;;;;4BAMJzB,GAAMI;;KAE7B;;;;IAIDtiZ,IAAA,IAAC,MAAE+wJ,GAAO/wJ,EAAA,OACV+wJ,GACA2gZ,EAAG;;;;0BAImBxvJ,GAAM4vJ;eACjB5vJ,GAAMO;KAChB;;MAEC7tY,IAAA,IAAC,OAAEm9hB,GAAQn9hB,EAAA,OACbm9hB,GACAL,EAAG;;wBAEiBxvJ,GAAM4vJ;;;;;4BAKF5vJ,GAAMyB;;KAE7B;;;;MAIC1pY,IAAA,IAAC,WAAE03hB,GAAY13hB,EAAA,MACF,gBAAf03hB,GACAD,EAAG;;KAEF;EAeCM,GAAe9mJ,GAAOpwJ,MAAmB;IAC3C22S;EA+BJ,GA5BsCt3hB,IAS/B,IATgC,WACrCw3hB,EAAa,UAAS,MACtB5gZ,EAAK,MACLu2H,EAAK,KACL2qR,EAAI,QACJL,EAAO,QACPM,EAAO,OACPH,KACG9wiB,GACJkZ,EACC,OACEq1S,EAAAA,GAAAA,MAACwiP,GAAY,CACXJ,QAASA,EACT7gZ,MAAOA,EACPghZ,OAAQA,EACRJ,WAAYA,KACR1wiB,EACJi4Q,QAAUnyU,IACJmrmB,GAASA,GAAS,EACtBhyd,SAAA,CAED+xd,IACkB,kBAATA,GAAoB1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKs2R,EAAMxiP,IAAKnoC,IAAY2qR,GAC9D3qR,IACY,EClJb6qR,GAAgBjnJ,GAAOC,GAAU;aAC1B70Z,IAAA,IAAC,OAAE87iB,GAAQ97iB,EAAA,OAAM87iB,EAAS,EAAI,CAAC;eAC7B9yiB,IAAA,IAAC,OAAE8yiB,GAAQ9yiB,EAAA,OAAM8yiB,EAAS,sBAAwB,EAAE;;WAExDxwJ,GAAKyvJ;YACJzvJ,GAAKyvJ;;;aAGJzvJ,GAAKyvJ;cACJzvJ,GAAKyvJ;;;;;;;;;;;;;;;;;;;EAyBZ,SAASgB,KACd,MAAOD,EAAQE,IAAax/R,EAAAA,EAAAA,WAAS,GAMrC,OAJAP,EAAAA,EAAAA,YAAU,KACR+/R,GAAU,EAAK,GACd,KAGD/iP,EAAAA,GAAAA,KAAC4iP,GAAa,CAACC,OAAQA,EAAOlyd,UAC5BqvO,EAAAA,GAAAA,KAACo+O,GAAMhgP,WAAW2gP,OAAM,KAG9B,CCzCA,MAAMiE,GAAqBrnJ,GAAOC,GAAU;;IAExC70Z,IAAA,IAAC,WAAEk8iB,GAAYl8iB,EAAA,OACfo7iB,EAAG;wBACiBc,EAAa,MAAQ;yBACpBA,EAAa,eAAiB;KAClD;SACI5wJ,GAAK1mU;YACF0mU,GAAKhsZ;EAWjB,GARoB0J,IAAiD,IAAhD,UAAEivY,EAAS,SAAEruT,EAAQ,WAAEsyd,GAAmBlziB,EAC7D,OACEiwT,EAAAA,GAAAA,KAACgjP,GAAkB,CAACC,WAAYA,EAAWtyd,SACxCquT,GAAYh/E,EAAAA,GAAAA,KAAC8iP,GAAO,IAAMnyd,GACR,ECJnBuyd,IAXS5F,EAAS;;;;;;;EAWD3hJ,GAAOC,GAAe;;;;;;;;;;oBAUxBlqZ,GAAWA,EAAMm3C,OAAS,OAAS;GAGlDs6f,GAAkBxnJ,GAAOC,GAA0B;;;;;;aAM3ClqZ,GAAWA,EAAM0xiB,QAAU,EAAI;sBACvBzwJ,GAAM0wJ;;;6BAGC3wJ,GAAO4wJ;EAG9BC,GAAQ5nJ,GAAOC,GAA0B;;;;;;;;YAQnCvJ,GAAK3mU;qBACIinU,GAAM4vJ;;;IAGvBx7iB,IAAA,IAAC,QAAEq8iB,GAASr8iB,EAAA,OACZo7iB,EAAG;iBACUiB,EAAU,EAAI;KAC1B;;uBAEkB5wJ,GAAWgxJ;oBACdnxJ,GAAK3mU;EAgBnBj5F,GAAQsd,IAA6D,IAA5D,OAAE84C,GAAS,EAAI,MAAEkvO,EAAK,QAAE31S,EAAO,QAAEowO,GAAqBziN,EACnE,OACEkwT,EAAAA,GAAAA,MAACijP,GAAc,CAACr6f,OAAQA,EAAO8nC,SAAA,EAC7BqvO,EAAAA,GAAAA,KAACmjP,GAAe,CAACC,QAASv6f,EAAQ8gO,QAASl3R,GAAMnD,SACjD2wU,EAAAA,GAAAA,MAACsjP,GAAK,CAACH,QAASv6f,EAAO8nC,SAAA,EACrBqvO,EAAAA,GAAAA,KAAC82F,GAAWJ,GAAE,CAAA/lU,SAAEonM,KAChBioC,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAEvuG,IACjBowO,IACCwtG,EAAAA,GAAAA,KAACyjP,GAAW,CAACR,YAAU,EAAAtyd,SACb,OAAP6hI,QAAO,IAAPA,OAAO,EAAPA,EAASx7Q,KAAI,CAAC0M,EAAQ65E,KAAK,IAAAmmhB,EAAA,OAC1B1jP,EAAAA,GAAAA,KAAC2jP,GAAM,CAELvB,WAAuB,QAAbsB,EAAEhgmB,EAAOqL,YAAI,IAAA20lB,EAAAA,EAAI,QAC3B3rR,MAAOr0U,EAAOqD,MACd47lB,QAASj/lB,EAAOA,QAHX65E,EAIL,WAKK,EAIrB9qC,GAAMmxjB,KAAO,CAAC7rR,EAAe31S,EAAiBowO,KAC5C,IAAIqxV,EAAY5+e,SAAS6+e,eAAe,SACnCD,IACHA,EAAY5+e,SAASspI,cAAc,OACnCs1W,EAAU7jmB,GAAK,QACfilH,SAASvtH,KAAKq7P,YAAY8wW,IAE5BloP,EAAAA,QACEqE,EAAAA,GAAAA,KAACvtU,GAAK,CAACslS,MAAOA,EAAO31S,QAASA,EAASowO,QAASA,IAChDqxV,EACD,EAEHpxjB,GAAMnD,MAAQ,KACZ,MAAMu0jB,EAAY5+e,SAAS6+e,eAAe,SACtCD,GAAWloP,EAAAA,uBAAgCkoP,EAAU,EAG3D,YC1HA,IAAmMlklB,GAAEnoB,GAAjMyoV,GAAGnpV,OAAOswC,OAAWgtR,GAAGt9T,OAAOgiK,eAAmBokL,GAAGpmV,OAAO2vN,yBAA6B9D,GAAG7rN,OAAO6vN,oBAAwB83H,GAAG3nV,OAAOghN,eAAeunI,GAAGvoV,OAAOohK,UAAU95C,eAAkXi4M,IAA3V12S,GAAiW,CAACqpG,EAAGwoM,KAAM,IAAU7xS,EAAEnoB,EAAFmoB,EAAmLqpG,EAAjLxxH,EAAoL,SAASmoB,GAAgB,IAA6H6+B,OAA4B,IAA1Bpb,OAAOo6G,iBAA0B,iBAAiBp6G,OAAOo6G,iBAAiBwC,EAAE,UAAU1O,EAAI,EAAF0O,EAAkXq4E,EAAE,IAAI6pC,QAAetkJ,EAAjY,SAASjH,EAAEtG,GAAG,OAAO,SAASk+B,GAAG,IAAIjD,EAAEj7B,EAAE3rE,IAAI6pG,GAAG1vC,OAAM,IAAJysC,EAAWiD,EAAEvgE,KAAKs9D,EAAEgG,EAAEhG,EAAE,EAAE,EAAE,IAAIiD,EAAE34E,IAAIipC,GAAG,OAAO8X,EAAE43B,EAAE1vC,GAAG,GAAG0vC,EAAEvgE,KAAKgyE,EAAE,CAAC,KAAKzR,EAAE34E,IAAIipC,IAAIA,EAAEhhD,KAAKyiE,MAAMziE,KAAK+lC,SAAS0tD,GAAG,OAAO36B,EAAE43B,EAAE1vC,EAAE,CAAC,GAAG0vC,EAAEvgE,KAAKxvB,EAAE,MAAM,IAAI5/C,MAAM,kGAAkG,KAAK2vI,EAAE34E,IAAIipC,IAAIA,EAAEhhD,KAAKyiE,MAAMziE,KAAK+lC,SAASplC,GAAG,OAAOm4D,EAAE43B,EAAE1vC,EAAE,CAAC,CAAyB84I,CAA1hB,SAAShhI,GAAG,OAAO,SAAStG,EAAEk+B,GAAG,OAAO53B,EAAEn8C,IAAI61C,EAAEk+B,GAAGA,CAAC,CAAC,CAA8dhvF,CAAE84K,GAASA,GAAGt5K,EAAjmB,SAAS43D,GAAG,OAAO,SAAStG,GAAG,IAAIk+B,EAAE53B,EAAEtG,GAAG,OAAOA,EAAE9sC,IAAIgrE,GAAGA,CAAC,CAAC,CAAuiB/2I,CAAEomH,GAAGj+F,EAAEoklB,gBAAgBhljB,EAAEp/B,EAAEqklB,qBAAqBpmf,CAAC,EAAz1B,iBAAJoL,UAAqBwoM,EAAG,IAAIh6T,EAAEwxH,GAAmB,mBAARs9F,QAAoBA,EAAAA,KAAWA,OAAO,CAAC,WAAW9uN,GAA+CA,GAA3CmoB,SAAS+5L,WAAW,IAAIA,WAAW/5L,GAAG8iB,MAASwhkB,kBAAkB,CAAC,EAA8rB,EAA1tC,KAAKzsmB,IAAGmoB,IAAGnoB,GAAE,CAACrB,QAAQ,CAAC,IAAIA,QAAQqB,IAAGA,GAAErB,UAAy6C0tV,EAAAA,UAArB,IAAwf7zB,GAA1sDuwB,EAAC5gU,EAAEnoB,EAAE+nD,KAAKA,EAAK,MAAH5/B,EAAQsgU,GAAGxB,GAAG9+T,IAAI,CAAC,EAAjNi/T,EAACj/T,EAAEnoB,EAAE+nD,EAAEf,KAAK,GAAGhnD,GAAa,iBAAHA,GAAuB,mBAAHA,EAAc,IAAI,IAAIwoJ,KAAK2iE,GAAGnrN,IAAI6nV,GAAGn1O,KAAKvqF,EAAEqgI,IAAIA,IAAIzgG,GAAG60Q,GAAGz0S,EAAEqgI,EAAE,CAACt7G,IAAIA,IAAIltC,EAAEwoJ,GAAGvoB,aAAaj5E,EAAE0+R,GAAG1lV,EAAEwoJ,KAAKxhG,EAAEi5E,aAAa,OAAO93G,CAAC,EAA0Ci/T,EAAGpnV,GAAImoB,GAAIA,EAAE6gO,WAAmDjhM,EAAxC60Q,GAAG70Q,EAAE,UAAU,CAACz3B,MAAMnI,EAAE83G,YAAW,IAAO93G,IAA0mD4gU,CAAGlqB,MAAoqHhwQ,IAAnwDmtQ,EAAC7zS,EAAEnoB,KAAK,IAAI+nD,EAAE,IAAwL,EAAy7Ci0Q,EAAp7G7zS,IAAI,IAAInoB,EAAE,IAAIu5E,IAAI,CAAC,CAAC,EAAE,UAAUxxB,EAAE,IAAIwxB,IAAI,CAAC,CAAC,EAAE,UAAUvyB,EAAE,IAAIuyB,IAAIivE,EAAE,IAAI6+L,OAAOl/T,GAAG,OAAOqgI,EAAEzuC,iBAAiB,WAAUxqD,IAAY,IAAVjlB,KAAK87E,GAAE72D,EAAI,GAAlOpnC,SAAc,IAAXA,EAAExhB,QAA4B,SAAXwhB,EAAExhB,OAA6Mg2T,CAAGv2M,GAAG,CAAC,IAAIzyD,QAAQuxN,QAAQ39N,EAAEmljB,UAAU/+jB,IAAIy4E,EAAE,GAAO,aAAJz4E,EAAe,CAAC,IAAIwxE,EAAEn/G,EAAEktC,IAAIqa,GAAG,GAAa,iBAAH43D,EAAY,CAAC,IAAItG,EAAE7xD,EAAE9Z,IAAIiyE,GAAG,QAAO,IAAJtG,GAAYA,EAAEqsK,UAAU39N,GAAGsxD,EAAE6zf,YAAY/+jB,EAAE,MAAM,IAAIvmC,MAAM,sCAAsC,KAAM,aAAU+3G,EAAE,KAAa,MAAM,IAAI/3G,MAAM,uCAAzB+3G,GAA+D,OAAM,GAAO,YAAJxxE,EAAc,CAAC,IAAIwxE,EAAEp3D,EAAE7a,IAAIqa,GAAG,GAAa,iBAAH43D,EAAY,CAAC,IAAItG,EAAE7xD,EAAE9Z,IAAIiyE,GAAG,QAAO,IAAJtG,GAAYA,EAAEqsK,UAAU39N,GAAGsxD,EAAE6zf,YAAY/+jB,EAAE,MAAM,IAAIvmC,MAAM,sCAAsC,KAAM,aAAU+3G,EAAE,KAAyB,MAAM,IAAI/3G,MAAM,uCAArC+3G,IAAIp3D,EAAEuyB,OAAO/yB,EAA8D,EAAC,KAAM,KAA7vBp/B,IAAa,OAAVA,EAAEilB,OAA2B,iBAANjlB,EAAE3f,GAAouB4wT,CAAGhzM,GAAoL,CAAC,IAAIh5E,OAAOxC,QAAQ2c,IAAI6+D,EAAE,MAAM,IAAIh/G,MAAMmgD,EAAE,CAA7N,CAAC,IAAI/+C,GAAG++C,GAAG6+D,EAAEz4E,EAAEqZ,EAAE9Z,IAAIqa,GAAG,QAAO,IAAJ5Z,EAAW,MAAM,IAAIvmC,MAAM,uCAAuC,IAAI89Q,QAAQ/lK,EAAEutf,UAAU7zf,GAAGlrE,EAAEqZ,EAAEszB,OAAO/yB,GAAO,aAAJsxD,EAAe74G,EAAEs6E,OAAO6kC,GAAGp3D,EAAEuyB,OAAO6kC,EAAE,CAAiD,KAAI,CAACwtf,cAAcvmf,IAAI,IAAI7+D,GAAE,EAAGixQ,GAAGg0S,sBAAsBxljB,GAAGA,EAAEgc,IAAIzb,EAAE,CAAC29N,QAAQ9+J,EAAEsmf,UAAU,aAAa1smB,EAAEgjE,IAAIojD,EAAE7+D,GAAGihG,EAAE40L,YAAY,CAAC50U,GAAG++C,EAAE5gD,OAAO,QAAQgtD,OAAO,CAACuxN,QAAQ9+J,EAAEsmf,UAAU,aAAa,EAAExgkB,aAAak6E,IAAI,IAAI7+D,GAAE,EAAGixQ,GAAGg0S,sBAAsBxljB,GAAGA,EAAEgc,IAAIzb,EAAE,CAAC29N,QAAQ9+J,EAAEsmf,UAAU,YAAY3kjB,EAAEib,IAAIojD,EAAE7+D,GAAGihG,EAAE40L,YAAY,CAAC50U,GAAG++C,EAAE5gD,OAAO,QAAQgtD,OAAO,CAACuxN,QAAQ9+J,EAAEsmf,UAAU,YAAY,EAAEphQ,YAAYA,CAACllP,EAAE7+D,KAAK,IAAI5Z,GAAE,EAAG6qR,GAAGg0S,sBAAsBxsmB,GAAG,OAAOA,EAAEgjE,IAAIr1B,GAAE,KAAKy4E,IAAqB,mBAAVpmH,EAAEktC,IAAIS,IAAgB66G,EAAE40L,YAAY,CAAC50U,GAAG,KAAK7B,OAAO,MAAMgtD,OAAO,CAACwyN,MAAM5+N,EAAEirC,IAAImuH,YAAYnuH,MAAM0yL,QAAQv3O,EAAE++jB,UAAU,aAAa,IAAGlkd,EAAE40L,YAAY,CAAC50U,GAAG,KAAK7B,OAAO,MAAMgtD,OAAO,CAACwyN,MAAM5+N,EAAEirC,IAAImuH,YAAYnuH,MAAM0yL,QAAQv3O,EAAE++jB,UAAU,cAAc/+jB,CAAC,EAAE3B,WAAWA,CAACo6E,EAAE7+D,KAAK,IAAI5Z,GAAE,EAAG6qR,GAAGg0S,sBAAsBzkjB,GAAG,OAAOA,EAAEib,IAAIr1B,EAAEy4E,GAAGoiC,EAAE40L,YAAY,CAAC50U,GAAG,KAAK7B,OAAO,MAAMgtD,OAAO,CAACwyN,MAAM5+N,EAAEirC,IAAImuH,YAAYnuH,MAAM0yL,QAAQv3O,EAAE++jB,UAAU,aAAa/+jB,CAAC,EAAE,GAAwN,87CAAqmD,kBAAvC5C,OAAO,IAAI,mBAAmBA,SAAsB+0L,GAAE,CAAC9zL,WAAW6iB,GAAE7iB,WAAWy7C,KAAK18C,QAAQiB,WAAWE,aAAa2iB,GAAE3iB,aAAau7C,KAAK18C,QAAQmB,aAAao/T,YAAYz8S,GAAEy8S,YAAY7jR,KAAK18C,QAAQugU,YAAYqhQ,cAAc99iB,GAAE89iB,cAAcllhB,KAAK18C,QAAQ4hkB,eAA+b,IAAIhtY,GAAE,CAAC,EAA0zCymH,UAAUr7S,OAAO,SAAI,EAAuC,mBAAzBA,OAAO6hkB,iBAA6B7hkB,OAAO6hkB,iBAAn4C,MAAM7klB,KAAKihI,QAAO,EAAG8uL,GAAE,KAAC,IAAIkF,eAAL,GAAoB/9U,WAAAA,CAAYe,GAAGjB,KAAKgpB,KAAK/nB,EAAE2/N,GAAE3/N,GAAG2/N,GAAE3/N,IAAI,GAAG2/N,GAAE3/N,GAAGy9D,KAAK1+D,MAAMA,KAAK+4U,GAAGoF,MAAMnhT,QAAQh9B,KAAK+4U,GAAGmF,MAAMlhT,QAAQh9B,KAAK8tmB,UAAU9tmB,KAAK8tmB,UAAUplhB,KAAK1oF,MAAMgsC,OAAOgvE,iBAAiB,UAAUh7G,KAAK8tmB,UAAU,CAACA,SAAAA,CAAU7smB,GAAG,GAAGA,EAAE8smB,cAAc/hkB,OAAOurG,cAAct2I,EAAEiiB,IAAI+xE,UAAU,EAAEj1F,KAAKgpB,KAAKxe,UAAUxK,KAAKgpB,MAAmB,OAAb/nB,EAAEo3Q,SAAgB,OAAO,IAAIrvN,EAAE5lD,KAAKC,MAAMpC,EAAEo3Q,UAAUr4Q,KAAK+4U,GAAGmF,MAAMG,YAAYr1R,EAAE,CAACq1R,WAAAA,CAAYp9U,GAAG,GAAGjB,KAAKiqJ,OAAO,MAAM,IAAI5hJ,MAAM,qBAAqB,IAAI2gD,EAAE5lD,KAAKE,UAAUrC,GAAGgnD,EAAE,GAAGjoD,KAAKgpB,QAAQrmB,OAAOtB,KAAKoyF,SAAS9wF,OAAO2kD,KAAK+lC,YAAYrhD,OAAOurG,aAAahB,QAAQtuF,EAAEe,GAAG+3K,GAAE9zL,YAAW,KAAKjB,OAAOurG,aAAaP,WAAW/uF,EAAE,GAAE,KAAK24K,GAAE5gO,KAAKgpB,MAAMmuD,SAAQsyE,IAAIA,IAAIzpJ,MAAMypJ,EAAEsvL,GAAGmF,MAAMG,YAAYj7U,KAAKC,MAAM2lD,GAAG,GAAE,CAACjQ,KAAAA,GAAQ,GAAG/4C,KAAKiqJ,OAAO,OAAOjqJ,KAAKiqJ,QAAO,EAAGjqJ,KAAK+4U,GAAGoF,MAAMplS,QAAQ/4C,KAAK+4U,GAAGmF,MAAMnlS,QAAQ/M,OAAO6/Q,oBAAoB,UAAU7rT,KAAK8tmB,WAAW,IAAI7smB,EAAE2/N,GAAE5gO,KAAKgpB,MAAMugF,QAAQvpG,MAAM4gO,GAAE5gO,KAAKgpB,MAAMw8F,OAAOvkH,EAAE,EAAE,CAAC,aAAIm9U,GAAY,OAAOp+U,KAAK+4U,GAAGoF,MAAMC,SAAS,CAAC,aAAIA,CAAUn9U,GAAGjB,KAAK+4U,GAAGoF,MAAMC,UAAUn9U,CAAC,CAAC,kBAAI+smB,GAAiB,OAAOhumB,KAAK+4U,GAAGoF,MAAM6vR,cAAc,CAAC,kBAAIA,CAAe/smB,GAAGjB,KAAK+4U,GAAGoF,MAAM6vR,eAAe/smB,CAAC,CAAC+5G,gBAAAA,CAAiB/5G,EAAE+nD,GAAG,OAAOhpD,KAAK+4U,GAAGoF,MAAMnjO,iBAAiB/5G,EAAE+nD,EAAE,CAAC6iQ,mBAAAA,CAAoB5qT,EAAE+nD,GAAG,OAAOhpD,KAAK+4U,GAAGoF,MAAMtyB,oBAAoB5qT,EAAE+nD,EAAE,CAACuoQ,aAAAA,CAActwT,GAAG,OAAOjB,KAAK+4U,GAAGoF,MAAM5sB,cAActwT,EAAE,GAA+J,SAASm8T,KAAK,OAAO91Q,KAAK+lC,SAAS1kC,SAAS,IAAIssC,UAAU,EAAE,CAAC,IAAI+lO,GAAG,MAAM/jP,QAAQk6b,QAAQ1pgB,MAAK,KAAC21T,KAAD,GAAM6wS,UAAS,EAAGC,QAAO,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,UAAU,GAAG30S,UAAU,GAAG8vC,SAAStpW,WAAAA,CAAYe,EAAE+nD,GAAGhpD,KAAKmxgB,QAAQlwgB,EAAEjB,KAAKi3E,QAAQjuB,EAAEhpD,KAAK6nD,MAAM7nD,KAAK6nD,MAAM6gC,KAAK1oF,MAAMA,KAAKsumB,gBAAgBtumB,KAAKsumB,gBAAgB5lhB,KAAK1oF,MAAMA,KAAKuumB,WAAWvumB,KAAKuumB,WAAW7lhB,KAAK1oF,KAAK,CAAC,WAAM6nD,GAAQ,GAAG7nD,KAAKiumB,UAAUjumB,KAAKkumB,OAAO,OAAM,EAAG,GAAGlumB,KAAKmumB,WAAW,OAAOnumB,KAAKoumB,SAAQ,GAAG,EAAGpumB,KAAKmumB,YAAW,EAAG,IAAIltmB,GAAE,EAAG+nD,EAAEf,IAAI,IAAIxgD,MAAMgiJ,EAAEt8I,OAAO4tI,GAAG9yF,EAAE1c,KAAKk+G,IAAIzpJ,KAAKyH,QAAY,IAAJszI,GAAO0O,EAAEzpJ,KAAKyH,QAAQxG,GAAE,GAAQ,IAAJ85I,IAAQ95I,GAAE,GAAI,EAAEjB,KAAKmxgB,QAAQn2Z,iBAAiB,UAAUhyD,GAAG,IAAI,OAAOhpD,KAAKuumB,WAAW,SAArsB,WAAgB,IAAJnllB,EAAC7e,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAC,EAAG,OAAO,IAAIzK,SAAQmB,GAAG8/N,GAAE9zL,WAAWhsC,EAAEmoB,IAAG,CAAqpBk+T,CAAGtnV,KAAKi3E,QAAQu3hB,cAAcxumB,KAAKmxgB,QAAQtlN,oBAAoB,UAAU7iQ,GAAGhpD,KAAKmumB,YAAW,EAAGltmB,IAAEjB,KAAKoumB,SAAQpumB,KAAK6nD,SAAY7nD,KAAKyumB,cAAa,EAAG,CAAC,MAAM,OAAM,CAAE,CAAC,CAACH,eAAAA,GAAkB,GAAGtumB,KAAKiumB,SAAS,OAAOnumB,QAAQC,UAAU,IAAIkB,GAAE,EAAG+nD,EAAE,KAAK,OAAO,IAAIlpD,SAAQmoD,IAAI,IAAIwhG,EAAEA,KAAK,GAAGxoJ,EAAE,OAAOA,GAAE,EAAG,IAAI8/N,GAAE6sY,cAAc5kjB,EAAE,CAAC,MAAM,CAAC,IAAIo4L,EAAEphP,KAAKqumB,UAAU9kgB,QAAQvgD,GAAGo4L,GAAG,GAAGphP,KAAKqumB,UAAU7of,OAAO47H,EAAE,GAAGphP,KAAKmxgB,QAAQtlN,oBAAoB,UAAU9wK,GAAG9yF,GAAG,EAAEe,EAAE+3K,GAAEwrI,aAAY,KAAKvsW,KAAK6nD,QAAQhmD,MAAK,KAAK7B,KAAKiumB,UAAUxkd,GAAG,GAAE,GAAEzpJ,KAAKi3E,QAAQy3hB,kBAAkB1umB,KAAKqumB,UAAU3viB,KAAK1V,GAAG,IAAI+xF,EAAEqmG,IAAI,IAAIj0O,OAAO20N,GAAGsf,EAAE71M,KAAS,IAAJu2L,GAAO9hO,KAAK6nD,QAAQhmD,MAAK,KAAK7B,KAAKiumB,UAAUxkd,GAAG,GAAE,EAAEzpJ,KAAKmxgB,QAAQn2Z,iBAAiB,UAAU+/B,EAAE,GAAE,CAACwzd,UAAAA,CAAWttmB,GAAGjB,KAAKmxgB,QAAQ9yL,YAAY,CAAClxU,OAAOlM,EAAEwG,MAAMzH,KAAKyH,OAAO,CAACgnmB,UAAAA,GAAazumB,KAAKiumB,UAAS,EAAG,IAAIhtmB,EAAE+nD,IAAI,IAAI77C,OAAO86C,GAAGe,EAAEzd,KAAS,IAAJ0c,GAAOjoD,KAAKuumB,WAAW,EAAE,EAAE,OAAOvumB,KAAKmxgB,QAAQn2Z,iBAAiB,UAAU/5G,GAAGjB,KAAK05T,UAAUh7P,KAAKz9D,GAAGjB,KAAKuumB,WAAW,EAAE,CAACI,iBAAAA,GAAoB,OAAO3umB,KAAKwpW,WAAwBxpW,KAAKwpW,SAASxpW,KAAKsumB,mBAAlCtumB,KAAKwpW,QAA6D,CAACzwT,KAAAA,GAAQ,IAAI/4C,KAAKkumB,OAAO,CAAClumB,KAAKkumB,QAAO,EAAGlumB,KAAKiumB,UAAS,EAAGjumB,KAAKuumB,WAAW,GAAG,IAAIvumB,KAAK05T,UAAUviP,SAAQl2E,GAAGjB,KAAKmxgB,QAAQtlN,oBAAoB,UAAU5qT,KAAIjB,KAAKqumB,UAAUl3hB,SAAQl2E,GAAG8/N,GAAE6sY,cAAc3smB,IAAG,CAAC,MAAM,CAAC,CAAC,GAAO45T,GAAG,MAAMs2M,QAAQl6b,QAAQ23hB,QAAQnnmB,MAAK,KAAC21T,KAAD,GAAM5tH,SAAQ,KAAC,IAAIh1H,IAAL,GAASq0hB,SAAQ,EAAGC,cAAa,EAAG5umB,WAAAA,CAAYe,GAAG,IAAI8tmB,YAAY/ljB,GAAG/nD,EAAE,GAAGjB,KAAKi3E,QAAQh2E,EAAEjB,KAAKmxgB,QAAQ,IAAI9pL,GAAGr+R,GAAGhpD,KAAKwvM,SAASvrI,IAAIjkE,KAAKyH,MAAM,GAAGxG,EAAE+tmB,eAAe,CAAC,IAAI/mjB,EAAE,CAACymjB,iBAAiB,IAAIF,aAAa,KAAKxumB,KAAK4umB,QAAQ,IAAI5zS,GAAGh7T,KAAKmxgB,QAAQlpd,GAAGjoD,KAAK4umB,QAAQD,mBAAmB,CAAC3umB,KAAKmxgB,QAAQn2Z,iBAAiB,WAAU/yD,IAAI,IAAI96C,OAAOs8I,EAAEhiJ,MAAMszI,EAAExvG,KAAK61M,GAAGn5L,EAAE1c,KAAK,OAAOk+G,GAAG,KAAK,EAAEzpJ,KAAKwvM,SAASvrI,IAAI82E,EAAE,GAAG,MAAM,KAAK,EAAE/6I,KAAKwvM,SAASj0H,OAAOw/D,GAAG,MAAM,KAAK,EAAE/6I,KAAKivmB,KAAKl0d,GAAG,MAAM,KAAK,EAAE/6I,KAAKsyG,OAAOyoC,GAAG,MAAM,KAAK,EAAE/6I,KAAKkvmB,OAAOn0d,GAAG,MAAM,KAAK,EAAE/6I,KAAKg9B,MAAM+9G,GAAG,MAAM,KAAK,EAAE/6I,KAAKg+V,MAAMjjN,GAAG,MAAM,KAAK,GAAG/6I,KAAK6jkB,SAAS9ob,GAAG,MAAM,KAAK,GAAG/6I,KAAKmvmB,MAAMp0d,GAAG,MAAM,KAAK,GAAG/6I,KAAKuxV,OAAOx2M,GAAG,MAAM,KAAK,GAAG/6I,KAAKi3E,QAAQm0E,UAAUg2F,GAAQ,IAAIphP,KAAKw5G,KAAK,EAAE,CAAC,YAAIy0f,GAAW,IAAIjumB,KAAK4umB,QAAQ,MAAM,IAAIvmmB,MAAM,kGAAkG,OAAOrI,KAAK4umB,QAAQX,QAAQ,CAACiB,MAAAA,GAAoB,IAAbjumB,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAG,IAAI+nD,EAAE,IAAIhpD,KAAKwvM,SAAS/jI,UAAUwa,OAAMh+B,GAAO,IAAJA,IAAOhnD,IAAIjB,KAAKyH,OAAOzH,KAAKw5G,KAAK,GAAGxwD,GAAGhpD,KAAKi3E,QAAQm4hB,UAAU,CAACH,IAAAA,GAAkB,IAAbhumB,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAG,IAAI+nD,EAAE,IAAIhpD,KAAKwvM,SAAS/jI,UAAUwa,OAAMh+B,GAAO,IAAJA,IAAOhnD,IAAIjB,KAAKyH,OAAOzH,KAAKw5G,KAAK,IAAIx5G,KAAK6umB,SAAS7ljB,IAAIhpD,KAAK6umB,SAAQ,EAAG7umB,KAAKi3E,QAAQo4hB,SAAS,CAAC/8f,MAAAA,GAAoB,IAAbrxG,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAK6umB,SAAQ,EAAG7umB,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAG,IAAI+nD,EAAE,IAAIhpD,KAAKwvM,SAAS/jI,UAAUgB,MAAKxkB,GAAO,IAAJA,IAAOhnD,IAAIjB,KAAKyH,OAAOzH,KAAKw5G,KAAK,GAAGxwD,GAAGhpD,KAAKi3E,QAAQq4hB,WAAWtvmB,KAAK8umB,aAAa7tmB,IAAIjB,KAAKyH,KAAK,CAACu1B,KAAAA,GAAmB,IAAb/7B,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAK6umB,SAAQ,EAAG7umB,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAGA,IAAIjB,KAAKyH,MAAMzH,KAAKw5G,KAAK,GAAGx5G,KAAKi3E,QAAQj6C,OAAM,GAAIh9B,KAAK8umB,aAAa7tmB,IAAIjB,KAAKyH,KAAK,CAACu2V,KAAAA,GAAmB,IAAb/8V,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAK6umB,SAAQ,EAAG7umB,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAGA,IAAIjB,KAAKyH,MAAMzH,KAAKw5G,KAAK,GAAGx5G,KAAKi3E,QAAQ+mR,OAAM,GAAIh+V,KAAK8umB,aAAa7tmB,IAAIjB,KAAKyH,KAAK,CAACo8jB,QAAAA,GAAsB,IAAb5ikB,EAACsJ,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,MAAOzH,KAAK6umB,SAAQ,EAAG7umB,KAAKwvM,SAASvrI,IAAIhjE,EAAE,GAAGA,IAAIjB,KAAKyH,MAAMzH,KAAKw5G,KAAK,IAAIx5G,KAAKi3E,QAAQ4sf,UAAS,GAAI7jkB,KAAK8umB,aAAa7tmB,IAAIjB,KAAKyH,KAAK,CAAC0nmB,KAAAA,IAAO5kmB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,SAAWzH,KAAKyH,MAAMzH,KAAKw5G,KAAK,IAAIx5G,KAAKi3E,QAAQk4hB,OAAM,EAAG,CAAC59Q,MAAAA,IAAQhnV,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAACvK,KAAKyH,SAAWzH,KAAKyH,MAAMzH,KAAKw5G,KAAK,IAAIx5G,KAAKi3E,QAAQs6Q,QAAO,EAAG,CAAC1lT,OAAAA,CAAQ5qC,GAAG,IAAIjB,KAAKmxgB,QAAQ9yL,YAAY,CAAClxU,OAAO,GAAG1F,MAAMzH,KAAKyH,MAAM8jC,KAAKtqC,GAAG,CAAC,MAAM,CAAC,CAACu4G,IAAAA,CAAKv4G,GAAG,IAAIjB,KAAKmxgB,QAAQ9yL,YAAY,CAAClxU,OAAOlM,EAAEwG,MAAMzH,KAAKyH,OAAO,CAAC,MAAM,CAAC,CAACsxC,KAAAA,GAAQ/4C,KAAKi3E,QAAQ+3hB,gBAAgBhvmB,KAAK4umB,QAAQ71jB,QAAQ/4C,KAAKw5G,KAAK,GAAGx5G,KAAKmxgB,QAAQp4d,OAAO,GAAOowD,GAAGr5C,GAAE4+D,SAAS,KAAKyrM,GAAG,CAAC,YAAY,UAAU,QAAQ,iBAAiB,aAAa,YAAY,aAAa,YAAY,gBAAgB,gBAAgB,mBAAmB,SAAuJ,SAAStB,GAAGzvS,EAAEnoB,GAAG,IAAI+nD,EAAE,EAAE,OAAO,WAAe,IAAIygG,GAAE,IAAIpoJ,MAAOC,UAAU,KAAKmoJ,EAAEzgG,EAAE/nD,GAAG,OAAO+nD,EAAEygG,EAAErgI,KAAE7e,UAAK,CAAC,CAAC,IAAIojC,GAAEA,IAAItsC,KAAKoyF,MAAU+hD,GAAE,WAAW,SAASskL,KAA+a,IAA3altR,QAAQxjB,EAAE,KAAUmmlB,cAActumB,EAAE,EAAEuumB,iBAAiBxmjB,EAAE,EAAEm4F,QAAQl5F,EAAEkhD,GAAGstP,OAAOhtM,EAAE0wK,GAAGs1S,OAAO10d,EAAS20d,gBAAgBtuX,EAAE,GAAGuuX,iBAAiB7tY,EAAEA,OAAOstY,SAAS75d,EAAEA,OAAO85d,OAAOhof,EAAEA,OAAOiof,SAAS9mjB,EAAEA,OAAOonjB,SAAShhkB,EAAEA,OAAOw8G,UAAUhrC,EAAEA,OAAO2lK,SAASjsK,EAAE,EAAEg0K,SAAS91I,EAAE,EAAE63d,eAAe96d,EAAE,IAAI+6d,aAAaxngB,GAAE,EAAGyngB,cAAc/6d,GAAE,EAAGg7d,WAAWj3S,GAAG,EAAGk3S,SAASxngB,GAAE,EAAGz/E,KAAK4yS,EAAG,aAAas0S,WAAWl3S,EAAG,EAAEg2S,eAAet0S,GAAG,EAAGnV,SAASkK,GAAE,GAAGllT,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAC,CAAC,EAAOqwT,GAAG1uP,EAAAA,EAAAA,QAAEv+B,MAAKqsR,GAAG9tP,EAAAA,EAAAA,QAAEv+B,MAAKg3G,GAAEz4E,EAAAA,EAAAA,QAAE,MAAM3wB,GAAE2wB,EAAAA,EAAAA,QAAE,MAAM+oE,GAAE/oE,EAAAA,EAAAA,QAAE,GAAG6tP,GAAG7tP,EAAAA,EAAAA,QAAE,GAAGx5B,GAAEw5B,EAAAA,EAAAA,QAAE,GAAGkpE,GAAElpE,EAAAA,EAAAA,QAAE,GAAGnrE,GAAEmrE,EAAAA,EAAAA,SAAE,GAAIk1J,GAAEl1J,EAAAA,EAAAA,SAAE,GAAI5wB,GAAE4wB,EAAAA,EAAAA,SAAE,GAAIhI,GAAEgI,EAAAA,EAAAA,SAAE,GAAI2tP,GAAG3tP,EAAAA,EAAAA,SAAE,GAAIopE,GAAEppE,EAAAA,EAAAA,QAAE,MAAMnkB,GAAEmkB,EAAAA,EAAAA,QAAE,MAAMxrE,GAAEwrE,EAAAA,EAAAA,QAAE9iD,GAAGi3M,GAAEn0J,EAAAA,EAAAA,QAAE,IAAGD,EAAAA,EAAAA,YAAE,KAAK,GAAGhrE,GAAGqtC,QAAQC,KAAK,4JAA4Jya,GAAG/nD,EAAE,MAAM,IAAIoH,MAAM,qIAAqI,GAAG+gB,GAAGosH,GAAE,MAAM,IAAIntI,MAAM,kFAAkFmtI,OAAM,GAAGv0I,GAAGu0I,GAAE,MAAM,IAAIntI,MAAM,wFAAwFmtI,OAAM,GAAGxsF,GAAGwsF,GAAE,MAAM,IAAIntI,MAAM,2FAA2FmtI,OAAM,GAAGxsF,GAAG5/B,EAAE,MAAM,IAAI/gB,MAAM,8FAA8F+gB,MAAM,GAAG4/B,GAAGtoD,EAAE6oL,QAAQngK,EAAE4/B,EAAEq3K,EAAE92C,QAAQvgI,IAAItoD,EAAE6oL,QAAQngK,EAAEi3M,EAAE92C,QAAQtoL,IAAIijE,EAAEqlH,QAAQ,CAAC,GAAGv0C,GAAGy6K,EAAE,OAAO1uT,EAAEwoL,UAAU52I,EAAE42I,QAAQ,KAAKp0C,IAAGptF,EAAEwhI,SAASxhI,EAAEwhI,QAAQj3E,UAAU8sN,IAAG,IAAG,CAACh2S,EAAEnoB,EAAE+nD,EAAEgsF,EAAEy6K,IAAI,IAAIiM,GAAGxvP,EAAAA,EAAAA,QAAE6sP,IAAI9sP,EAAAA,EAAAA,YAAE,KAAKyvP,EAAGnyI,QAAQwvI,CAAE,GAAE,CAACA,IAAK,IAAIgC,GAAG7uP,EAAAA,EAAAA,QAAEk1K,GAAGo4E,GAAGttP,EAAAA,EAAAA,QAAEjkB,GAAGmyQ,GAAGluP,EAAAA,EAAAA,QAAE,IAAI,IAAI5P,IAAI,IAAImtF,KAAK23F,IAAI31K,WAAWpwB,GAAE6wB,EAAAA,EAAAA,QAAEujP,IAAGxjP,EAAAA,EAAAA,YAAE,KAAK5wB,EAAEkuI,QAAQkmI,GAAGvrP,EAAEqlH,UAAUkmI,EAAEwJ,KAAKjkL,GAAGoqL,KAAI,GAAE,CAAC3P,IAAI,IAAI0J,GAAGjtP,EAAAA,EAAAA,QAAE41J,IAAG71J,EAAAA,EAAAA,YAAE,KAAKktP,EAAG5vI,QAAQu4C,CAAC,GAAE,CAACA,IAAI,IAAIs3F,GAAGltP,EAAAA,EAAAA,QAAEqpE,IAAGtpE,EAAAA,EAAAA,YAAE,KAAKmtP,EAAG7vI,QAAQh0C,CAAC,GAAE,CAACA,IAAI,IAAIgkL,GAAGrtP,EAAAA,EAAAA,QAAEm7C,IAAGp7C,EAAAA,EAAAA,YAAE,KAAKstP,EAAGhwI,QAAQliE,CAAC,GAAE,CAACA,IAAI,IAAI10E,GAAEu5B,EAAAA,EAAAA,QAAE1jB,IAAGyjB,EAAAA,EAAAA,YAAE,KAAKt5B,EAAE42I,QAAQ/gI,CAAC,GAAE,CAACA,IAAI,IAAIyxD,GAAG/tC,EAAAA,EAAAA,QAAEt9B,IAAGq9B,EAAAA,EAAAA,YAAE,KAAKguC,EAAGsvE,QAAQ36I,CAAC,GAAE,CAACA,IAAI,IAAIw3H,GAAEl6F,EAAAA,EAAAA,QAAEk0C,IAAGn0C,EAAAA,EAAAA,YAAE,KAAKm6F,EAAEmjB,QAAQnpE,CAAC,GAAE,CAACA,IAAI,IAAIj3F,GAAEskU,EAAAA,EAAAA,UAAG,KAAK,IAAIjqQ,EAAEA,CAACpoC,EAAE85F,IAAIj7B,EAAGsvE,QAAQnuI,EAAE85F,GAAG,OAAOp7B,EAAE,EAAlvE,SAAY1wF,EAAEnoB,GAAG,IAAI+nD,EAAE,SAASf,IAAO,QAAAowF,EAAA9tI,UAAAC,OAAFi/I,EAAC,IAAAviI,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAADkR,EAAClR,GAAAhuI,UAAAguI,GAAEvvF,GAAG7b,aAAa6b,GAAGA,EAAE/b,YAAW,KAAK7jB,KAAKqgI,GAAGzgG,EAAE,IAAI,GAAE/nD,EAAE,CAAC,OAAOgnD,EAAE+7J,OAAO,WAAW72K,aAAa6b,EAAE,EAAEf,CAAC,CAAumEzZ,CAAGg1C,EAAEs2B,GAAGk+B,EAAE,EAAE6gL,GAAGr1O,EAAEw0D,GAAGx0D,CAAC,GAAE,CAACw0D,EAAEl+B,IAAInrC,IAAGzC,EAAAA,EAAAA,WAAID,EAAAA,EAAAA,YAAE,KAAKw8B,GAAGuwN,IAAKrqP,GAAG46G,QAAQsvI,IAAG,KAAK9wQ,EAAEwhI,QAAQj3E,QAAQ,GAAE0mN,GAAI,GAAE,CAACvwN,EAAEuwN,IAAK,IAAIv0T,GAAEA,KAAiB,OAAZ6wI,EAAEi0C,UAAiBw3C,GAAE5zL,aAAamoG,EAAEi0C,SAASj0C,EAAEi0C,QAAQ,KAAK,EAAEy3D,GAAE,SAACx9J,GAAS,IAAPpoC,IAAC7wC,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,KAAAA,UAAA,GAAO9F,KAAI6wI,EAAEi0C,QAAQw3C,GAAE9zL,WAAWmuR,GAAG53O,GAAG9iF,EAAE6oL,SAASnuI,IAAIG,EAAEguI,QAAQ57I,KAAI,EAAE0vR,GAAG75O,KAAK49I,EAAE73C,UAAUxoL,EAAEwoL,UAAU6vI,EAAG7vI,QAAQ/lG,EAAE2xD,IAAGgkL,EAAG5vI,QAAQ,CAAC/wK,KAAK,SAAS23lB,UAAS,GAAIh7d,KAAIC,EAAEm0C,QAAQ,EAAE72I,EAAE62I,QAAQ57I,KAAIyzL,EAAE73C,SAAQ,EAAGy3D,GAAE3gB,EAAE92C,SAAQ,EAAG,EAAEuxI,GAAGA,KAAKr2T,KAAI1D,EAAEwoL,UAAUgwI,EAAGhwI,QAAQ,KAAKp0C,IAAGgkL,EAAG5vI,QAAQ,CAAC/wK,KAAK,QAAQ28H,KAAIp0I,EAAEwoL,SAAQ,EAAG5kC,EAAE4kC,QAAQ57I,KAAI+tR,EAAGnyI,QAAQ92I,KAAI2uL,EAAE73C,UAAU72I,EAAE62I,QAAQ,EAAE63C,EAAE73C,SAAQ,EAAG,EAAE2wI,GAAG12O,IAAI/+E,MAAK1D,EAAEwoL,SAAS63C,EAAE73C,WAAW52I,EAAE42I,QAAQ/lG,EAAE2xD,IAAGgkL,EAAG5vI,QAAQ,CAAC/wK,KAAK,SAAS23lB,UAAS,GAAIh7d,KAAIisF,EAAE73C,SAAQ,EAAG72I,EAAE62I,QAAQ,EAAExoL,EAAEwoL,SAAQ,EAAGt0C,EAAEs0C,SAAS57I,KAAIg3G,EAAE4kC,QAAQwwI,EAAGxwI,SAAS57I,KAAIg3G,EAAE4kC,QAAQx5H,KAAIixL,IAAG,EAAEo6E,GAAG53O,IAAI,IAAIziF,EAAEwoL,QAAQ,CAACpgK,EAAE66L,QAAQ76L,EAAE66L,SAAS,IAAI9uE,EAAEvnG,KAAI4N,EAAEguI,QAAQ,OAAK7oL,EAAE6oL,QAAQ82C,EAAE92C,QAAQr0C,KAAImrF,EAAE92C,QAAQ,IAAI63C,EAAE73C,aAAmDxhI,EAAEwhI,QAAQxhI,EAAEwhI,QAAQ0lb,OAAOn0S,WAArE/yQ,EAAEwhI,QAAQxhI,EAAEwhI,QAAQ2lb,SAAS7xS,GAAG75O,GAAgD,CAACz7B,EAAEwhI,QAAQxhI,EAAEwhI,QAAQj3E,SAAS4nN,GAAG12O,EAAE,EAAEw5O,GAAGx5O,IAAI,IAAI8kB,IAAI/sD,EAAEguI,UAAUhuI,EAAEguI,QAAQ57I,KAAIgF,EAAE42I,QAAQ,KAAKp0C,KAAIhsH,EAAEq6D,EAAE2xD,IAAGisF,EAAE73C,QAAQ,OAAO,GAAG9kL,MAAK1D,EAAEwoL,SAASwxI,EAAGxxI,QAAQppJ,SAASqjD,EAAEhrE,MAAa,YAAN4iT,GAAG53O,GAAU,IAAIpoC,EAAEzN,KAAI4N,EAAEguI,QAAWxoL,EAAEwoL,UAAUwvI,IAAKh4T,EAAEwoL,SAASnuI,GAAG16C,EAAE6oL,QAAS6xI,GAAG53O,IAAUloC,EAAEiuI,SAAQ,EAAGn0C,EAAEm0C,QAAQ,EAAE72I,EAAE62I,QAAQ,EAAEy3D,KAAIv4I,GAAGuwN,GAAIrqP,GAAG46G,UAAS,EAAEowI,IAAGztP,EAAAA,EAAAA,QAAE8wP,KAAI/wP,EAAAA,EAAAA,YAAE,KAAK,IAAIuX,EAAEq2O,EAAGtwI,QAAQ/lG,GAAG/wC,KAAQknR,GAAGpwI,QAAPx0C,EAAE,EAAa8jL,GAAGmE,GAAGjoL,GAAcioL,GAAGx5O,GAAGzzB,IAAG,GAAE,CAACglF,EAAEiD,EAAEl+B,EAAEG,EAAGxR,EAAEuwN,IAAK,IAAIjpQ,GAAEA,KAAKD,IAAG0pQ,EAAGjwI,UAAUswI,EAAGtwI,UAAU6wI,EAAG7wI,QAAQpyG,SAAQqM,IAAIg2O,EAAGjwI,QAAQvuE,iBAAiBx3B,EAAEm2O,GAAGpwI,QAAQ,CAAC21I,SAAQ,EAAGC,SAAQ,GAAI,IAAGtF,EAAGtwI,SAAQ,GAAI,EAAE92I,GAAE,WAAQ,IAAP+wC,EAACj5E,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAAOulD,IAAG0pQ,EAAGjwI,UAAUswI,EAAGtwI,SAAS/lG,KAAK42O,EAAG7wI,QAAQpyG,SAAQ/7B,IAAIo+Q,EAAGjwI,QAAQsiI,oBAAoBzwQ,EAAEu+Q,GAAGpwI,QAAQ,CAAC21I,SAAQ,GAAI,IAAGrF,EAAGtwI,SAAQ,EAAG,EAAE61I,IAAE/pL,EAAAA,EAAAA,cAAE7xD,IAAGnoC,EAAEkuI,UAAY9kL,KAAIsrD,KAAIhvD,EAAEwoL,SAAQ,EAAG63C,EAAE73C,SAAQ,EAAGjuI,EAAEiuI,SAAQ,EAAGn0C,EAAEm0C,QAAQ,EAAE72I,EAAE62I,QAAQ,EAAExhI,EAAEwhI,UAAU/lG,GAAGz7B,EAAEwhI,QAAQvsJ,QAAQgkN,MAAI,IAAI,CAAC1rG,EAAEv0I,EAAEs6C,EAAE36C,EAAEqnD,IAAIo1Q,IAAG9nL,EAAAA,EAAAA,cAAE7xD,IAAGnoC,EAAEkuI,UAAY9kL,KAAIsrD,KAAIiqQ,EAAGzwI,QAAQ57I,KAAIsnG,EAAEs0C,SAAS57I,KAAIg3G,EAAE4kC,QAAQwwI,EAAGxwI,SAAS57I,KAAIg3G,EAAE4kC,QAAQt0C,EAAEs0C,QAAQ,EAAExoL,EAAEwoL,SAAQ,EAAG63C,EAAE73C,SAAQ,EAAGjuI,EAAEiuI,SAAQ,EAAGn0C,EAAEm0C,QAAQ,EAAE72I,EAAE62I,QAAQ,EAAExhI,EAAEwhI,UAAU/lG,GAAGz7B,EAAEwhI,QAAQy0K,QAAQhpN,GAAGgsG,MAAI,IAAI,CAAC1rG,EAAEv0I,EAAEL,EAAEs0I,EAAE35F,EAAE0M,IAAIu1Q,IAAGjoL,EAAAA,EAAAA,cAAE7xD,IAAGnoC,EAAEkuI,UAAY9kL,KAAIsrD,MAAKhvD,EAAEwoL,SAAS63C,EAAE73C,UAAU2wI,KAAKn5T,EAAEwoL,SAAQ,EAAG63C,EAAE73C,SAAQ,EAAGjuI,EAAEiuI,SAAQ,EAAGn0C,EAAEm0C,QAAQ,EAAE72I,EAAE62I,QAAQ,EAAEywI,EAAGzwI,QAAQ57I,KAAIoa,EAAEwhI,UAAU/lG,GAAGz7B,EAAEwhI,QAAQs6Y,WAAW7iV,MAAI,IAAI,CAAC1rG,EAAEv0I,EAAEqgO,EAAE/lL,EAAE36C,EAAEqnD,IAAIkxQ,IAAG5jL,EAAAA,EAAAA,cAAE,eAAC7xD,EAACj5E,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAAG,OAAG8wC,EAAEkuI,UAASjuI,EAAEiuI,UAAYn0C,EAAEm0C,QAAQg0I,KAAKjiR,EAAEiuI,SAAQ,EAAG92I,KAAIhuC,KAAIsjD,EAAEwhI,UAAU/lG,GAAGz7B,EAAEwhI,QAAQ4lb,SAAQ,EAAG,GAAC,CAAC75d,EAAEj6F,EAAE0M,IAAIwzQ,IAAGlmL,EAAAA,EAAAA,cAAE,eAAC7xD,EAACj5E,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAAG,QAAG8wC,EAAEkuI,UAAUjuI,EAAEiuI,WAAYjuI,EAAEiuI,SAAQ,EAAG63C,EAAE73C,SAASx5H,KAAIhvD,EAAEwoL,SAASy3D,GAAE5rG,EAAEm0C,SAAS72I,EAAE62I,UAAU72I,EAAE62I,QAAQ57I,MAAKoa,EAAEwhI,UAAU/lG,GAAGz7B,EAAEwhI,QAAQgoK,UAAS,EAAG,GAAC,CAACj8M,EAAE50I,EAAE26C,EAAE+5F,EAAErtF,IAAIk/R,IAAG5xM,EAAAA,EAAAA,cAAE,CAAC7xD,EAAEpoC,KAAK2M,EAAEwhI,SAASnuI,GAAGgrH,EAAEmjB,QAAQ/lG,EAAE2xD,IAAGptF,EAAEwhI,QAAQ19I,QAAQ23C,IAAIpoC,GAAGgrH,EAAEmjB,QAAQ/lG,EAAE2xD,KAAG,IAAI,CAAC/0B,IAAIisG,IAAGh3E,EAAAA,EAAAA,cAAE,IAAIt0I,EAAEwoL,SAAQ,CAACxoL,IAAIk3H,IAAGod,EAAAA,EAAAA,cAAE,IAAI+rF,EAAE73C,SAAQ,CAAC63C,IAAIj9D,IAAG9uB,EAAAA,EAAAA,cAAE,IAAIttF,EAAEwhI,QAAQxhI,EAAEwhI,QAAQ0kb,SAAS,MAAK,CAAClmjB,IAAIwlS,IAAGl4M,EAAAA,EAAAA,cAAE,IAAIttF,EAAEwhI,QAAQxhI,EAAEwhI,QAAQulb,aAAa,MAAK,CAAC/mjB,IAAI+hS,IAAGz0M,EAAAA,EAAAA,cAAE,IAAIttF,EAAEwhI,QAAQxhI,EAAEwhI,QAAQ9hL,MAAM,MAAK,CAACsgD,IAAIw1Q,IAAGloL,EAAAA,EAAAA,cAAE,KAAK,GAAG/5F,EAAEiuI,QAAQ,OAAOn0C,EAAEm0C,QAAQ,IAAI/lG,EAAE4xD,EAAEm0C,QAAQn0C,EAAEm0C,QAAQ82C,EAAE92C,QAAQ7oL,EAAE6oL,QAAQnuI,EAAEG,EAAEguI,QAAQ57I,KAAI4N,EAAEguI,QAAQ,EAAEr0C,EAAE5tF,KAAKyiE,MAAMvmC,EAAEpoC,GAAG,OAAO85F,EAAE,EAAE,EAAE5tF,KAAK+6J,IAAIntE,EAAE,GAAE,CAACx0I,EAAE2/N,EAAEe,EAAEhsF,EAAE75F,IAAIk/Q,IAAGplL,EAAAA,EAAAA,cAAE,IAAI/tF,KAAKqxF,MAAMhrG,KAAIqsR,EAAGzwI,UAAS,CAACywI,IAAKqwB,IAAGh1M,EAAAA,EAAAA,cAAE,IAAI/tF,KAAKqxF,MAAMhrG,KAAIitR,EAAGrxI,UAAS,CAACqxI,IAAKmvB,IAAG10M,EAAAA,EAAAA,cAAE,IAAIsP,EAAE4kC,QAAQ,IAAIloL,KAAKsjJ,EAAE4kC,SAAS,MAAK,CAAC5kC,IAAIqjM,IAAG3yM,EAAAA,EAAAA,cAAE,IAAI95F,EAAEguI,QAAQ,IAAIloL,KAAKk6C,EAAEguI,SAAS,MAAK,CAAChuI,IAAIq+Q,IAAGvkL,EAAAA,EAAAA,cAAE,IAAIt0I,EAAEwoL,QAAQjiI,KAAKqxF,MAAMhrG,KAAIg3G,EAAE4kC,QAAQt0C,EAAEs0C,SAASjiI,KAAKqxF,MAAM1D,EAAEs0C,UAAS,CAAC5kC,EAAE1P,IAAI+oL,IAAG3oL,EAAAA,EAAAA,cAAE,IAAIt0I,EAAEwoL,QAAQjiI,KAAKqxF,MAAMhrG,KAAIg3G,EAAE4kC,QAAQwwI,EAAGxwI,SAASjiI,KAAKqxF,MAAMohL,EAAGxwI,UAAS,CAAC5kC,EAAEo1K,IAAKguB,IAAG1yM,EAAAA,EAAAA,cAAE,KAAK,IAAI7xD,EAAEl8B,KAAKqxF,MAAM8hL,KAAKb,MAAM,OAAOp2O,GAAG,EAAEA,EAAE,CAAC,GAAE,CAACmhE,EAAE1P,IAAI8xM,IAAG1xM,EAAAA,EAAAA,cAAE,KAAK,IAAI7xD,EAAEl8B,KAAKqxF,MAAM0xM,KAAKrsB,MAAM,OAAOx6O,GAAG,EAAEA,EAAE,CAAC,GAAE,CAACmhE,EAAE1P,KAAIhpE,EAAAA,EAAAA,YAAE,KAAK,GAAG6tC,EAAE,GAAGk+B,EAAE,EAAE,MAAM,IAAI3vI,MAAM,mEAAmE0yI,GAAjnX,SAAY3xH,GAAG23M,GAAE9zL,WAAW7jB,EAAE6jB,WAAW8zL,GAAE5zL,aAAa/jB,EAAE+jB,aAAa4zL,GAAEwrI,YAAYnjV,EAAEmjV,YAAYxrI,GAAE6sY,cAAcxklB,EAAEwklB,aAAa,CAAk/WxrmB,CAAG24I,GAAG,IAAIv3D,EAAEA,KAAKz7B,EAAEwhI,SAASxhI,EAAEwhI,QAAQxwI,QAAQ5vB,EAAE66L,QAAQ76L,EAAE66L,SAASv/M,KAAIguC,IAAE,EAAG,EAAE,OAAOqd,IAAG9jB,OAAOgvE,iBAAiB,eAAex3B,GAAG,KAAK1zB,IAAG9jB,OAAO6/Q,oBAAoB,eAAeroO,GAAGz7B,EAAEwhI,SAASxhI,EAAEwhI,QAAQxwI,QAAQ5vB,EAAE66L,QAAQ76L,EAAE66L,SAASv/M,KAAIguC,IAAE,EAAG,CAAC,GAAE,KAAIw5B,EAAAA,EAAAA,YAAE,KAAKlkB,EAAEwhI,SAASxhI,EAAEwhI,QAAQxwI,QAAUgP,EAAEwhI,QAAJ9gF,EAAY,IAAIoyN,GAAG,CAACk0S,YAAYnzS,EAAGozS,eAAet0S,EAAG00S,SAASA,KAAK/xS,IAAI,EAAEgyS,OAAOA,KAAKv0S,IAAI,EAAEw0S,SAASA,KAAKp1S,IAAI,EAAE9uK,UAAU5nE,IAAI4iF,EAAEmjB,QAAQ/lG,EAAE2xD,GAAE,EAAEn4G,MAAMoiS,GAAE4+B,MAAM7gC,GAAG0mQ,SAASvmQ,GAAG6xS,MAAMl2S,GAAGs4B,OAAOh2B,KAAe,IAAI,GAAE,CAAC9yN,EAAEmzN,EAAGlB,EAAGtB,EAAGG,EAAG5mR,EAAEyzH,EAAEg5J,GAAEjC,GAAGlE,GAAGsC,MAAKtvP,EAAAA,EAAAA,YAAE,KAAK/H,EAAEqlH,UAAU9kL,KAAIguC,IAAE,KAAOuiG,IAAGy6K,IAAKnnN,EAAE82N,KAAIrvQ,KAAI,GAAE,CAACilF,EAAE1sC,EAAEmnN,EAAEvrP,KAAI+H,EAAAA,EAAAA,YAAE,KAAK,IAAI/H,EAAEqlH,QAAQ,CAAC,IAAI/lG,EAAE,IAAI,IAAIlnB,IAAI,IAAImtF,KAAK23F,IAAI31K,UAAU,GAAGh5B,KAAI2nR,EAAG7wI,QAAQ/lG,EAAEg2O,EAAGjwI,QAAQthI,EAAE8yQ,EAAGxxI,QAAQ63D,EAAEpsG,GAAGy6K,EAAE,OAAOnnN,EAAE82N,KAAIrvQ,IAAG,IAAG,CAAC9H,EAAE7kD,KAAKE,UAAUmmJ,GAAGrmJ,KAAKE,UAAU89O,GAAGl9K,EAAEurP,EAAEz6K,EAAE1sC,KAAIr8B,EAAAA,EAAAA,YAAE,KAAK/H,EAAEqlH,UAAUrlH,EAAEqlH,SAAQ,EAAG,GAAE,CAACrlH,IAAI,IAAIixE,GAAE,CAACtpG,QAAQo7S,GAAGjqT,MAAMoiS,GAAE4+B,MAAM7gC,GAAG0mQ,SAASvmQ,GAAG6xS,MAAMl2S,GAAGs4B,OAAOh2B,GAAG60S,OAAO/jZ,GAAGgkZ,WAAWp4e,GAAGg2e,SAAS9pc,GAAGmsc,gBAAgB/iR,GAAGgjR,SAASzmR,GAAG0mR,iBAAiBjzS,GAAGkzS,eAAeh2S,GAAGi2S,oBAAoBrmR,GAAGsmR,gBAAgB5mR,GAAG6mR,kBAAkB5oR,GAAG6oR,YAAYj3S,GAAGk3S,iBAAiB9yS,GAAG+yS,cAAchpR,GAAGipR,mBAAmBjqR,GAAGkqR,oBAAoBzthB,IAAIs+I,EAAEt+I,EAAE21O,EAAG5vI,QAAQ/lG,CAAC,EAAE0thB,YAAY1thB,IAAI+xD,EAAE/xD,EAAE41O,EAAG7vI,QAAQ/lG,CAAC,EAAE2thB,UAAU3thB,IAAI6jC,EAAE7jC,EAAE+1O,EAAGhwI,QAAQ/lG,CAAC,EAAE4thB,YAAY5thB,IAAIh7B,EAAEg7B,EAAE7wC,EAAE42I,QAAQ/lG,CAAC,EAAE6thB,YAAY7thB,IAAI50C,EAAE40C,EAAEy2B,EAAGsvE,QAAQ/lG,CAAC,EAAE8thB,aAAa9thB,IAAI48B,EAAE58B,EAAE4iF,EAAEmjB,QAAQ/lG,CAAC,GAAG,OAAO2xD,EAAC,CAAkG,IAAI+jL,IAAG+uB,EAAAA,EAAAA,eAAG,MAA6F/uB,GAAG6mB,SCc99mB,MAAMwxR,GAAsBnsJ,GAAOC,GAAG;;;;aAIzBvJ,GAAKhsZ;wBACMgsZ,GAAKyvJ;;;;uBAINtvJ,GAAWx0E;;;;;uBAKXw0E,GAAWu1J;;;uBAGXv1J,GAAWx0E,6BAA6Bw0E,GAAWu1J;;;EAKpEC,GAAgBrsJ,GAAOC,GAAG;;;;EAM1BqsJ,GAAUtsJ,GAAOC,GAAG;;;;;SAKjBvJ,GAAKhsZ;;;;;;;;;;;;yBAYWmsZ,GAAWu1J;;;;EAM9BG,GAAgBvsJ,GAAOC,GAAG;2BACLvJ,GAAK1mU;;uBAET6mU,GAAWu1J;;;;;EAO5BI,GAAW,IAmJjB,GAhJmBC,KACjB,MACMhqmB,EADWi3W,KACKz0N,UAEfw5H,EAAWiuV,IAAgB9kS,EAAAA,EAAAA,UAAS4kS,IAErCtxf,EAAW8rQ,GAAYqyE,IAEvBr0H,EAAWyjD,MA8BjBphD,EAAAA,EAAAA,YAAU,KACR,MAAM9wG,EAAW4wI,aAAY,KAC3BulQ,EAAaxqjB,KAAK0gD,KAAKwogB,IAAqB,KAAM,GACjD,KAEH,MAAO,KACL5C,cAAcjyY,EAAS,CACxB,IAGH,MAAM,iBAAE60Y,EAAgB,SAAE3sC,GAAakuC,GAAa,CAClD1C,OAvCaA,KACT/uf,IACFpkE,GAAMnD,QACNqxR,EAAS1iU,MACX,EAoCA0nmB,SAjCeA,KACX9uf,GACFpkE,GAAMmxjB,KACJ,0BACA,+HACE/ljB,KAAKqxF,MAAMq5d,IACX,aACF,CACE,CACExhmB,MAAO,wBACPgI,KAAM,UACNrL,OAAQA,KACN02jB,IACA3nhB,GAAMnD,OAAO,IAKvB,EAgBAnM,QAASglkB,GACTpC,iBAtDuB,OA6DnByC,EAAW,CACf,CACE9F,KAAMtE,GAAMhgP,WAAW+/F,KACvBsqJ,aAAcrK,GAAMhgP,WAAWkgP,cAC/Bv3lB,MAAO,UACP0S,IAAK,IAEP,CACEiplB,KAAMtE,GAAMhgP,WAAW4oB,OACvByhO,aAAcrK,GAAMhgP,WAAWmgP,gBAC/Bx3lB,MAAO,SACP0S,IAAK,UAEP,CACEiplB,KAAMtE,GAAMhgP,WAAWumK,UACvB8jF,aAAcrK,GAAMhgP,WAAWogP,mBAC/Bz3lB,MAAO,iBACP0S,IAAK,cAGP,CACEiplB,KAAMtE,GAAMhgP,WAAWppP,KACvByze,aAAcrK,GAAMhgP,WAAWqgP,cAC/B13lB,MAAO,YACP0S,IAAK,aAEP,CACEiplB,KAAMtE,GAAMhgP,WAAWq8O,KACvBgO,aAAcrK,GAAMhgP,WAAWygP,cAC/B93lB,MAAO,YACP0S,IAAK,cAWT,SAASivlB,EAAej2hB,EAAWr0E,GACjC,MAAMuqmB,EAAcl2hB,EAAKiwhB,KAEnB96kB,GAD4B6qD,EAAKg2hB,aACvBrqmB,EAAKyyD,MAAM,QAAQi9D,OAEnC,OAAc,OAAPlmG,QAAO,IAAPA,GAAAA,EAAS8O,SAAS+7C,EAAKh5D,MAAqB,KAAbg5D,EAAKh5D,KAA4B,KAAbg5D,EAAKh5D,KAA0B,KAAZmO,GAC3Eo4V,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAOvvhB,EAAKg2hB,aAAc74S,MAAO+iJ,GAAMyB,eAE7Cp0F,EAAAA,GAAAA,KAAC2oP,EAAW,GAEhB,CAEA,OACE3oP,EAAAA,GAAAA,KAAC8nP,GAAmB,CAAAn3d,UAClBsvO,EAAAA,GAAAA,MAAC+nP,GAAa,CAAAr3d,SAAA,EACZqvO,EAAAA,GAAAA,KAACkoP,GAAa,CAAAv3d,UACZqvO,EAAAA,GAAAA,KAACo+O,GAAMhgP,WAAW6gP,WAAU,MAI7BuJ,EAASxxmB,KAAI,CAACy7E,EAAM8K,KACnByiS,EAAAA,GAAAA,KAAC1C,GAAO,CACNl6W,GAAI,KAAKqvE,EAAKh5D,MAEd8rN,MAAOx+K,IAAmB,IAAlB,SAAEu3T,GAAUv3T,EAClB,MAAMn/B,EAAUxpB,EAAKyyD,MAAM,QAAQi9D,MAC7B+6e,GAAoB,OAAPjhlB,QAAO,IAAPA,OAAO,EAAPA,EAAS8O,SAAS+7C,EAAKh5D,OAAqB,KAAbg5D,EAAKh5D,KAA4B,KAAbg5D,EAAKh5D,KAA0B,KAAZmO,EACzF,MAAO,CACL82R,WAAYmqT,EAAa,IAAM,IAC/Bj5S,MAAQi5S,EAAiCl2J,GAAMm2J,YAA1Bn2J,GAAMyB,YAC5B,EACDzjU,UAEFsvO,EAAAA,GAAAA,MAACgoP,GAAO,CAAat+R,QAASA,IA9EnBo/R,MAAO,IAADC,EACS,QAAlCA,EAAA/jf,SAAS8pV,cAAc,mBAAW,IAAAi6J,GAAlCA,EAAoCC,UAAUzlV,OAAO,iBAAiB,EA6E1BulV,GAAep4d,SAAA,CAChD+3d,EAAej2hB,EAAMr0E,IACtB4hX,EAAAA,GAAAA,KAAA,QAAArvO,SAAOl+D,EAAK1rE,UAFAw2E,IAVTA,SAiBS,EC9MpB2rhB,GAAkBvtJ,GAAOC,GAAsB;;;uBAG7BlqZ,GAAUA,EAAMy3iB;eACxBz3iB,GAAWA,EAAM0xiB,QAAU,QAAU;;;EAqBrD,GAhBqBr8iB,IAKK,IALJ,SACpB4pF,EAAQ,QACRyyd,GAAU,EAAI,QACdT,EAAO,WACPwG,EAAa32J,GAAWx0E,QACNj3U,EAClB,OACEi5T,EAAAA,GAAAA,KAACkpP,GAAe,CACdv/R,QAASg5R,EACTS,QAASA,EACT+F,WAAYA,EAAWx4d,SAEtBA,GACe,EC9BhBy4d,IAAgBz2J,GAAMI,OAAcJ,GAAMO,aAE1Cm2J,GAA0B1tJ,GAAOC,GAAU;;aAEpCvJ,GAAKhsZ;cACJgsZ,GAAKhsZ;;;;sBAIGqsZ,GAAO4wJ;;;;;;;;;0BASH8F;eACX/2J,GAAKhsZ;;;;wBAIIqsZ,GAAO4wJ;;;;;;;;;0BASL8F;;;;;8BAKI/2J,GAAK1mU;;mBAEhB+mU,GAAO4wJ;;;MAGnB5xiB,GACDA,EAAM43iB,YACL53iB,EAAM63iB,MACPpH,EAAG;;;;;;MAMFzwiB,GACDA,EAAM63iB,MACNpH,EAAG;;;mBAGU9vJ,GAAK1mU;;;;mBAIL0mU,GAAK1mU;;;;;;;;;;QAUfj6E,GACDA,EAAMysZ,MACNgkJ,EAAG;;;qBAGU9vJ,GAAKhsZ;gCACM+ijB;;;qBAGX/2J,GAAKhsZ;;gCAEM+ijB;;;;;;;;EAkB1BI,GAAiBzijB,IAA8C,IAA7C,KAAEwijB,EAAI,MAAEj6jB,EAAK,UAAEg6jB,EAAS,KAAEnrJ,GAAap3Z,EAC7D,OACEi5T,EAAAA,GAAAA,KAACqpP,GAAuB,CACtBE,KAAMA,EACNprJ,KAAMA,EACN7ua,MAAOA,EACPg6jB,UAAWA,EAAU34d,UAErBqvO,EAAAA,GAAAA,KAAA,YACwB,EAyB9B,GArBmCjwT,IAKrB,IALsB,KAClCw5iB,EAAI,KACJprJ,GAAO,EAAI,UACXmrJ,EAAS,QACT3/R,GACM55Q,EACN,OACEiwT,EAAAA,GAAAA,KAAC2jP,GAAM,CACLrB,WAAS,EACTI,MACE1iP,EAAAA,GAAAA,KAACwpP,GAAc,CACbD,KAAMA,EACNprJ,KAAMA,IAASorJ,EACfD,UAAWA,IAGf3G,QAASh5R,GACT,ECzGN,GApBmB5iR,IAAsB,IAArB,KAAEwijB,GAAaxijB,EACjC,MAAMkvT,EAAWR,KASjB,SAAS9rC,EAAQ8/R,GACfA,EATF,WAA2B,IAADT,EACU,QAAlCA,EAAA/jf,SAAS8pV,cAAc,mBAAW,IAAAi6J,GAAlCA,EAAoCC,UAAUr8H,OAAO,iBACvD,CAOW88H,GAJTzzP,EAAS,KAAK,CAACM,SAAS,QAK1B,CAEA,OACEyJ,EAAAA,GAAAA,KAAC2pP,GAAY,CAACvG,QAASmG,EAAM5G,QAASA,IAAMh5R,GAAS4/R,GAAM54d,UACzDqvO,EAAAA,GAAAA,KAAC4pP,GAA0B,CAACL,KAAMA,KACrB,ECnBbM,GAAiBz5f,IACrB,MAAM5iC,EAAUy3C,SAAS8pV,cAAc,YAEnC3+V,EAAMxb,QAAiB,OAAPpnB,QAAO,IAAPA,GAAAA,EAASokP,SAASxhN,EAAMxb,UAG5Cwb,EAAMq4M,kBACNxjM,SAASm9L,oBAAoB,QAASynT,GAAe,CAAEp0S,SAAS,IACzD,OAAPjoP,QAAO,IAAPA,GAAAA,EAASy7hB,UAAUzlV,OAAO,UAAS,EAG/BsmV,GAAcA,KAClB,MAAMt8hB,EAAUy3C,SAAS8pV,cAAc,YAChC,OAAPvhY,QAAO,IAAPA,GAAAA,EAASy7hB,UAAU1liB,IAAI,UACvB//B,YAAW,KACTyhF,SAAS1T,iBAAiB,QAASs4f,GAAe,CAAEp0S,SAAS,GAAO,GACnE,GAAG,EAUR,GAPqBs0S,KAEjB/pP,EAAAA,GAAAA,KAAC2pP,GAAY,CAAChH,QAASmH,GAAaX,WAAY32J,GAAWu1J,QAAQp3d,UACjEqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CAACrB,WAAS,EAACI,MAAM1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMhgP,WAAYtmX,aCrBvDkymB,GAAkBruJ,GAAOC,GAAG;;;;;;;;uBAQXvJ,GAAK3mU;mBACT2mU,GAAK3mU;;gBAER2mU,GAAKyvJ;;;SAGZzvJ,GAAK1mU;aACD,OAAO0mU,GAAKhsZ;;uBAEFmsZ,GAAWx0E;;;yBAGTq0E,GAAK3mU;;EAIxBu+d,GAAmBtuJ,GAAOC,GAAsB;;;UAG5CvJ,GAAKhsZ;sBACQqL,GAClBA,EAAMkyiB,KAA2BjxJ,GAAME,MAA1BF,GAAMuB;;;gBAGPxiZ,GAAYA,EAAMkyiB,KAAqB,OAAdnxJ,GAAU/mU;mBAChCh6E,GACfA,EAAMkyiB,KAA0C,OAAnC,aAAajxJ,GAAMgrJ;;wBAEbtrJ,GAAKhsZ;;EAIvB6jjB,GAAgBvuJ,GAAOC,GAAG;;;SAGvBvJ,GAAK1mU;eACC0mU,GAAK3mU;EAGdy+d,GAAiBxuJ,GAAOC,GAAG;;SAExBvJ,GAAK1mU;;eAEC0mU,GAAK3mU;;EAId0+d,GAAiBzuJ,GAAOC,GAAG;;;;;EAoCjC,MAAMyuJ,GAAah4J,GAAKyvJ,IA2ExB,GA1Ee/6iB,IAUD,IAVE,KACd0+J,EAAI,MACJy2L,EAAK,MACLnkE,EAAK,KACLomI,EAAI,OACJt1W,EAAM,QACNr7B,EAAO,UACP88hB,EAAS,aACTC,EAAY,OACZrjX,GACMngM,EACN,MAAMyjjB,GAAUlnS,EAAAA,EAAAA,QAA8B,OAEvCmnS,EAAUC,IAAennS,EAAAA,EAAAA,aAEzBonS,EAAeC,IAAoBrnS,EAAAA,EAAAA,UAAS,GA4CnD,OA1CAP,EAAAA,EAAAA,YAAU,KAAO,IAAD6nS,EAAAC,EACd,MAAMC,EAA4B,QAAlBF,EAAGL,EAAQ1qb,eAAO,IAAA+qb,GAAe,QAAfC,EAAfD,EAAiBG,qBAAa,IAAAF,OAAf,EAAfA,EAAgC/7J,cAAc,WAEjE,IAAKg8J,EAAY,OAEjB,MAAME,EAAeA,KACnB,MAAM,UAAE53S,GAAc03S,EAGhBG,GADoB73S,EAAYg3S,IAAcA,GAGhDE,IACFG,EAAY,MAGVjtlB,MAAMta,KACJ4nmB,EAAW/8W,iBAAiB,qBAE9BtgL,SAAS9lD,IACuC,IAADujlB,GAlDzD,SAAwBC,EAAuBC,GAC7C,IAAKD,IAAaC,EAAU,OAAO,EACnC,MAAMC,EAAQF,EAASvwR,wBACjB0wR,EAAQF,EAASxwR,wBAEvB,OACEywR,EAAM7lZ,KAAO8lZ,EAAMrvN,OACnBovN,EAAMpvN,MAAQqvN,EAAM9lZ,MACpB6lZ,EAAM5na,IAAM6na,EAAMC,QAClBF,EAAME,OAASD,EAAM7na,IAAM2uQ,GAAKhsZ,CAEpC,EAuCcoljB,CAAejB,EAAQ1qb,QAAUl4J,IACnC8ilB,EAAY,GAA+B,QAA/BS,EAAGvjlB,EAAQmnb,cAAc,cAAM,IAAAo8J,OAAA,EAA5BA,EAA8B/uT,cAC/C,KASJwuT,EAAiBN,EAAY,EAAIY,EAAkB,EAOrD,OAJAH,EAAWx5f,iBAAiB,SAAU05f,GAEtCA,IAEO,KACLF,EAAW3oT,oBAAoB,SAAU6oT,EAAa,CACvD,GACA,CAACpigB,EAAQyhgB,EAAWC,KAGrBtqP,EAAAA,GAAAA,MAAC+pP,GAAe,CAAC5lmB,IAAKommB,EAAQ75d,SAAA,EAC5BqvO,EAAAA,GAAAA,KAACiqP,GAAgB,CAACrG,OAAQ0G,EAAW/kY,MAAO,CAAEs5E,QAAS8rT,MACvD3qP,EAAAA,GAAAA,KAACkqP,GAAa,CAAAv5d,SAAEwtU,GAAOn+F,EAAAA,GAAAA,KAAC0rP,GAAU,IAAMjmZ,KAExCw6J,EAAAA,GAAAA,MAACmqP,GAAc,CAAC7kY,MAAO,CAAEs5E,QAAWyrT,EAAY,EAAIK,GAAgBh6d,SAAA,EAClEqvO,EAAAA,GAAAA,KAAC82F,GAAWJ,GAAE,CAAA/lU,SAAO,OAALonM,QAAK,IAALA,EAAAA,EAAS,MACzBioC,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAAA7wE,SAAU,OAAR85d,QAAQ,IAARA,EAAAA,EAAY,SAGjCzqP,EAAAA,GAAAA,KAACmqP,GAAc,CAAAx5d,SAAEnjE,GAAUwyS,EAAAA,GAAAA,KAAC+pP,GAAY,IAAM7tN,MAC9B,EC5JTyvN,IAAcz1R,EAAAA,EAAAA,eAA+B,CAExD01R,WAAYA,OACZC,WAAYA,IAAM,KAGdC,GAA2E,CAAC,EAGrEC,GAAiBA,KAC5B,MAAM7wa,GAAU6nI,EAAAA,EAAAA,YAAW4oS,IAE3B,IAAKzwa,EACH,MAAM,IAAIt8L,MAAM,4DAElB,OAAOs8L,CAAO,EAGH8wa,GAAyDjljB,IAAmB,IAAlB,SAAE4pF,GAAU5pF,EACjF,MAAOkljB,EAAcC,IAAmB3oS,EAAAA,EAAAA,eAA6BrrU,GAcrE,OACE8nX,EAAAA,GAAAA,KAAC2rP,GAAYt1R,SAAQ,CAACvuT,MAAO,CAAGmklB,eAAcC,kBAAiBN,WAZ9CA,CAACO,EAA4B95f,KAC1C85f,IAAQL,GAAoBK,GAAU95f,EAAK,EAW4Bw5f,WAPzDM,GACXA,EAASL,GAAoBK,GAAU,IAM0Cx7d,SACrFA,GACoB,ECpCrBy7d,GAAYzwJ,GAAOC,GAAG;;wBAEJvJ,GAAKyvJ;;;gBAGbzvJ,GAAKyvJ;EAGfuK,GAAS1wJ,GAAOC,GAAkD;;;;;;;;0BAQ7ClqZ,GAA2B,IAAjBA,EAAM4zN;;aAE9B+sL,GAAKhsZ;;;;0BAIQqsZ,GAAO45J;;uBAEV95J,GAAWx0E;kBAChBtsU,GAASA,EAAM66iB,cAAgB,0CAA4C;;;;;;;EAqG7F,GAnEmBxljB,IAOK,IAPJ,SAClB4pF,EAAQ,YACR67d,EAAc,EAAC,MACfz0R,EAAK,YACL00R,EAAW,cACXC,EAAa,cACbH,GACgBxljB,EAChB,MAAM88iB,GAAYvgS,EAAAA,EAAAA,QAAuB,OAElCqpS,EAAeC,IAAoBrpS,EAAAA,EAAAA,UACxCipS,IAGI,gBAAEN,EAAe,WAAEL,GAAcE,MAGhC7vN,EAAO2wN,IAAYtpS,EAAAA,EAAAA,UAA8C,IAiBxE,OAdAP,EAAAA,EAAAA,YAAU,KACR,QAAoB9qU,IAAhBs0mB,EAA2B,CAAC,IAADM,EACZ,QAAjBA,EAAAjJ,EAAU/jb,eAAO,IAAAgtb,GAAjBA,EACI/9J,cAAc,WACfr1H,OAAO,CAAEc,SAAU,OAAQ92I,IAAK,IAEnCkpa,EAAiBJ,GACjBN,GAAmBA,EAAgBM,GACnC,MAAMtwN,EAAQ2vN,EAAYl7d,EAAS67d,GAA+B96iB,MAAMnyC,MACxEstlB,EAAS3wN,EACX,IAEC,CAACswN,KAGFvsP,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EAEEqvO,EAAAA,GAAAA,KAAC+sP,GAAM,CACLh1R,MAAOA,EACPtyH,KAAMgnZ,EACNvwN,MAAOA,EACPrzS,OAAQ2jgB,EACRlC,UAAWoC,KAGb1sP,EAAAA,GAAAA,KAACosP,GAAS,CAAChomB,IAAKy/lB,EAAUlzd,SACf,OAARA,QAAQ,IAARA,OAAQ,EAARA,EAAU35I,KAAI,CAACo5I,EAAO7yD,KAGnByiS,EAAAA,GAAAA,KAACqsP,GAAM,CACLE,cAAeA,EACfjnV,SAAU/nM,EAAQivhB,EAAc,EAAIjvhB,EAAQivhB,GAAe,EAAI,EAE/Dz2Z,UAAW,IAAGx4H,IAAUivhB,EAAc,SAAW,IAAK77d,SAErDP,GAHI7yD,SASZ,ECjIDyvhB,GAAUrxJ,GAAOC,GAAG;;;;mBAIPvJ,GAAK1mU;;;gBAGR0mU,GAAKhsZ;kBACHgsZ,GAAKE;EAqBvB,GAbuBxrZ,IAA6B,IAA5B,MAAEgxR,EAAK,KAAE2qR,GAAa37iB,EAC5C,OACEk5T,EAAAA,GAAAA,MAAC+sP,GAAO,CAACj3Z,UAAU,UAASplE,SAAA,CACzBonM,IACCioC,EAAAA,GAAAA,KAAA,OAAKz6I,MAAO,CAAEo4E,KAAM,GAAIhtK,UACtBqvO,EAAAA,GAAAA,KAAC82F,GAAWJ,GAAE,CAAC9mJ,MAAO+iJ,GAAMyB,YAAYzjU,SAAEonM,MAG7C2qR,IACO,ECXRuK,GAAmBtxJ,GAAOC,GAAG;gBACnBvJ,GAAK1mU;aACR0mU,GAAKE;;EAIZ3wc,GAAU+5c,GAAOC,GAAsB;eAC9BvJ,GAAK1mU;mBACD0mU,GAAKhsZ;;sBAEFU,IAAA,IAAC,MAAE6oQ,GAAO7oQ,EAAA,OAAU,OAAL6oQ,QAAK,IAALA,EAAAA,EAAS+iJ,GAAME,KAAK;wBACjCF,GAAM4vJ;EAGxB2K,GAAYvxJ,GAAOC,GAAG;gBACZvJ,GAAK1mU;mBACF0mU,GAAKhsZ;;SAEfgsZ,GAAK1mU;;;kBAGI0mU,GAAKE;;EAIR,SAAS46J,GAAOp9iB,GAMpB,IANqB,SAC9B4gF,EAAQ,MACRonM,EAAK,KACL2qR,EAAI,KACJpvhB,EAAI,WACJq8K,GACM5/L,EACN,OACEkwT,EAAAA,GAAAA,MAACgtP,GAAgB,CAACl3Z,UAAU,UAASplE,SAAA,EACnCqvO,EAAAA,GAAAA,KAACotP,GAAc,CAACr1R,MAAOA,EAAO2qR,KAAMA,KACpC1iP,EAAAA,GAAAA,KAACp+W,GAAO,CAACguT,MAAOjgE,EAAWh/G,SAAEA,MAC1Br9D,IACD0sS,EAAAA,GAAAA,KAACktP,GAAS,CAAAv8d,UAERqvO,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAAA7wE,SAAEr9D,QAK7B,CC5DA,MAAM2iY,GAAe,CACnBn/O,MAAOu7O,GAAK0J,GACZt0N,OAAQ4qN,GAAK0J,GACblG,aAAcxD,GAAK1mU,EACnBssO,gBAAiB06F,GAAM4vJ,YACvBn6S,WAAY,gBAEZilT,aAAc,SACdC,eAAgB,SAChBxhS,QAAS,OACTyhS,WAAY,SACZC,YAAa,UAaf,IACEl5f,QAAS2hW,GACTz0P,MAAO,IACFy0P,GACHn/O,MAAOu7O,GAAK3mU,EACZ+7G,OAAQ4qN,GAAK3mU,GAEfmwU,MAAO,IACF5F,GACHn/O,MAAOu7O,GAAK0J,GACZt0N,OAAQ4qN,GAAK0J,IAEf0xJ,IAAK,IACAx3J,GACHn/O,MAAiB,EAAVu7O,GAAK0J,GACZt0N,OAAkB,EAAV4qN,GAAK0J,IAEfh1c,MAAO,CACL6oT,MAAO+iJ,GAAMO,YACb3rN,SAAU,GACV0B,UAAW,SACXy1D,WAAY,MACZk4J,cAAe,YACf9qI,QAAS,SAEX4hS,WAAY,CACV99S,MAAO+iJ,GAAMO,YACb3rN,SAAU,GACV0B,UAAW,SACXy1D,WAAY,MACZk4J,cAAe,YACf9qI,QAAS,SAEX42R,KAAM,CACJiL,WAAY,WC1DD,SAASC,GAAQ5tmB,GAAwC,IAAhBgzc,EAAKlyc,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAC3D,IAAKd,EAAI,OAAO4yc,GAAMK,QACtB,MAAMp9W,EAASm9W,EAAQ66J,GAAkBC,GACzC,GAAIA,GAAW9tmB,GACb,OAAO61F,EAAO71F,GACT,GACHu9E,GACEA,IAASwwhB,GAAMhtmB,SAAQw8E,GAAQ,GACnC,MAAMo5B,EAAIq3f,GAAWzwhB,IACfp4C,EAAI4okB,GAAMxwhB,IAGhB,OAFAuwhB,GAAW9tmB,GAAMmlC,EACjB0okB,GAAgB7tmB,GAAM22G,EACfq8V,EAAQr8V,EAAIxxE,CACrB,CACF,CAEA,MAAM2okB,GAAqC,CAAC,EACtCD,GAA0C,CAAC,EAE3CE,GAAQ,CAACn7J,GAAMuC,SAAUvC,GAAMW,OAC/By6J,GAAa,CAACp7J,GAAMuC,SAAUvC,GAAMW,OAC1C,IAAIh2X,IAAS,ECbD0whB,GAAW,SAAXA,GAAW,OAAXA,EAAW,kBAAXA,EAAW,UAAXA,CAAW,MAmBR,SAASC,GAAMnnjB,GAYb,IAZc,MAC7BhgD,EAAK,KACLgI,EAAOk/lB,GAAYtqjB,IAAG,KACtB++iB,EAAI,OACJrqd,EAAM,WACN81d,EAAU,MACVtyJ,GAAQ,EAAK,IACb4xJ,GAAM,EAAK,MACXjsZ,GAAQ,EAAK,OACb/B,GAAS,EAAK,KACd2pZ,EAAI,OACJgF,GACYrnjB,EACZ,MAAMw+K,EAAQ/jB,EACVu1P,GAAOv1P,MACPisZ,EACA12J,GAAO02J,IACP5xJ,EACA9E,GAAO8E,MACP9E,GAAAA,QACEs3J,EAAaxyJ,GAAS4xJ,EAAM12J,GAAO22J,WAAa32J,GAAOhwc,MACvDivS,EAAQv2F,EACV,CAAEo2P,aAActwO,EAAMswO,cACtB,CAAEA,aAAetwO,EAAMzO,MAAmB,GAExCw3Y,EAAaV,GAAc,OAANQ,QAAM,IAANA,EAAAA,EAAU,MAAOA,GAEtCr0hB,EAAQ,OAAJqvhB,QAAI,IAAJA,EAAAA,EAAQkF,EAElB,OACEtuP,EAAAA,GAAAA,KAAA,OACEjqK,UAAU,SACVwvB,MAAO,IACFA,KACA4oY,KACAn4T,EACHiiE,gBAAiBl+R,EAAEi5X,MACnBu7J,eAAgB,QAChBC,mBAAoB,SACpBC,iBAAkB,YAClBC,gBAAuB,OAANr2d,QAAM,IAANA,GAAAA,EAAQ7mG,QACrB,QAAc,OAAN6mG,QAAM,IAANA,OAAM,EAANA,EAAQ7mG,iBAChBt5C,GAGJy4I,SAED+xd,EACiB,kBAATA,GACL1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKs2R,EAAMn9X,MAAOwxO,GAAO2rJ,OAE9BA,IAGK,OAANrqd,QAAM,IAANA,GAAAA,EAAQ7mG,WACPwuU,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CACdk4T,MAAO71O,EAAE+4X,KAETvtO,MAAO,IACF8oY,GACH19d,SAED0H,EAAS,G3UzCa24W,E2UyCS34W,I3UvCvC24W,EAAQn/d,WAAa,IAAIsmH,OAAO,IAAM64W,EAAQl/d,UAAY,IAAIqmH,OAAO,IACtEj1G,gB2UsCyD,OAALn8B,QAAK,IAALA,EAAAA,EAAS,U3UzC1D,IAA4Biqf,C2U+CnC,CC/EO,SAAS29G,GAAWl8hB,GACzB,OAAOA,GAAQA,EAAK2rC,eAAe,YACrC,CCRe,SAASwwf,GAAW7njB,GAIb,IAJc,QAClC8njB,EAAO,MACPhzJ,EAAK,QACL8mJ,GACiB57iB,EACjB,OACEi5T,EAAAA,GAAAA,KAAA,OAAKz6I,MAAO,CAAEupY,cAAe,MAAOhjS,QAAS,QAAUnC,QAASg5R,EAAQhyd,SAC9D,OAAPk+d,QAAO,IAAPA,OAAO,EAAPA,EAAS73mB,KAAI,CAACq5G,EAAG7xD,KAChBwhU,EAAAA,GAAAA,KAACkuP,GAAM,CACL1sZ,OAAQq6P,EACRA,MAAOA,EACPsyJ,WAAY,CAEVtvT,QAAS,EACTK,OAAQ,GAAK1gQ,EACbkvM,WAAkB,IAANlvM,EAAU,IAAMq9Z,EAAQxJ,GAAKhsZ,EAAIgsZ,GAAK1mU,GAClDoje,UAAW,sCAGb12d,OAAQhoC,EACRtpG,MAAM,MACNgI,KAAM4/lB,GAAWt+f,GAAK49f,GAAYtqjB,IAAMsqjB,GAAYxmJ,SAH9C,OAADp3W,QAAC,IAADA,OAAC,EAADA,EAAGrwG,OAQlB,CC3BA,MAAMgvmB,GAAOrzJ,GAAOC,GAAG;;;;aAIVvJ,GAAK1mU;QACV0mU,GAAK1mU;;;oBAGO0mU,GAAK1mU;;;EAKV,SAASsje,GAAelojB,GAAyC,IAAxC,KAAE27iB,EAAI,MAAE3qR,GAA6BhxR,EAC3E,OACEi5T,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEsvO,EAAAA,GAAAA,MAAC+uP,GAAI,CAAAr+d,SAAA,EACHqvO,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAOU,KACb1iP,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAEonM,QAI1B,CCzBe,SAASm3R,GACtBngmB,EACA/O,EACAyO,GAEA,MAAM4gV,EAAYszB,IAAa9zT,GjKyFIsgjB,EAACtgjB,EAAkB9/C,IACtDohc,GAAc/P,UAAU2R,aAAar5G,OAAO3pV,EAA5Cohc,CAAkDthZ,GAAO/sB,KiKzFvDqtkB,CAAsBtgjB,EAAO9/C,KAEzBwwC,EAAa,OAAT8vS,QAAS,IAATA,OAAS,EAATA,EAAWrsT,MAAMi7V,GAAaA,EAASj+X,KAAOA,KAElD,KAAE8hC,EAAI,UAAEk9Z,EAAS,MAAEp6Z,EAAK,QAAE+3X,GAAYw1C,GAC1C,CACEnyc,KACA+O,QAEF,CAAEN,KAAMA,IAASzO,KAAQu/C,IAG3B,OAAIA,EACK,CACLzd,KAAMyd,EACNy/Y,WAAW,EACXp6Z,WAAO1sC,EACPyka,QAASA,QAIN,CAAE76X,KAAMA,EAAWk9Z,YAAWp6Z,QAAO+3X,UAC9C,CC7BA,MAAMyvM,GAAYzwJ,GAAOC,GAAG;;;SAGnBvJ,GAAK1mU;mBACK0mU,GAAKhsZ;;aAEXgsZ,GAAKhsZ,OAAOgsZ,GAAKE;;;uBAGPC,GAAWx0E;;;EAK5BsV,GAAOqoE,GAAOC,GAAG;;uBAEApJ,GAAWu1J;;;EAuBlC,GAdoBhhjB,IAAiC,IAAhC,OAAEsxF,EAAM,QAAEhjF,GAAgBtO,EAC7C,OACEi5T,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEsvO,EAAAA,GAAAA,MAACmsP,GAAS,CAAAz7d,SAAA,EACRqvO,EAAAA,GAAAA,KAACkuP,GAAM,CAAC71d,OAAQA,EAAQmpE,OAAK,KAC7By+J,EAAAA,GAAAA,MAACqzB,GAAI,CAAA3iQ,SAAA,EACHqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAE0rN,GAAWhkN,MAC7B2nO,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAAA7wE,SAAS,OAAPt7E,QAAO,IAAPA,EAAAA,EAAW,YAGjC,ECnCD+5iB,GAAmBzzJ,GAAOC,GAAmB;aACtCvJ,GAAKhsZ;sBACKqL,GAAUA,EAAM03iB,KAAKp2J;mBACzBX,GAAKhsZ;WACbssZ,GAAME;;;kBAGCJ,GAAUpsZ;;;;;aAKfgsZ,GAAK1mU;UACR0mU,GAAKhsZ;kBACGgsZ,GAAK1mU;;0CAEmBgnU,GAAME;;;cAGlCJ,GAAUpsZ;;;EAwBxB,GAdgBU,IAA2C,IAA1C,KAAExiB,EAAI,OAAE0mE,EAAM,KAAEhrG,GAAoB8mD,EACnD,MAAMqijB,EAAOwE,GAAc,OAAN3igB,QAAM,IAANA,OAAM,EAANA,EAAQjrG,IAC7B,OACEigX,EAAAA,GAAAA,MAAA,OAAAtvO,SAAA,EACEqvO,EAAAA,GAAAA,KAACovP,GAAgB,CAAChG,KAAMA,EAAKz4d,UAC3BqvO,EAAAA,GAAAA,KAAC82F,GAAWJ,GAAE,CAAA/lU,UACZqvO,EAAAA,GAAAA,KAAA,QAAMhkE,wBAAyB,CAAE+a,OAAQxyR,SAG5C0mE,IAAU+0Q,EAAAA,GAAAA,KAACqvP,GAAW,CAACh3d,OAAQptC,EAAQ51C,QAASp1D,MAC7C,ECpCH,IAAKqvmB,GAAa,SAAbA,GAAa,OAAbA,EAAa,kBAAbA,EAAa,kBAAbA,EAAa,cAAbA,CAAa,MAWlB,MAAMC,IAAer5R,EAAAA,EAAAA,eAAiC,CAC3Ds5R,OAAQ,GACRC,SAAUA,SCpBCC,GAAWA,KACtB,MAAM,SAAED,IAAa1sS,EAAAA,EAAAA,YAAWwsS,IAChC,OAAOE,CAAQ,ECaF,SAASE,GAAgBniiB,GACtC,MAAMiiiB,EAAWC,KACXz5P,EAAWR,KAEX4lO,EAAUt7P,UACdttS,GAAMnD,QACFk+B,EAAQoiiB,WAAWpiiB,EAAQoiiB,YAC/B35P,GAAU,GACVw5P,EAAS,CACP5mgB,QAAQ,EACRkvO,MAAOvqQ,EAAQqiiB,kBACfztkB,QAASorC,EAAQsiiB,qBACjB,EAGJ,MAAO,SAAAC,EAAAC,EAAA,OACLv9jB,GAAMmxjB,KACc,QADVmM,EACRviiB,EAAQyiiB,kBAAU,IAAAF,EAAAA,EAAI,gBACF,QADiBC,EACrCxiiB,EAAQ0iiB,oBAAY,IAAAF,EAAAA,EAAI,GACxB,CACE,CAAEjpmB,MAAO,KAAMrD,OAAQ+uC,GAAMnD,OAC7B,CACEvoC,MAAO,MACPgI,KAAM,UACNrL,OAAQ23kB,IAGb,CACL,CCTA,SAAS80B,GAAiB95f,GACxB,OAAQA,EAAQ8oC,KACd,KAAK+yO,GAAgBhmB,MACnB,OAAOkyP,GAAMe,MAAMM,SACrB,KAAKvtO,GAAgB8L,OACnB,OAAOogO,GAAMe,MAAMK,UACrB,QACE,OAAOpB,GAAMe,MAAMI,YAEzB,CAEA,MAAM6Q,GAAez0J,GAAO00J,MAAM;;;;EAiKlC,GA1JiCtpjB,IAA6B,IAADupjB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAA3B,KAACrxlB,GAAqBwnC,EAEtD,MAAM,QAAEn/B,EAAO,WAAEiqb,GAAep7F,MAIxB30U,KAAMslW,GAAgB8nO,GAC5BnsO,GAAa6K,aACbikE,EACAjqb,IAAYiplB,GAAUvkG,SAIjBpiI,GAAqByzE,KAEtBmzJ,EAAyBnB,GAAgB,CAC7C7tkB,KAAM+va,EACNo+J,WAAY,0BACZC,aACE,mFACFN,UAAWA,IAAM1lO,EAAkB2nE,GACnCi+J,oBACE,6GACFD,kBAAmB,2BAGjB,WAACjE,GAAcG,KAInBH,EACErslB,GAEAygW,EAAAA,GAAAA,KAAC2jP,GAAM,CACLvB,WAAW,cACX5gZ,OAAK,EACLu2H,MAAM,UACN4qR,QAASA,IAAMmO,OAInB,MAAM9of,EAAiB,OAAXo/Q,QAAW,IAAXA,GAAyB,QAAdkpO,EAAXlpO,EAAajO,oBAAY,IAAAm3O,OAAd,EAAXA,EAA2BttkB,MAAMqtE,GAAMs+f,GAAWt+f,KAExDlrE,EAAI0sV,KAAiB,OAAXuV,QAAW,IAAXA,OAAW,EAAXA,EAAa7zW,MAAM2rB,WAAYwqT,IACzC3wI,EAAQ,OAAD5zL,QAAC,IAADA,GAAAA,EAAG2wG,SAAS+7O,OAAQtuT,IAAI,EAAG,QACpC,GACAiwT,GAAc4T,EAAY7zW,OAExBw9kB,GAAoB,OAAX3pO,QAAW,IAAXA,OAAW,EAAXA,EAAa58W,UAAWknW,GAAqB4I,UAGrDgQ,GAA4BozE,KAE7BszJ,EAAgCrB,GAAgB,CACpD7tkB,KAAM+va,EACNo+J,WAAY,uCACZC,aAAc,mEACdN,UAAWA,IAAMtlO,EAAyBunE,GAC1Ci+J,oBAAqB,2DACrBD,kBAAmB,4BAKR,IAADoB,EAAAC,EAAZ,OAAIH,GACFnF,EACIrslB,GAEAygW,EAAAA,GAAAA,KAAC2jP,GAAM,CACHvB,WAAW,cACX5gZ,OAAK,EACLu2H,MAAM,UACN4qR,QAASA,IAAMqO,QAIrB/wP,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAEy2P,EAAYrvD,SAC5BioC,EAAAA,GAAAA,KAAC82F,GAAWL,GAAE,CAAC7mJ,MAAO+iJ,GAAMQ,YAAYxiU,SAAEooF,MAC5B,OAAXquK,QAAW,IAAXA,GAAwB,QAAb6pO,EAAX7pO,EAAahlN,mBAAW,IAAA6ub,IAAxBA,EAA0BlwmB,UAC3Bk/W,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,KACd77F,EAAAA,GAAAA,KAACmxP,GAAO,CACN5skB,KAA6B,QAAzB2skB,EAAE9pO,EAAYhlN,mBAAW,IAAA8ub,EAAAA,EAAI,GACjCjmgB,OAAQ+c,EACR/nH,KAAMszX,GAAkB6T,EAAY92T,mBAS9C2vS,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAC,qCACfsvO,EAAAA,GAAAA,MAAA,OAAK16I,MAAO,CAAEumG,QAAS,OAAQwhS,eAAgB,iBAAkB38d,SAAA,EAC/DqvO,EAAAA,GAAAA,KAAC82F,GAAWL,GAAE,CAAA9lU,SAAE0rN,GAAWr0O,MAC3Bg4P,EAAAA,GAAAA,KAAC4uP,GAAW,CAACC,QAAoB,OAAXznO,QAAW,IAAXA,OAAW,EAAXA,EAAajO,kBAIpCiO,IACCnnB,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEsvO,EAAAA,GAAAA,MAACktP,GAAO,CAACp1R,MAAM,eAAcpnM,SAAA,EAC3BqvO,EAAAA,GAAAA,KAAC28F,GAAO,KACR38F,EAAAA,GAAAA,KAACivP,GAAe,CACdl3R,MAAO86C,GAAsB,OAAXuU,QAAW,IAAXA,OAAW,EAAXA,EAAa7zW,OAC/BmvkB,KAAMtE,GAAMe,MAAOG,eAErBt/O,EAAAA,GAAAA,KAACivP,GAAe,CACdl3R,MAAO,GAAGo7C,GAAsB,OAAXiU,QAAW,IAAXA,OAAW,EAAXA,EAAa7zW,YAAa4/V,GAClC,OAAXiU,QAAW,IAAXA,OAAW,EAAXA,EAAa5zW,OAEfkvkB,KAAMtE,GAAMe,MAAME,YAGpBr/O,EAAAA,GAAAA,KAACivP,GAAe,CACdl3R,MAAO,GAAG07C,GAAyB,OAAX2T,QAAW,IAAXA,OAAW,EAAXA,EAAa93R,YACrCozf,KAAMtE,GAAMe,MAAMC,UAEpBp/O,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,SACM,OAAH3oB,QAAG,IAAHA,GAAY,QAATuof,EAAHvof,EAAK4rE,eAAO,IAAA28a,OAAT,EAAHA,EAAcv5mB,KAAI,CAACq/G,EAAS94B,KAC3ByiS,EAAAA,GAAAA,KAACivP,GAAe,CAEdvM,KAAMyN,GAAiB95f,GACvB0hO,MAAO1hO,EAAQvuF,OAFVy1D,QAMXyiS,EAAAA,GAAAA,KAAC28F,GAAO,QAIR38F,EAAAA,GAAAA,KAACowP,GAAY,CACX7qY,MAAO,CACLtmI,QAASozW,GAAK1mU,EACdkqU,aAAcxD,GAAK1mU,EACnBoqU,OAAQ,aAAapD,GAAM4vJ,cAC3B6O,UAAW,cAEbr5R,MAAM,MACNjhH,MAAM,OACN2wB,OAAO,QACP+zK,QAAQ,OACRpvF,IAAK,4FAAgH,QAAhHokS,EAA4FppO,EAAY93R,gBAAQ,IAAAkhgB,OAAA,EAApBA,EAAsB18O,cAAkC,QAAxB28O,EAAIrpO,EAAY93R,gBAAQ,IAAAmhgB,OAAA,EAApBA,EAAsBxngB,eAAmC,QAAxByngB,EAAItpO,EAAY93R,gBAAQ,IAAAohgB,OAAA,EAApBA,EAAsBj1V,OAA2B,QAAxBk1V,EAAIvpO,EAAY93R,gBAAQ,IAAAqhgB,OAAA,EAApBA,EAAsBpub,SAA6B,QAAzBqub,EAAKxpO,EAAY93R,gBAAQ,IAAAshgB,OAAA,EAApBA,EAAsBpub,iBAKnQ,EC1MQ,SAAS6ub,GAAgBtimB,EAAoByzB,GAC1D,MAAM,KAAEV,EAAI,UAAEk9Z,EAAS,MAAEp6Z,EAAK,QAAE+3X,GAAYu1C,GAAqBnjc,EAAM,CACrEN,MAAO+zB,IAGT,MAAO,CAAEV,KAAMA,EAAak9Z,YAAWp6Z,QAAO+3X,UAChD,CCyBO,MAAMliC,GAAaA,CAAC17U,EAAqByjB,IAC9CzjB,EAAE+zU,OAAStwT,EAAEswT,QAAU,EAAI,EAEhBw+O,GAAqBA,CAACvyjB,EAAqByjB,IACtDzjB,EAAEo9U,WAAa35T,EAAE25T,WAAap9U,EAAEo9U,UAAY35T,EAAE25T,WAAa,EAAI,ECIjE,GApC0B3sV,IACxB,MAAO+hkB,EAAcC,IAAmBjuS,EAAAA,EAAAA,WAAS,GAC3CkuS,GAAoBnuS,EAAAA,EAAAA,QAAe,GA+BzC,OA7BAN,EAAAA,EAAAA,YAAU,KACR,MAAM0uS,EAAel6mB,IACf+qC,OAAO83S,SAAW,GAAK7iV,EAAEq3T,OAAS,GAEpC4iT,EAAkB3xb,QAAUjiI,KAAK+6J,IAAIphN,EAAEq3T,QACnC4iT,EAAkB3xb,QAbZ,KAaoCyxb,IAC5CC,GAAgB,GAChBhikB,IAEAhM,YAAW,KACTgukB,GAAgB,GAChBC,EAAkB3xb,QAAU,CAAC,GAC5B,OAML2xb,EAAkB3xb,QAAU,CAC9B,EAKF,OAFAv9I,OAAOgvE,iBAAiB,QAASmggB,GAE1B,KACLnvkB,OAAO6/Q,oBAAoB,QAASsvT,EAAY,CACjD,GACA,CAAClikB,IAEG+hkB,CAAY,ECnCfnF,GAAYzwJ,GAAOC,GAAwB;;;aAGnClqZ,GAAWA,EAAM8vJ,MAAQ,UAAY,GAAG6wP,GAAKE,QAAQF,GAAK1mU;sBACjDj6E,IAAK,IAAAigjB,EAAA,OAAgB,QAAhBA,EAAKjgjB,EAAMk+P,aAAK,IAAA+hT,EAAAA,EAAIh/J,GAAMyB,WAAW;WACtDzB,GAAME;;;;;;;EAqBjB,GARc9rZ,IAA8B,IAA7B,MAAEhgD,EAAK,MAAE6oT,GAAc7oQ,EACpC,OACEi5T,EAAAA,GAAAA,KAACosP,GAAS,CAACx8S,MAAOA,EAAOpuG,OAAQz6M,EAAM4pI,UACrCqvO,EAAAA,GAAAA,KAAA,UAAArvO,SAAS5pI,KACC,ECXVqlmB,GAAYzwJ,GAAOC,GAAG;uBACLpJ,GAAWx0E;;;EAK5B4zO,GAAgBj2J,GAAOC,GAAG;;;cAGlBvJ,GAAK1mU;;;;eAIJ0mU,GAAKE;;uBAEGC,GAAWx0E;;;;EAM5B6zO,GAAoBl2J,GAAOC,GAAsB;sBAChClqZ,GAAUA,EAAMk+P;mBACpByiJ,GAAKhsZ;EAOlByrjB,GAAiBn2J,GAAOC,GAAG;;;aAGpBvJ,GAAKhsZ;;;;;EAOZ0rjB,GAAMp2J,GAAOC,GAAG;;;;;EAgChBo2J,GAAWjrjB,IAQK,IARJ,KAChB27iB,EAAI,MACJ3qR,EAAK,SACL0yR,EAAQ,MACR76S,EAAQ+iJ,GAAMyB,YAAW,KACzBn4V,EAAI,MACJ2+B,EAAK,QACL+nd,GACc57iB,EACd,MAAMkvT,EAAWR,KACjB,OACEuK,EAAAA,GAAAA,KAAC6xP,GAAiB,CAACloS,QAASA,IAAMssC,EAASh6P,GAAQ2zM,MAAOA,EAAMj/K,UAC9DsvO,EAAAA,GAAAA,MAAC6xP,GAAc,CAACnoS,QAASg5R,EAAQhyd,SAAA,EAC/BsvO,EAAAA,GAAAA,MAAC8xP,GAAG,CAAAphe,SAAA,EACFqvO,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAOU,EAAM9yS,MAAO+iJ,GAAME,WAC5Bj4T,GAASA,EAAQ,KAAMolO,EAAAA,GAAAA,KAACiyP,GAAK,CAAClrmB,MAAO6zI,EAAM17F,iBAEjD8gU,EAAAA,GAAAA,KAAC28F,GAAO,CAACn7P,OAAK,KAEdw+J,EAAAA,GAAAA,KAAC82F,GAAWJ,GAAE,CAAC9mJ,MAAO+iJ,GAAME,MAAMliU,SAAEonM,KAEpCioC,EAAAA,GAAAA,KAAC+xP,GAAG,CAAAphe,UACFqvO,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAACouG,MAAO+iJ,GAAME,MAAMliU,SAAE85d,UAGzB,EAkBxB,GAduB16iB,IAAuC,IAAtC,MAAEsiD,GAA8BtiD,EACtD,MAAM,EAAEgqB,GAAMquR,KACd,OACE6X,EAAAA,GAAAA,MAACmsP,GAAS,CAAAz7d,SAAA,EACRqvO,EAAAA,GAAAA,KAACotP,GAAc,CAACr1R,MAAOh+P,EAAE,gBACzBimS,EAAAA,GAAAA,KAAC4xP,GAAa,CAAAjhe,SACXt+B,EAAMr7G,KAAI,CAACy7E,EAAM8K,KAChByiS,EAAAA,GAAAA,KAACgyP,GAAQ,IAAiBv/hB,GAAX8K,SAGT,EC1GV20hB,GAAoBv2J,GAAOC,GAAiC;mBAC9ClqZ,GAChBA,EAAMygjB,gBAAkB,aAAax/J,GAAM4vJ,cAAgB;;EAIhD,SAAS6P,GAAQrrjB,GASb,IATc,MAC/BgxR,EAAK,SACL0yR,EAAQ,QACRp1iB,EAAO,QACPstiB,EAAO,KACPD,EAAI,UACJ2P,EAAS,cACTC,EAAa,UACbC,GACcxrjB,EACd,OACEi5T,EAAAA,GAAAA,KAACkyP,GAAiB,CAACvoS,QAASg5R,EAASwP,kBAAmBG,EAAc3he,UACpEsvO,EAAAA,GAAAA,MAAA,OAAK16I,MAAOwxO,GAAOnwZ,QAAQ+pF,SAAA,CACxB+xd,IAAQ1iP,EAAAA,GAAAA,KAAA,OAAKz6I,MAAOwxO,GAAO2rJ,KAAK/xd,SAAE+xd,KACnCziP,EAAAA,GAAAA,MAAA,OAAK16I,MAAO,CAAEo4E,KAAM,EAAGlwD,YAAa4kN,GAAK1mU,GAAIgF,SAAA,CAC1C85d,IAAYzqP,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAE85d,IAC9B1yR,IAASioC,EAAAA,GAAAA,KAAC82F,GAAW3kD,OAAM,CAAAxhR,SAAEonM,IAC7B1iR,IAAW2qT,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAAA7wE,SAAEt7E,OAEhCg9iB,IAAaryP,EAAAA,GAAAA,KAAA,OAAKz6I,MAAOwxO,GAAOs7J,UAAU1he,SAAE0he,IAC3C1P,IAAY4P,IACZvyP,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMhgP,WAAW8gP,QAAStvS,MAAO+iJ,GAAMQ,kBAK9D,CAEA,MAAM4D,GAAS,CACb2rJ,KAAM,CACJj1W,YAAa4kN,GAAKhsZ,GAEpBgsjB,UAAW,CACT5kX,YAAa,OAEf7mM,QAAS,CACP2mjB,WAAY,SACZtugB,QAAS,GAAGozW,GAAKhsZ,QACjByojB,cAAe,MACfhjS,QAAS,OACT0mS,SAAU,SCpDC,SAASC,GAAO1rjB,GASD,IATK,KACjCjlB,EAAI,MACJi2S,EAAK,SACL0yR,EAAQ,QACRp1iB,EAAO,KACPqtiB,EAAI,UACJ2P,EAAS,gBACTK,EAAe,UACfH,GACyBxrjB,EACzB,OACEi5T,EAAAA,GAAAA,KAAA,OAAArvO,SACO,OAAJ7uG,QAAI,IAAJA,OAAI,EAAJA,EAAM9qC,KAAI,CAACy7E,EAAS8K,KACnByiS,EAAAA,GAAAA,KAACoyP,GAAQ,CAEP3/hB,KAAMA,EACNiwhB,KAAU,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAOjwhB,GACb4/hB,UAAoB,OAATA,QAAS,IAATA,OAAS,EAATA,EAAY5/hB,GACvBslQ,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAQtlQ,GACfg4hB,SAAkB,OAARA,QAAQ,IAARA,OAAQ,EAARA,EAAWh4hB,GACrBpd,QAAgB,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAAUod,GACnBkwhB,QAAS+P,EAAkB,IAAqB,OAAfA,QAAe,IAAfA,OAAe,EAAfA,EAAkBjgiB,QAAQv6E,EAC3Do6mB,cAAe/0hB,EAAQz7C,EAAK/gC,OAAS,EACrCwxmB,UAAWA,GATN,GAAGh1hB,KAAS1/B,KAAKqxF,MAAsB,IAAhBrxF,KAAK+lC,gBAc3C,CCtCO,MAED+uhB,GAAUrV,EAAS;;;;;;;;;;EAYnBsV,GAAgBj3J,GAAOC,GAAsB;oBAC/B+2J;;sBAEEhgK,GAAM4vJ;mBACTlwJ,GAAKE;YACZF,GAAKhsZ;WACK,EAAXgsZ,GAAKyvJ;;;IAGXpwiB,GAAUywiB,EAAG;uBACmB,IAAdzwiB,EAAMisN;0BACHk1V;;EASX,SAASC,GAAY/rjB,GAGb,IAHc,MACnC42N,EAAQ,EAAC,UACTo1V,EAAY,SACMhsjB,EAClB,OAAOi5T,EAAAA,GAAAA,KAAC4yP,GAAa,CAACj1V,MAAOA,EAAOo1V,UAAWA,GACjD,CCvCA,SAASC,KAAiD,IAArCh3jB,EAAWl7C,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAG,EAAGm7C,EAAWn7C,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAG,IAClD,OAAOk7C,EAAM6B,KAAK+lC,UAAY3nC,EAAMD,EACtC,CAEA,MAAM22jB,GAAUrV,EAAS;;;;;;;;;;EAgBnB2V,GAAat3J,GAAOC,GAAyB;;;;;;;oBAO/B+2J;;IAEfjhjB,GAAUywiB,EAAG;uBACmB,IAAdzwiB,EAAMisN;0BACHk1V;;EAIpBK,GAAev3J,GAAOC,GAAG;;mBAEZvJ,GAAK1mU;sBACFgnU,GAAM4vJ;YAChBlwJ,GAAKyvJ;WACNzvJ,GAAKyvJ;;YAEJzvJ,GAAK1mU;EAGXwne,GAAgBx3J,GAAOC,GAAG;;;;;;EAQ1Bw3J,GAAiBz3J,GAAOC,GAAc;;IAEvClqZ,GAAUywiB,EAAG;aACLzwiB,EAAMolK;;;mBAGAu7O,GAAK1mU;sBACFgnU,GAAM4vJ;YAChBlwJ,GAAK3mU;YACL2mU,GAAK1mU;EAGX0ne,GAAc13J,GAAOC,GAAc;;IAEpClqZ,GAAUywiB,EAAG;aACLzwiB,EAAMolK;;mBAEAu7O,GAAKE;sBACFI,GAAM4vJ;YAChBlwJ,GAAKhsZ;EAOF,SAASitjB,GAAevsjB,GAAuC,IAAtC,MAAE42N,EAAQ,GAAyB52N,EACzE,OACEk5T,EAAAA,GAAAA,MAACgzP,GAAU,CAACt1V,MAAOA,EAAMhtI,SAAA,EACvBqvO,EAAAA,GAAAA,KAACkzP,GAAY,KACbjzP,EAAAA,GAAAA,MAACkzP,GAAa,CAAAxie,SAAA,EACZqvO,EAAAA,GAAAA,KAACozP,GAAc,CAACt8Y,MAAOk8Y,GAAY,OACnChzP,EAAAA,GAAAA,KAACqzP,GAAW,CAACv8Y,MAAOk8Y,GAAY,GAAI,WAI5C,CCxFe,SAASO,GAAcxsjB,GAAoC,IAAnC,OAAEhmD,EAAS,GAAqBgmD,EACrE,OACEk5T,EAAAA,GAAAA,MAAA,OACE16I,MAAO,CACL+nB,UAAW,GAAG+kN,GAAKhsZ,MACnBmnM,aAAc,GAAG6kN,GAAK1mU,MACtB1sC,QAAS,GAAGozW,GAAK1mU,OACjBgF,SAAA,EAEFqvO,EAAAA,GAAAA,KAAC8yP,GAAY,CAACn1V,MAAO,EAAGo1V,UAAU,WAClC/yP,EAAAA,GAAAA,KAACwzP,GAAW,CAACzymB,OAAQA,MAG3B,CAKO,SAASyymB,GAAWzjjB,GAAoC,IAAnC,OAAEhvD,EAAS,GAAqBgvD,EAC1D,OACEkwT,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC28F,GAAO,IACPl/b,MAAM1c,GACJm2M,KAAK,GACLlgN,KAAI,CAAC+nD,EAAGP,KACPwhU,EAAAA,GAAAA,KAACszP,GAAe,CAAS31V,MAAO,GAAMn/N,GAAhBA,MAG1BwhU,EAAAA,GAAAA,KAAC28F,GAAO,MAGd,CC1Be,SAAS82J,GAAW/hjB,GACjC,OACEuuT,EAAAA,GAAAA,MAAA,OAAK16I,MAAOwxO,GAAOloZ,MAAM8hF,SAAA,EACvBqvO,EAAAA,GAAAA,KAAA,OAAK5zC,IAAK16Q,EAAMgijB,OAASC,GAAO1lV,MAAO35K,QAASixH,MAAOwxO,GAAO68J,QAC9D5zP,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAEj/E,EAAMqmR,OAAS,OAGvC,CAEA,MAAMg/H,GAAS,CACbloZ,MAAO,CACLi9Q,QAAS,OACTgjS,cAAe,SACf+E,UAAW,SACXvG,eAAgB,SAChBwG,eAAgB,MAChB7qX,UAAW,SACXukX,YAAa,SACbD,WAAY,SACZ53J,aAAc,SACd7+O,MAAO,QAET88Y,KAAM,CACJ98Y,MAAqB,EAAXu7O,GAAKyvJ,IAAR,KACPr6W,OAAsB,EAAX4qN,GAAKyvJ,IAAR,KACR6L,WAAY,SACZpgX,OAAQ8kN,GAAK3mU,IChBF,SAASqoe,GAAWhtjB,GAUrB,IAVyB,MACrCgxR,EAAK,KACLj2S,EAAI,SACJ4/M,EAAQ,UACRsyX,EAAS,UACTh1K,EAAS,OACTj+b,EAAS,EAAC,gBACV2xmB,EAAe,MACfzkV,EAAK,KACL36M,GACSvsB,EACT,OAAIi4Y,GAAc/wK,GAAc,OAAJnsP,QAAI,IAAJA,GAAAA,EAAM/gC,QAEhCi/W,EAAAA,GAAAA,KAACmtP,GAAO,CACNp1R,MAAOA,EACP2qR,KAAMsR,EACNrkX,WAAYgjN,GAAME,MAClBv/X,KAAMA,EAAKq9D,SAEVquT,GACCh/E,EAAAA,GAAAA,KAACwzP,GAAW,CAACzymB,OAAQA,IACF,KAAb,OAAJ+gC,QAAI,IAAJA,OAAI,EAAJA,EAAM/gC,SACRi/W,EAAAA,GAAAA,KAACyzP,GAAU,CAACC,MAAY,OAALzlV,QAAK,IAALA,EAAAA,EAAS,MAE5B+xF,EAAAA,GAAAA,KAACyyP,GAAO,CAAC3wkB,KAAMA,KAAU4/M,EAAUgxX,gBAAiBA,OAbT1yP,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,GAiBnD,CCjCO,MAAM6zP,GAAqB,CAChC5B,UAAY5/hB,IACVutS,EAAAA,GAAAA,KAAC4uP,GAAW,CAACC,QAASp8hB,EAAK0mT,eAE7BupO,KAAOjwhB,IACLutS,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACNijZ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MACgB,SAAdvvhB,EAAK1jE,KACDqvlB,GAAMe,MAAMv4e,KACZn0C,EAAKjoD,SAAWknW,GAAqB4I,SACrC8jO,GAAMjB,YAAYsD,MAClBrC,GAAMe,MAAME,SAElBzvS,MAAO+iJ,GAAME,QAGjBu2J,KACgB,SAAd32hB,EAAK1jE,KACD6jc,GAAMqC,KACNxiY,EAAKjoD,SAAWknW,GAAqB4I,SACrCs4E,GAAMmC,WACNnC,GAAMiC,cAKhB98H,MAAQtlQ,GAA0B8gT,GAAkB9gT,EAAKl/C,OACzDk3kB,SAAWh4hB,IAAqB,IAAAyhiB,EAAA,OAC9B73Q,GAA4B,QAAlB63Q,EAACzhiB,EAAK0mT,oBAAY,IAAA+6O,OAAA,EAAjBA,EAAmBlxkB,MAAMqtE,GAAMs+f,GAAWt+f,KAAK,EAC5Dh7C,QAAUod,IAAqB,IAAA0hiB,EAAA,OAAqB,QAArBA,EAAK1hiB,EAAK2vG,mBAAW,IAAA+xb,EAAAA,EAAI,EAAE,GCrC/CC,GAAmB,CAC9Br8R,MAAO06C,GAEPp9T,QAAUod,GAA2BogT,GAAWpgT,EAAKqgT,QAAQ,GAW7D4vO,KAAOjwhB,IAGHutS,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACNijZ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MACEvvhB,EAAK1jE,OAASqjX,GAAasG,wBACvB0lO,GAAMe,MAAMQ,kBACZlthB,EAAK1jE,OAASqjX,GAAaW,WAC3BqrO,GAAMjB,YAAYuD,MAClBjuhB,EAAK1jE,OAASqjX,GAAau/D,QAC3BysK,GAAMe,MAAM/8jB,QACZiykB,GAAqB5hiB,EAAK+wC,WAEhCosM,MAAO+iJ,GAAME,QAGjBu2J,KACE32hB,EAAK1jE,OAASqjX,GAAasG,wBACvBk6E,GAAM2B,aACN9hY,EAAK1jE,OAASqjX,GAAaW,WAC3B6/E,GAAM7/E,WACNtgT,EAAK1jE,OAASqjX,GAAau/D,QAC3BihB,GAAMjhB,QACNihB,GAAMjgF,UAYd0hP,GAAwB7wf,IAC5B,OAAQA,GACN,IAAK,aACH,OAAO46e,GAAMjB,YAAYsD,MAC3B,IAAK,cACH,OAAOrC,GAAMjB,YAAY+D,MAC3B,IAAK,mBACH,OAAO9C,GAAMjB,YAAYgE,QAC3B,IAAK,mBAEL,IAAK,mBACH,OAAO/C,GAAMjB,YAAYviO,IAC3B,IAAK,gBACH,OAAOwjO,GAAMjB,YAAYxyC,OAC3B,QACE,OAAOyzC,GAAMjB,YAAYl4e,SAC7B,EC9Ea,SAASqvf,GAAkBpjQ,GACxC,MAAM9yW,EAAOmkC,OAAO+sE,SAASsxC,SAAS/vF,MAAM,QAC5C,OAAQzyD,EAAK2C,QAAoB,KAAVmwW,GAAiB9yW,EAAK,KAAO8yW,CACtD,CCWO,MAAMqjQ,IAAer+R,EAAAA,EAAAA,eAAiC,CAC3DrtO,QAAQ,EACRjiD,QAAS,KACTgmb,OAAS7xV,QCdEy5d,GAAgBA,KAC3B,MAAM,OAAE5nI,IAAW7pK,EAAAA,EAAAA,YAAWwxS,IAC9B,OAAO3nI,CAAM,ECHA,SAAS6nI,KACtB,MAAO11P,EAAcK,GAAmBT,KAClC+1P,EAAgB,IAAIp5P,gBAAgByD,EAAa7/T,YACvD,MAAO,CAACzlC,EAAaqO,KACfA,EACF4slB,EAAcl6iB,IAAI/gD,EAAKqO,GAEvB4slB,EAAc5iiB,OAAOr4D,GAEvB2lW,EAAgBs1P,EAAc,CAElC,CCHA,MAuCA,GAvC2BC,KACzB,MAAM,KAAE7ykB,GAASuvkB,GAAuBtuO,GAAayyE,WAAW,GAE1Do/J,EAAcH,KAEpB,OACEz0P,EAAAA,GAAAA,KAAA,OACEz6I,MAAO,CACLumG,QAAS,OACTgjS,cAAe,SACfxB,eAAgB,gBAChB7lX,OAAQ,QACR92G,UAEFqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMA,EACN4gkB,KAAO16e,IAAQg4P,EAAAA,GAAAA,KAACkuP,GAAM,CAAC71d,OAAQrwB,EAAK6zV,OAAK,IACzC9jI,MAAQ/vN,GAAQ,GAAGA,EAAIn2F,aAAam2F,EAAIl2F,WACxCujC,QAAU2yD,IAAG,IAAA6sf,EAAA,OAAKriP,GAAmC,QAAdqiP,EAAC7sf,EAAIxE,iBAAS,IAAAqxf,EAAAA,EAAI,GAAG,EAC5DnC,gBAAkB1qf,GAAQ4sf,EAAY,MAAO5sf,EAAIhoH,OAU/C,ECrCK,SAAS80mB,KAEtB,OADiBz/P,KACDnuH,OACb17J,UAAU,GACV36B,MAAM,KACN75D,KAAK8wB,GAAUA,EAAM+oC,MAAM,OAC3B75D,KAAI+vD,IAAA,IAAEttC,EAAKqO,GAAMi/B,EAAA,MAAM,CAAE,CAACttC,GAAMqO,EAAO,IACvCkc,QAAO,CAACC,EAAKs3B,KAAI,IAAWt3B,KAAQs3B,KAAS,CAAC,EACnD,CCCA,MA0BA,GA1BgCw5iB,KAC9B,MAAM,IAAE/sf,GAAQ8sf,MACV,KAAEhzkB,EAAI,UAAEk9Z,GAAc8e,GAA4B91V,GAClD4sf,EAAcH,KAEpB,OACEx0P,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,CACGquT,GACCh/E,EAAAA,GAAAA,KAACuzP,GAAc,KAEfvzP,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMwuV,GAAoCxuV,GAC1C4gkB,KAAOhyO,IAAU1Q,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMC,SAC1CrnR,MAAQ24C,IAAK,IAAAskP,EAAA,OAAe,QAAfA,EAAKtkP,EAAMnxW,YAAI,IAAAy1lB,EAAAA,EAAI,MAAM,EACtC3/iB,QAAUq7T,GACR+C,GAAcsE,GAA2BrH,EAAM/8L,UAEjD++a,gBAAkBhiP,IAChBkkP,EAAY,QAASlkP,EAAM1wX,GAAI,IAGlC,MACF,ECCP,GA1B4Bi1mB,KAE1B,MAAM,IAAEjtf,EAAG,MAAE0oQ,GAAUokP,MACjB,KAAEhzkB,EAAI,UAAEk9Z,GAAc8e,GAA4B91V,GAElD4sf,EAAcH,KAEpB,OACEz0P,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,SACGquT,GACCh/E,EAAAA,GAAAA,KAACuzP,GAAc,KAEfvzP,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAU,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMhqC,QAAQiX,IAAU2hX,GAAS3hX,EAAKpS,UAAY+zX,IACxDgyO,KAAO3zlB,IAASixW,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMY,gBACzChoR,MAAQhpU,GAASA,EAAKwQ,KACtB81C,QAAUtmD,IAAI,IAAAmmmB,EAAA,MAAK,GAAgB,QAAhBA,EAAGnmmB,EAAKlR,gBAAQ,IAAAq3mB,OAAA,EAAbA,EAAeh2jB,oBAAoB,EACzDwzjB,gBAAkB3jmB,IAChB6lmB,EAAY,OAAQ7lmB,EAAKvS,mBAAoB,KAIlD,EChBP,SAAS3E,GAAQu7X,GACf,OAAOvB,KAAM34X,OAAOk6X,GAAO1pB,IAAiB7wS,OAAO,QACrD,CAEA,SAAS+lH,GAAOmqC,GACd,OAAO8oK,KAAM9oK,EAAK,YAAYlwJ,OAAO,aACvC,CAEA,MAAMs8iB,GAAOx5J,GAAOC,GAAG;;gBAEPvJ,GAAKhsZ;;;SAGZgsZ,GAAKE;EAERy8J,GAAOrzJ,GAAOC,GAAG;aACVvJ,GAAKE,QAAQF,GAAKhsZ;sBACTssZ,GAAM4vJ;mBACTlwJ,GAAKE;;;;;wBAKAI,GAAMgrJ;;EAIf,SAASyX,GAAarujB,GAIb,IAJc,IACpCgiK,EAAG,MACH4pM,EAAK,eACL0iN,EAAiBA,QACEtujB,EACnB,OACEi5T,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOn5J,GAAOmqC,GAAKp4E,UAC1BqvO,EAAAA,GAAAA,KAACm1P,GAAI,CAAAxke,SACFgiR,EAAM37Z,KAAKo8X,IACVpT,EAAAA,GAAAA,KAACgvP,GAAI,CAAYrlS,QAASA,IAAM0rS,EAAejiP,GAAMziP,SAClD94I,GAAQu7X,IADAA,QAOrB,CC5CA,MAGMkiP,GAAO35J,GAAOC,GAAG,GAEjB25J,GAAuB5iN,GACpBA,EAAM3uX,QAAO,CAACwxkB,EAA+BpiP,KAClD,MAAMqiP,EANRv8mB,OAM6Ck6X,GANhC5nS,UAAU,EAAG,GAOxB,IAAIkqhB,EAAyCF,EAAUxykB,MACrD+jB,IAAA,IAAC,IAAEgiK,GAAKhiK,EAAA,OAAKgiK,IAAQ0sZ,CAAO,IAU9B,OARKC,IACHA,EAAW,CACT3sZ,IAAK0sZ,EACLE,UAAW,IAEbH,EAAY,IAAIA,EAAWE,IAE7BA,EAASC,UAAY,IAAID,EAASC,UAAWviP,GACtCoiP,CAAS,GACf,IAGU,SAASI,GAAiB7ljB,GAGb,IAHc,MACxC4iW,EAAK,eACL0iN,EAAiBA,QACMtljB,EACvB,MAAM8ljB,EAAeN,GAAoB5iN,GACzC,OACE3yC,EAAAA,GAAAA,KAACs1P,GAAI,CAAA3ke,SACFkle,EAAa7+mB,KAAKusH,IACjBy8P,EAAAA,GAAAA,KAACo1P,GAAa,CAEZrsZ,IAAKxlG,EAAMwlG,IACX4pM,MAAOpvS,EAAMoyf,UACbN,eAAgBA,GAHX9xf,EAAMwlG,QAQrB,CC3CA,MA8BA,GA9B4B+sZ,KAAO,IAADC,EAAAC,EAChC,MAAMr1N,EAAQm0N,KACRF,EAAcH,MAEZ3ykB,KAAM1yB,GAAU0uc,GAAqC,QAAVi4J,EAACp1N,EAAM34R,WAAG,IAAA+tf,EAAAA,EAAI,IAE3DhnmB,GACM,QAAVinmB,EAAAr1N,EAAM5xY,YAAI,IAAAinmB,EAAAA,EAAS,OAAL5mmB,QAAK,IAALA,OAAK,EAALA,EAAOrO,QAChBqO,EAAoC,GAAG5S,mBACxC,IAEA,KAAEslC,EAAI,UAAEk9Z,GAAc6e,GAAwB,CAAE9uc,OAAMi5G,IAAK24R,EAAM34R,MAEvE,OACEg4P,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,SACGquT,IAAcl9Z,GACbk+U,EAAAA,GAAAA,KAACuzP,GAAc,KAEfvzP,EAAAA,GAAAA,KAAC41P,GAAiB,CAChBjjN,MAAO7wX,EACPuzkB,eAAiBjiP,IACfwhP,EAAY,OAAQ7lmB,GACpB6lmB,EAAY,OAAQxhP,EAAKl0U,WAAW,KAIzC,ECuEP,GAnF2B+2jB,KACzB,MAAM,EAAEl8hB,GAAMquR,MAER,KAAEgrB,EAAI,IAAEprQ,EAAG,MAAE0oQ,EAAK,KAAE3hX,GAAS+lmB,MAE3BhzkB,KAAM1yB,GAAU0uc,GAA4B91V,IAE5ClmF,KAAMukW,GAAa6oO,GAAsBnsO,GAAayyE,UAAWxtV,GAEnEkuf,EAAWzB,KAEX59f,EAAW8rQ,GAAYqyE,IAEvBmhL,EAAW3B,MAEV4B,GAAiB,UAAEp3K,EAAS,MAAEp6Z,IACnCg5a,KAEI6xJ,EAAWC,KAEjB,OACEzvP,EAAAA,GAAAA,MAAA,OACE16I,MAAO,CACLumG,QAAS,OACTgjS,cAAe,SACfxB,eAAgB,gBAChB7lX,OAAQ,QACR92G,SAAA,EAEFqvO,EAAAA,GAAAA,KAAA,OAAArvO,UACEsvO,EAAAA,GAAAA,MAAC62F,GAAWp/c,KAAI,CAAAi5I,SAAA,EACdqvO,EAAAA,GAAAA,KAAC82F,GAAW3kD,OAAM,CAAAxhR,SAEd52D,EAAE,oCAAqC,CACrCiuC,IAAKq0O,GAAWgqC,GAChBv6F,SAAUynF,GAAkB5uV,SAASyuV,SAK3CpT,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,UACdqvO,EAAAA,GAAAA,KAAA,KACEhkE,wBAAyB,CACvB+a,OAAQh9O,EAAE,kDAOpBimS,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC7G,cAAY,EAACC,MAAO5D,GAAMkD,cAAcC,kBAE9CvhP,EAAAA,GAAAA,KAACyjP,GAAW,CAACzkK,UAAWA,EAAUruT,UAChCqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CACLtB,SAAO,EACPtqR,MAAOh+P,EAAE,sBACT4ohB,QAASA,KACPwT,EAAS,MACTD,EAAS,WAAOh+mB,GAChBg+mB,EAAS,YAAQh+mB,GACjBg+mB,EAAS,YAAQh+mB,GACjBg+mB,EAAS,aAASh+mB,GAElBk+mB,EAAgB,CACdhjP,OACAprQ,MACAj5G,KAAMK,EAAO4zB,MACV+2C,GAA+BA,EAAEv9E,qBAAuBuS,IAE3D4xF,QAASkW,EAAU,KAErB44f,EAAS,CACP13R,MAAO,0BACP31S,QAAS,4CACTymE,QAAQ,GACR,QAIJ,ECrFV,GAhBsBwtgB,KAElBr2P,EAAAA,GAAAA,KAAA,OACEz6I,MAAO,CACLumG,QAAS,OACTh1G,MAAO,OACP2wB,OAAQ,OACR8lX,WAAY,SACZD,eAAgB,UAChB38d,UAEFqvO,EAAAA,GAAAA,KAAC8iP,GAAO,MCD8B,IAEvCwT,GAAS,SAATA,GAAS,OAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,iCAATA,EAAAA,EAAS,2CAATA,EAAAA,EAAS,mCAATA,EAAAA,EAAS,mCAATA,EAAAA,EAAS,+BAATA,CAAS,EAATA,IAAS,IASd,MAAMC,GAAe,CACnB,yBACA,sBACA,0BACA,sBACA,sBACA,gBAwBF,MA6CA,GA7C8BC,KAC5B,MAAOz3P,GAAgBJ,KAEjB32P,EAAM+2P,EAAar6U,IAAI,QAErB5C,KAAM1yB,EAAK,UAAE4vb,GAAc8e,GAA+B,OAAH91V,QAAG,IAAHA,EAAAA,EAAO,GAAI,CACxEv5G,MAAOu5G,IAGHiuP,EAAWR,KAEX02P,EAhCR,SACE3wM,EACAxzS,EACA0oQ,EACA3hX,EACAqkX,EACAhkX,GAEA,MAAMqnmB,EAASnmP,GAAoClhX,GAEnD,OAAIosZ,EAAgB86M,GAAUpsQ,QAEzBliP,GAEA0oQ,GAAS+lP,EAAO11mB,OAAS,EAAUu1mB,GAAUI,oBAC7C3nmB,IAAa,OAALK,QAAK,IAALA,OAAK,EAALA,EAAOrO,QAAU,EAAUu1mB,GAAUK,eAC7CvjP,EAEEkjP,GAAUzpQ,aAFCypQ,GAAUM,eAJXN,GAAUO,aAO7B,CAaiBC,CACb93K,EACAjgF,EAAar6U,IAAI,OACjBq6U,EAAar6U,IAAI,SACjBq6U,EAAar6U,IAAI,QACjBq6U,EAAar6U,IAAI,QACjBt1B,GAEF,OACE4wW,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEsvO,EAAAA,GAAAA,MAAC82P,GAAU,CACTvK,YAAaL,EACbp0R,MAAOw+R,GAAapK,GACpBO,eAAa,EACbD,YAAa,EACXzsP,EAAAA,GAAAA,KAAC4pP,GAA0B,CAEzBzrJ,MAAM,EACNorJ,OAAQxqP,EAAar6U,IAAI,OACzBilS,QAASA,IAAMssC,GAAU,IAHrB,aAKNtlO,SAAA,EAEFqvO,EAAAA,GAAAA,KAACq2P,GAAa,KACdr2P,EAAAA,GAAAA,KAAC20P,GAAkB,KACnB30P,EAAAA,GAAAA,KAAC+0P,GAAuB,KACxB/0P,EAAAA,GAAAA,KAACi1P,GAAmB,KACpBj1P,EAAAA,GAAAA,KAAC81P,GAAmB,KACpB91P,EAAAA,GAAAA,KAACi2P,GAAkB,QAEpB,EC9FDe,GAAe5mgB,IACnB,MAAM5iC,EAAUy3C,SAAS8pV,cAAc,YAEnC3+V,EAAMxb,QAAiB,OAAPpnB,QAAO,IAAPA,GAAAA,EAASokP,SAASxhN,EAAMxb,UAG5Cwb,EAAMq4M,kBACNxjM,SAASm9L,oBAAoB,QAAS40T,GAAa,CAAEvhT,SAAS,IACvD,OAAPjoP,QAAO,IAAPA,GAAAA,EAASy7hB,UAAUzlV,OAAO,UAAS,EAG/BsmV,GAAcA,KAClB,MAAMt8hB,EAAUy3C,SAAS8pV,cAAc,YAChC,OAAPvhY,QAAO,IAAPA,GAAAA,EAASy7hB,UAAU1liB,IAAI,UACvB//B,YAAW,KACTyhF,SAAS1T,iBAAiB,QAASylgB,GAAa,CAAEvhT,SAAS,GAAO,GACjE,GAAG,ECwBR,MAAMwhT,GAAkBt7J,GAAOC,GAAG,GAuNlC,GArNmB70Z,IAA6B,IAADmwjB,EAAAC,EAAA5ggB,EAAA,IAA3B,KAACh3F,GAAqBwnC,EACxC,MAAM8vD,EAAW8rQ,GAAYqyE,IACvBoiL,EAAkB9C,GAAkB,IAGpC9miB,ED3BC,CAAEo2hB,KAAMkG,GAAa9sF,KAAMg6F,KC+B5B,WAACpL,GAAcG,KAErBH,EACE,QACA5rP,EAAAA,GAAAA,KAAC4uP,GAAW,CACJC,QAASh4f,EACTglW,OAAK,EACL8mJ,QAASA,IAAMn1hB,EAAQo2hB,UAGjC,MAAM3tP,EAAWR,MAGf3zU,KAAMwkW,EAAY,UAClB04D,EAAS,QACTriC,GACE00M,GAA8BtuO,GAAa6K,aAAcwpO,IAG3Dt1kB,KAAMqjF,EACN65U,UAAWq4K,EACX16M,QAAS26M,GACPjG,GAA+BtuO,GAAauyE,UAAW8hK,IAGzDt1kB,KAAMylW,EACNo1B,QAAS46M,GACPlG,GAA8BtuO,GAAawyE,YAAa6hK,IAEpDt1kB,KAAMgnW,GACZuoO,GAAuBtuO,GAAayyE,UAAW4hK,GAE3CI,EAA4B,OAATryf,QAAS,IAATA,OAAS,EAATA,EAAWtmE,QAAQnwC,KAAK+rX,KAE3C,EAAE1gT,GAAMquR,KAwBd,MAOM+tQ,EAAW3B,KAEjBiD,IATsBC,KACpBH,IACAD,IACA36M,GAAS,IAQX,MAAMu+L,EAAwB,OAAZ50N,QAAY,IAAZA,OAAY,EAAZA,EACdxuY,QACCinD,GACCA,EAAEv0B,SAAWknW,GAAqB4H,QAClCv6U,EAAEv0B,SAAWknW,GAAqBn4L,UAErCzhM,OAAOg6X,IACPpjX,KAAKkjX,IAEFupO,EAAuB,OAAZ70N,QAAY,IAAZA,OAAY,EAAZA,EACbxuY,QAAQinD,GAAMA,EAAEv0B,SAAWknW,GAAqB4I,WACjD5rX,KAAKkjX,IAEFv/Q,EAAoB,CACxB,CACE0lO,MAAOh+P,EAAE,kBACT0whB,SAAU,UAAOj3O,GAAqC,QAjDpCx+P,EAiD0B7P,EAAd+xf,EAhDrB,OAAJlif,QAAI,IAAJA,OAAI,EAAJA,EAAMn2E,QAAQnwC,KAAK+rX,IAAY,UAgDkB,IAAAy8O,OAAA,EAAvBA,EAAyBpkP,UACxDljE,MAAOylJ,GAAetyE,GAAauyE,WACnCotJ,KAAMtE,GAAMjB,YAAYl4e,SACxBhJ,KAAM40f,GAAUv7J,UAChB16T,MAAgB,OAATz1B,QAAS,IAATA,OAAS,EAATA,EAAWrtH,QAAQqtC,IAAOowV,GAA4BpwV,KAAIpkC,QAEnE,CACEg3U,MAAOh+P,EAAE,mBACT0whB,SAAU,UAAOj3O,GAAuC,QAtDtCmkP,EAsD0BpwO,EAAd4vO,EArDrB,OAAJQ,QAAI,IAAJA,OAAI,EAAJA,EAAM94jB,QAAQnwC,MAAK,CAACqwC,EAAGyjB,IAAOzjB,EAAE8tF,QAAWrqE,EAAEqqE,QAAW,GAAK,IAAI,UAqDd,IAAAsqe,OAAA,EAAzBA,EAA2Btqe,WAC1D+iL,MAAOylJ,GAAetyE,GAAawyE,aACnCmtJ,KAAMtE,GAAMpkf,WAAWomf,QACvBnkf,KAAM40f,GAAUp8J,YAElB,CACE18H,MAAOh+P,EAAE,eACT0whB,SArDJ,SAAyBz9Q,GACvB,MAAMmuQ,EAAiB,OAANnuQ,QAAM,IAANA,OAAM,EAANA,EAAQl1V,QACtBN,GAAMA,EAAEgzB,SAAWknW,GAAqB4I,WAM3C,MAJa,CACF,OAAT4gO,QAAS,IAATA,GAAAA,EAAWn6lB,OAAS,GAAGm6lB,EAAUn6lB,8BAAwB7I,EACjD,OAARijmB,QAAQ,IAARA,GAAAA,EAAUp6lB,OAAS,GAAGo6lB,EAASp6lB,yBAAmB7I,GAExCJ,QAAQ6+G,GAAMA,IAAGx9F,KAAK,KACpC,CA4Ccy+lB,CAAgBtxO,GAC1B12E,MAAOylJ,GAAetyE,GAAa6K,cACnC80N,KAAMtE,GAAMe,MAAMY,cAClB9jf,KAAM40f,GAAUvkG,OAChB1xX,MAAe,OAARugd,QAAQ,IAARA,OAAQ,EAARA,EAAUrjmB,QAAQqtC,IAAOowV,GAA4BpwV,KAAIpkC,QAElE,CACEg3U,MAAOh+P,EAAE,aACT0whB,UAjEuBhQ,EAiEK3xN,EAhEnB,OAAJ2xN,QAAI,IAAJA,GAAAA,EAAM15lB,OAAS,GAAG05lB,EAAK15lB,qBAAuB,oBAiEnD6uT,MAAOylJ,GAAetyE,GAAayyE,WACnCktJ,KAAMtE,GAAMjB,YAAYl4e,SACxBhJ,KAAM40f,GAAUr7J,YApEpB,IAA2BilJ,EAJLkd,EAHA3if,EA8EtB,MAGOi4Q,GAAwBmlE,KAE/B,OACEnyF,EAAAA,GAAAA,MAACg3P,GAAe,CAAAtme,SAAA,EACdsvO,EAAAA,GAAAA,MAAC62F,GAAWP,GAAE,CAAA5lU,SAAA,CACI,QADJp6B,EACXx8B,EAAE,qBAAa,IAAAw8B,EAAAA,EAAI,GAAG,IAAEM,EAAWm8Q,GAAgBn8Q,EAAS,IAAM,OAGrEmpQ,EAAAA,GAAAA,KAAC63P,GAAc,CAACxlgB,MAAOA,KAEvB2tQ,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,KAEd77F,EAAAA,GAAAA,KAAC+zP,GAAW,CACVh8R,MAAOh+P,EAAE,qBACTi6hB,WACEh0P,EAAAA,GAAAA,KAAC2jP,GAAM,CACLniZ,OAAK,EACLu2H,MAAOh+P,EAAE,YACT4ohB,QAASA,IAAMwT,GAASn2P,EAAAA,GAAAA,KAACw2P,GAAqB,OAGlDx3K,UAAWA,EACX1rX,MAzBY2gO,GAyBY,OAATinT,QAAS,IAATA,OAAS,EAATA,EAAWn6lB,QA7IZ,EAqHlBkzS,EAAQ,EAAI,KAAKA,KAASl6N,EAAE,eAAiB,IAyBzCk0M,MAAO0lV,GAAO1lV,MAAM+4G,OACpBllW,KAAe,OAATo5jB,QAAS,IAATA,OAAS,EAATA,EAAWr8iB,MAAM,EA/IT,GAgJd99C,OAhJc,EAiJd2gP,SAAUuyX,GACVvB,gBAAkBjgiB,IAChBw6T,EAAqB,CAAC4kE,WAAYp/X,EAAKzyE,GAAImtY,aAAcpK,GAAa6K,eACtE33B,EAAS,GAAG46P,GAAUvkG,UAAU75b,EAAKzyE,KAAK,KAIrC,OAARm7lB,QAAQ,IAARA,OAAQ,EAARA,EAAUp6lB,QAAS,IAClBi/W,EAAAA,GAAAA,KAAC+zP,GAAW,CACVh8R,MAAOh+P,EAAE,aACTilX,UAAWA,EACX/wK,MAAO0lV,GAAO1lV,MAAM+4G,OACpBllW,KAAc,OAARq5jB,QAAQ,IAARA,OAAQ,EAARA,EAAUt8iB,QAChB99C,OA9JY,EA+JZ2gP,SAAU,IACLuyX,GACHl8R,MAAQtlQ,IAAI,IAAAqliB,EAAA,OAAe,QAAfA,EAAKrliB,EAAKslQ,aAAK,IAAA+/R,EAAAA,EAAI,EAAE,EACjCrN,SAAWh4hB,GACCo/S,KAAMp/S,EAAKl/C,MAAM2rB,WAAYwqT,IAC9B5zN,SAAS+7O,OAAQtuT,IAAI,EAAG,QAC7B+vT,GAAyB7gT,EAAKl/C,OAC9BigW,GAAc/gT,EAAKl/C,OAEzB8+kB,UAAY5/hB,GACAo/S,KAAMp/S,EAAKl/C,MAAM2rB,WAAYwqT,IAChC5zN,SAAS+7O,OAAQtuT,IAAI,EAAG,SAAgBy8S,EAAAA,GAAAA,KAACkuP,GAAM,CACrD1sZ,OAAK,EACLkhZ,MAAM1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKunS,GAAOxU,MAAO5hgB,QAAS2iR,IAAI,YAC3CkpP,KAAMx2J,GAAMgB,eAEPnhY,EAAK6iT,cAAWp9X,GAAY8nX,EAAAA,GAAAA,KAACiyP,GAAK,KAG5CS,gBAAkBjgiB,IAChBw6T,EAAqB,CAAC4kE,WAAYp/X,EAAKzyE,GAAImtY,aAAcpK,GAAa6K,eACpE33B,EAAS,GAAG46P,GAAUvkG,UAAU75b,EAAKzyE,KAAK,KAIlDggX,EAAAA,GAAAA,KAAC+zP,GAAW,CACVh8R,MAAOh+P,EAAE,kBACTilX,UAAWq4K,EACXppV,MAAO0lV,GAAO1lV,MAAM+4G,OACpBllW,KAAsB,OAAhB01kB,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB34jB,MAAM,EAAG,GACjC99C,OA7Lc,EA8Ld2gP,SAAU,IACL0yX,GACH/B,UAAY5/hB,GACRA,EAAK6iT,cAAWp9X,GAAY8nX,EAAAA,GAAAA,KAACiyP,GAAK,KAExCS,gBAAkBjgiB,IAChBw6T,EAAqB,CAAC4kE,WAAYp/X,EAAKzyE,GAAImtY,aAAcpK,GAAauyE,YACtEr/F,EAAS,GAAG46P,GAAUv7J,aAAa7iY,EAAKzyE,KAAK,OAjFnCi0S,KAsFE,ECvPP,SAAS8jU,GAAiBhxjB,GAAqC,IAApC,OAAEhmD,EAAS,GAAsBgmD,EACzE,OACEk5T,EAAAA,GAAAA,MAAA,OACE16I,MAAO,CACL+nB,UAAW,GAAG+kN,GAAKhsZ,MACnBmnM,aAAc,GAAG6kN,GAAK1mU,MACtB1sC,QAAS,GAAGozW,GAAK1mU,OACjBgF,SAAA,EAEFqvO,EAAAA,GAAAA,KAAC8yP,GAAY,CAACn1V,MAAO,EAAGo1V,UAAU,WAClC/yP,EAAAA,GAAAA,KAACg4P,GAAY,CAACj3mB,OAAQA,MAG5B,CAKO,SAASi3mB,GAAYjojB,GAAqC,IAApC,OAAEhvD,EAAS,GAAsBgvD,EAC5D,OAAOiwT,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,GACT,4BCZA,MAAMgsP,GAAYzwJ,GAAO58Z,CAAC;;;SAGjBszZ,GAAK1mU;;aAED0mU,GAAK1mU;EA2ClB,GAnCmB5kF,IAAmD,IAAlD,aAAEihV,EAAY,SAAE/iR,EAAQ,UAAE+5U,GAAkBj4Y,EAC9D,MAAO5kB,EAAK81kB,IAAU10S,EAAAA,EAAAA,UAAiB,IAYvC,OAVAP,EAAAA,EAAAA,YAAU,KACRi1S,EACE5ogB,IAAIyvO,gBACF,IAAIlhU,KAAK,CAAS,OAARqnG,QAAQ,IAARA,OAAQ,EAARA,EAAU1rG,YAA4B,CAC9CxK,KAAc,OAARk2G,QAAQ,IAARA,OAAQ,EAARA,EAAUpsD,UAGrB,GACA,CAACosD,KAGFg7P,EAAAA,GAAAA,MAACmsP,GAAS,CAAC78f,KAAMptE,EAAKyyD,OAAO,SAAQ+7C,SAAA,EACnCqvO,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACN+B,OAAK,EACLkhZ,MAEA1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMQ,kBAAmB/vS,MAAM,SAGlDw5S,KAAMx2J,GAAMuB,QAED,OAAZnsE,QAAY,IAAZA,OAAY,EAAZA,EAAcrP,OAAO3Y,EAAAA,GAAAA,KAAC79H,KAAO,CAACr6N,MAAmB,OAAZkgX,QAAY,IAAZA,OAAY,EAAZA,EAAcrP,OACpD3Y,EAAAA,GAAAA,KAAA,OAAKz6I,MAAO,CAAEo4E,KAAM,GAAIhtK,UACtBqvO,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAACouG,MAAO+iJ,GAAMO,YAAYviU,SACxCquT,EAAY,aAAuB,OAAR/5U,QAAQ,IAARA,OAAQ,EAARA,EAAU1lG,WAGhC,EC7CV24lB,GAAcv8J,GAAOw8J,KAAK;;;YAGpB9lK,GAAK1mU;EAEF,SAASyse,GAAiBrxjB,GAAqC,IAApC,aAAEsxjB,EAAY,SAAEC,GAAiBvxjB,EACzE,IAAKsxjB,GAAwC,IAAxBA,EAAat3mB,OAAc,OAAOi/W,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,IACvD,MAAMm4P,EA4BR,SAA2Bv4d,GACzB,MAAMq4d,EAAe,IAAIr4d,GAAGtxI,MAAK,CAACqwC,EAAGyjB,IAAOzjB,EAAEw+B,MAAS/a,EAAE+a,MAAS,GAAK,IAEvE,OAAO86hB,EACJr0kB,QAAO,CAACi8F,EAAQu4e,KACVA,EAAY1wlB,MAGe,KAArB0wlB,EAAYvpmB,MAAoC,aAArBupmB,EAAYvpmB,MAChDgxH,EAAOA,EAAOl/H,OAAS,GAAGs3mB,aAAapjjB,KAAKujjB,GAF5Cv4e,EAAOhrE,KAAK,CAAE8iR,MAAkB,OAAXygS,QAAW,IAAXA,OAAW,EAAXA,EAAavpmB,KAAOopmB,aAAc,KAIlDp4e,IACN,IACFnoI,QAAQ6/O,GAAMA,EAAE0gY,aAAat3mB,OAAS,GAC3C,CA1C8B03mB,CAAkBJ,GAE9C,OACEr4P,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,SACG4ne,EAAoBvhnB,KAAI,CAACgpJ,EAAGxhG,KAC3BwhU,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAO/3L,EAAE+3L,MAAMpnM,UACtBqvO,EAAAA,GAAAA,KAACk4P,GAAW,CAAAvne,UACVqvO,EAAAA,GAAAA,KAAA,SAAArvO,SACGqP,EAAEq4d,aAAarhnB,KAAKy7E,IACnButS,EAAAA,GAAAA,KAAC04P,GAAc,CAEbF,YAAa/liB,EACbkwhB,QAASA,IAAM2V,EAAS7liB,IAFnBA,EAAKzyE,WALUw+C,MAgBtC,CA4BA,MAAMuzjB,GAAMp2J,GAAOzqW,EAAE;6BACQyhW,GAAM4vJ;;;2BAGR5vJ,GAAMuB;;EAI3BykK,GAAOh9J,GAAOrxJ,EAKlB;aACW+nJ,GAAK1mU,OAAO0mU,GAAK1mU;WAClBj6E,GAAWA,EAAMknjB,WAAa,GAAGlnjB,EAAMknjB,eAAiB;;;;uBAI7CpmK,GAAWx0E;eAClBtsU,GACVA,EAAM6qa,QAAU7qa,EAAMmnjB,OAAS,aAAe;;EAI9CC,GAAYN,GACsB,aAA/BA,EAAYphP,eACfu7E,GAAMomK,YACNpmK,GAAMyB,YAGZ,SAASskK,GAAc3ojB,GAAsC,IAADipjB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAApC,YAAE1B,EAAW,QAAE7V,GAAmB5yiB,EACxD,OACEkwT,EAAAA,GAAAA,MAAC8xP,GAAG,CAACpoS,QAASg5R,EAAQhyd,SAAA,EACpBsvO,EAAAA,GAAAA,MAAC04P,GAAI,CAACE,QAAM,EAAAloe,SAAA,EACVqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAE6ne,EAAYvpmB,QAC9BgxW,EAAAA,GAAAA,MAAC62F,GAAWt1P,MAAK,CAAC+jB,MAAO,CAAEqqF,MAAOkpT,GAASN,IAAe7ne,SAAA,CAAC,IACZ,QAA5Cqoe,EAA2B,QAA3BC,EAACT,EAAYlhP,sBAAc,IAAA2hP,GAAK,QAALC,EAA1BD,EAA4B78jB,WAAG,IAAA88jB,OAAL,EAA1BA,EAAiCh6jB,kBAAU,IAAA85jB,EAAAA,EAAI,GAAG,KAAG,IACV,QADaG,EAC/B,QAD+BC,EACzDZ,EAAYlhP,sBAAc,IAAA8hP,GAAM,QAANC,EAA1BD,EAA4B/8jB,YAAI,IAAAg9jB,OAAN,EAA1BA,EAAkCn6jB,kBAAU,IAAAi6jB,EAAAA,EAAI,GAAG,WAGxDl5P,EAAAA,GAAAA,MAAC04P,GAAI,CAACp8I,QAAM,EAACq8I,WAAY,GAAGjoe,SAAA,EAC1BqvO,EAAAA,GAAAA,KAAC82F,GAAW3kD,OAAM,CAACviG,MAAOkpT,GAASN,GAAcxhK,MAAM,SAAQrmU,SACT,QADS2oe,EAC3C,QAD2CC,EAC5Df,EAAY1wlB,aAAK,IAAAyxlB,GAAe,QAAfC,EAAjBD,EAAmB7hP,qBAAa,IAAA8hP,GAAO,QAAPC,EAAhCD,EAAkC1xlB,aAAK,IAAA2xlB,OAAtB,EAAjBA,EAAyCv6jB,kBAAU,IAAAo6jB,EAAAA,EAAI,MAE1Dt5P,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAACouG,MAAOkpT,GAASN,GAAcxhK,MAAM,SAAQrmU,SACrB,QADqB+oe,EAC1C,QAD0CC,EAC3DnB,EAAY1wlB,aAAK,IAAA6xlB,GAAe,QAAfC,EAAjBD,EAAmBjiP,qBAAa,IAAAkiP,OAAf,EAAjBA,EAAkC7/f,YAAI,IAAA2/f,EAAAA,EAAI,SAI/C15P,EAAAA,GAAAA,KAAC24P,GAAI,CAACC,WAAY,IAAIjoe,UACpBsvO,EAAAA,GAAAA,MAAC62F,GAAWt1P,MAAK,CAAC+jB,MAAO,CAAEqqF,MAAOkpT,GAASN,IAAe7ne,SAAA,CAAC,IACZ,QAA5Ckpe,EAA2B,QAA3BC,EAACtB,EAAYlhP,sBAAc,IAAAwiP,GAAK,QAALC,EAA1BD,EAA4B19jB,WAAG,IAAA29jB,OAAL,EAA1BA,EAAiC76jB,kBAAU,IAAA26jB,EAAAA,EAAI,GAAG,KAAG,IACV,QADaG,EAC/B,QAD+BC,EACzDzB,EAAYlhP,sBAAc,IAAA2iP,GAAM,QAANC,EAA1BD,EAA4B59jB,YAAI,IAAA69jB,OAAN,EAA1BA,EAAkCh7jB,kBAAU,IAAA86jB,EAAAA,EAAI,GAAG,WAW9D,CCpGA,MAAMG,GAAMx+J,GAAOC,GAAG;aACTvJ,GAAKhsZ;sBACIssZ,GAAME;mBACTR,GAAKhsZ;;mBAELgsZ,GAAK3mU;EAqFxB,GAlF2B0ue,KAAO,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC/B,MAAM,WAAE7oK,EAAU,QAAEjqb,GAAY6uV,MAG9B30U,KAAMzpC,EAAG,MACTusC,EAAK,UACLo6Z,GACEkwK,GACFnsO,GAAauyE,UACbzD,EACAjqb,GAAWiplB,GAAUv7J,YAIfxza,KAAMi3V,EAAOimE,UAAW27K,GAC9BzL,GACEnsO,GAAa63O,MACV,OAAHvinB,QAAG,IAAHA,GAAU,QAAPginB,EAAHhinB,EAAK0gY,aAAK,IAAAshP,OAAP,EAAHA,EAAa,GAAG9gmB,YAEflhB,GAA6B,KAAb,QAATiinB,EAAAjinB,EAAI0gY,aAAK,IAAAuhP,OAAA,EAATA,EAAWv5mB,SAGvB,OACEk/W,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAEt4I,EAAMo6X,GAAiBp6X,GAAO,QAC7C2mc,GACCh/E,EAAAA,GAAAA,KAAC+3P,GAAiB,KAElB93P,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWL,GAAE,CAAC7mJ,MAAO+iJ,GAAMQ,YAAYxiU,SACrC0rN,GAAe,OAAHhkW,QAAG,IAAHA,OAAG,EAAHA,EAA+B6jY,cAE9Clc,EAAAA,GAAAA,KAAC82F,GAAWt1P,MAAK,CAAA7wE,SAAEkiP,GAAc,OAAHx6X,QAAG,IAAHA,OAAG,EAAHA,EAAKy6X,WAEnC9S,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,KAET,OAAHxjd,QAAG,IAAHA,OAAG,EAAHA,EAA2BsgY,OAC3B3Y,EAAAA,GAAAA,KAACm6P,GAAG,CAAAxpe,UACFqvO,EAAAA,GAAAA,KAAC79H,KAAO,CAACrrB,MAAO,IAAKhvM,MAAW,OAAHzvB,QAAG,IAAHA,OAAG,EAAHA,EAA2BsgY,UAItD,OAAHtgY,QAAG,IAAHA,IAAAA,EAAKo4L,WACNuvL,EAAAA,GAAAA,KAACmxP,GAAO,CACN5skB,KAAS,OAAHlsC,QAAG,IAAHA,OAAG,EAAHA,EAAKo4L,QACXxlF,OAAW,OAAH5yG,QAAG,IAAHA,OAAG,EAAHA,EAAK2vH,IACb/nH,KAAMszX,GAAgC,QAAfgnP,EAAI,OAAHlinB,QAAG,IAAHA,OAAG,EAAHA,EAAK8jY,iBAAS,IAAAo+O,EAAAA,EAAO,OAAHlinB,QAAG,IAAHA,OAAG,EAAHA,EAAKy6X,YAI7C,OAAHz6X,QAAG,IAAHA,GAAU,QAAPminB,EAAHninB,EAAK0gY,aAAK,IAAAyhP,IAAVA,EAAYz5mB,WAAe,OAAH1I,QAAG,IAAHA,GAAyB,QAAtBoinB,EAAHpinB,EAAK0gY,MAAM,GAAG32M,mBAAW,IAAAq4b,IAAzBA,EAA2B15mB,UACpDi/W,EAAAA,GAAAA,KAAA,OACEz6I,MAAO,CACLs1Y,WAAY,WACZC,UAAW,aAAanoK,GAAM4vJ,cAC9BwY,WAAY1oK,GAAK3mU,EACjBsve,YAAa3oK,GAAKhsZ,EAClB40jB,aAAc5oK,GAAKhsZ,GACnBsqF,UAEFqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAEt4I,EAAI0gY,MAAM,GAAG32M,iBAI/B,OAAH/pL,QAAG,IAAHA,GAAU,QAAPqinB,EAAHrinB,EAAK0gY,aAAK,IAAA2hP,OAAP,EAAHA,EAAY35mB,UAAa,OAAH1I,QAAG,IAAHA,OAAG,EAAHA,EAAK0gY,MAAM,GAAGx/W,cACnCymW,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAM,gBAAepnM,UAC5BqvO,EAAAA,GAAAA,KAACk7P,GAAU,CAACj2f,SAAU8zQ,EAAOimE,WAAYjmE,OAIxC,OAAH1gY,QAAG,IAAHA,OAAG,EAAHA,EAA+B68D,UAC/B8qT,EAAAA,GAAAA,KAACo4P,GAAiB,CAChBC,aAAkB,OAAHhgnB,QAAG,IAAHA,OAAG,EAAHA,EAA+B68D,OAC9CojjB,SAAWt4d,GAAMn7G,QAAQgvB,IAAImsF,UAKpC,ECrHQ,SAASm7d,KAA+C,IAAxBC,EAAgBt6mB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAG,GAChE,MAEM0xD,EAAQ4ojB,EAAS5ojB,MADrB,6JAEF,OAAIA,EACKA,EAAM,GAEN4ojB,CAEX,CCUA,MAAMC,GAAkBC,IAA2B,IAADC,EAAAC,EAChD,MAAM7gT,EAAU,OAAH2gT,QAAG,IAAHA,GAAuB,QAApBC,EAAHD,EAAK7lP,0BAAkB,IAAA8lP,OAApB,EAAHA,EAAyB79mB,cAChC6hB,EAAU,OAAH+7lB,QAAG,IAAHA,GAAS,QAANE,EAAHF,EAAK/7lB,YAAI,IAAAi8lB,OAAN,EAAHA,EAAW99mB,cACxB,OAAQ,OAAJi9T,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,WAAiB,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,UACtC0nkB,GAAMpkf,WAAWsmf,WAClB,OAAJ3lS,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,UAAgB,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,SACrC0nkB,GAAMpkf,WAAWwmf,UAElB,OAAJ7lS,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,SAAe,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,QACpC0nkB,GAAMpkf,WAAWmmf,QAClB,OAAJxlS,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,aAAgB,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,aAEtC,OAAJikS,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,SAAe,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,QADpC0nkB,GAAMpkf,WAAWqmf,SAGlB,OAAJ1lS,QAAI,IAAJA,GAAAA,EAAMjkS,SAAS,QAAc,OAAJnX,QAAI,IAAJA,GAAAA,EAAMmX,SAAS,OACnC0nkB,GAAMpkf,WAAWwmf,UAEnBpC,GAAMpkf,WAAWomf,OAAO,EAGpBqb,GAAyB,CACpC/Y,KAAOjwhB,IACLutS,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACN2pZ,KAAMx2J,GAAM6B,WACZiuJ,MAAM1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAOqZ,GAAe5oiB,GAAOm9O,MAAM,WAGnDmoB,MAAQtlQ,GAA0B0oiB,GAAuB1oiB,EAAKlzD,MAC9D81C,QAAUod,GAA0BA,EAAK+iT,aChC5B,SAASkmP,GAAkB30jB,GAIpB,IAJqB,KACzC4wjB,EAAI,cACJ5vO,EAAa,YACb4zO,GACiB50jB,EACjB,MAAM60jB,EAAoB,OAAJjE,QAAI,IAAJA,OAAI,EAAJA,EAAM7/mB,QAAQwjnB,IAAG,IAAAO,EAAA,OAClC,OAAHP,QAAG,IAAHA,GAAY,QAATO,EAAHP,EAAKz8f,eAAO,IAAAg9f,OAAT,EAAHA,EAAcr/hB,OAAOj9B,GAAMA,EAAEw2U,aAAeulP,EAAItzf,KAAI,IAEhD8zf,EAAmB,OAAJnE,QAAI,IAAJA,OAAI,EAAJA,EAAM7/mB,QACxBwjnB,IAAG,IAAAS,EAAA,QAAS,OAAHT,QAAG,IAAHA,GAAY,QAATS,EAAHT,EAAKz8f,eAAO,IAAAk9f,GAAZA,EAAcv/hB,OAAOj9B,GAAMA,EAAEw2U,aAAeulP,EAAItzf,MAAI,IAG1Di3W,EAAuB,OAAb28I,QAAa,IAAbA,OAAa,EAAbA,EAAe9jnB,QAAQwjnB,GAAQA,EAAI5lP,YAC7CypG,EAAqB,OAAby8I,QAAa,IAAbA,OAAa,EAAbA,EAAe9jnB,QAAQwjnB,IAASA,EAAI5lP,YAE5C/1Q,EAAe,OAAPs/W,QAAO,IAAPA,OAAO,EAAPA,EAASnne,QACpBwjnB,GAAQA,EAAIjlP,YAActE,GAA6B6F,QAEpDn2T,EAAe,OAAPw9Z,QAAO,IAAPA,OAAO,EAAPA,EAASnne,QACpBwjnB,GAAQA,EAAIjlP,YAActE,GAA6B6F,SAGpD,EAAE79S,GAAMquR,KAEd,OACE6X,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,KACkB,OAAZmre,QAAY,IAAZA,OAAY,EAAZA,EAAc/6mB,QAAU,KAC1Bi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,mBAA6B42D,UAC7CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMg6kB,KACFL,GACJpJ,UAAY5/hB,IAERutS,EAAAA,GAAAA,KAACkuP,GAAM,CACL1sZ,OAAK,EACLkhZ,MAAM1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKunS,GAAOxU,MAAO5hgB,UAC9B6rgB,KAAMx2J,GAAMgB,eAIlB8+J,gBAAiBiJ,UAId,OAALx8I,QAAK,IAALA,OAAK,EAALA,EAAOp+d,QAAU,KACnBi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,mBAA6B42D,UAC7CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMq9b,KACFs8I,GACJpmjB,QAAUimjB,IAAG,IAAAU,EAAA,MACX,GAAkB,QAAlBA,EAAGV,EAAI9lP,mBAAW,IAAAwmP,EAAAA,EAAI,MACpBV,EAAItlP,UACA,IAAIj8S,EAAE,oBAAoB84S,GAAWyoP,EAAItlP,WAAW,MACpD,IACJ,EAEJq8O,UAAY5/hB,IACa,OAAbs1T,QAAa,IAAbA,OAAa,EAAbA,EAAe/kW,MAAMqtE,GAAMA,EAAEylR,eAAiBrjT,EAAKzyE,OAE3DggX,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMO,uBACvBxnmB,EAENw6mB,gBAAiBiJ,UAId,OAALh8f,QAAK,IAALA,OAAK,EAALA,EAAO5+G,QAAU,KACnBi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,mBAA6B42D,UAC7CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAM69E,KACF87f,GACJpJ,UAAY5/hB,IACa,OAAbs1T,QAAa,IAAbA,OAAa,EAAbA,EAAe/kW,MAAMqtE,GAAMA,EAAEylR,eAAiBrjT,EAAKzyE,OAE3DggX,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMO,gBAAiB9vS,MAAO+iJ,GAAME,aACrD36c,EAENw6mB,gBAAiBiJ,UAKd,OAALl6iB,QAAK,IAALA,OAAK,EAALA,EAAO1gE,QAAU,KACnBi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,qBAA+B42D,UAC/CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAM2/B,KACFg6iB,GACJpJ,UAAY5/hB,IACa,OAAbs1T,QAAa,IAAbA,OAAa,EAAbA,EAAe/kW,MAAMqtE,GAAMA,EAAEylR,eAAiBrjT,EAAKzyE,OAE3DggX,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACN+B,OAAK,EACLkhZ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MAAO5D,GAAMe,MAAMO,gBACnB9vS,MAAO+iJ,GAAME,QAGjBu2J,KAAMx2J,GAAMiB,YAEZ37c,EAENw6mB,gBAAiBiJ,QAM7B,CClH+C,IAE1CM,GAAW,SAAXA,GAAW,OAAXA,EAAW,cAAXA,EAAW,gCAAXA,EAAW,0BAAXA,EAAW,wBAAXA,EAAW,sBAAXA,EAAW,sBAAXA,EAAW,kCAAXA,EAAW,4BAAXA,EAAW,0BAAXA,EAAW,oDAAXA,EAAW,8CAAXA,EAAW,8CAAXA,EAAW,4BAAXA,EAAW,kBAAXA,EAAW,kBAAXA,EAAW,cAAXA,EAAW,gCAAXA,EAAW,kCAAXA,EAAW,0BAAXA,EAAW,4BAAXA,CAAW,EAAXA,IAAW,IAwBhB,MAAM74gB,GAA2C,CAC/Cg5f,MAAO,CAAC6f,GAAYC,OACpBjgB,UAAW,CACTggB,GAAYE,eACZF,GAAYG,gBACZH,GAAYI,gBACZJ,GAAY/lG,SAEd15Z,QAAS,CAACy/f,GAAYK,0BACtBpgB,MAAO,CACL+f,GAAYM,YACZN,GAAYO,YACZP,GAAYQ,YAEd3/f,UAAW,CAACm/f,GAAYS,sBAAuBT,GAAYU,WAC3Dx/f,QAAS,CACP8+f,GAAYW,aACZX,GAAYY,aACZZ,GAAYa,YACZb,GAAYjjH,SAEd17Y,MAAO,CAAC2+f,GAAY/iH,MAAO+iH,GAAYc,gBACvCt7iB,MAAO,IAUT,SAASu7iB,GAAoBj2jB,GAME,IAND,KAC5B4wjB,EAAI,cACJ5vO,EAAa,MACbhwD,EAAK,YACL4jS,EAAW,KACX5iZ,GAC0BhyK,EAC1B,MAAM,EAAEgzB,GAAMquR,KA4Bd,OACE4X,EAAAA,GAAAA,KAACmtP,GAAO,CACNp1R,MAAOA,EACP2qR,KACW,UAAT3pY,GACEinJ,EAAAA,GAAAA,KAACkuP,GAAM,CACL1sZ,OAAK,EACLkhZ,MAAM1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKunS,GAAOxU,MAAO5hgB,UAC9B6rgB,KAAMx2J,GAAMgB,oBAEZ17c,EACLy4I,UAEDqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAM61kB,KACF8D,GACJpJ,UAAY5/hB,IACa,OAAbs1T,QAAa,IAAbA,OAAa,EAAbA,EAAe/kW,MAAMqtE,GACtBA,EAAEylR,eAAiBrjT,EAAKzyE,OAEtBggX,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC5G,MAAO5D,GAAMe,MAAMO,uBAAsBxnmB,EAE5Dm9D,QAAUimjB,GACC,UAATviZ,EACI,uBAlDZ,SAAiCuiZ,EAAsBviZ,GAAe,IAADkkZ,EAAAC,EAC7ClB,EAAtB,GAAa,UAATjjZ,EACF,OAAsB,QAAtBijZ,EAAOV,EAAI9lP,mBAAW,IAAAwmP,EAAAA,EAAI,GAE5B,MAAMt8lB,EAEL,QAFMu9lB,EAAG3B,EAAIz8f,QAAQ77E,MAAMuc,GAC1B6jD,GAAQ21H,GAAM/1J,MAAMlrE,GAAWA,IAAYynD,EAAEggE,qBAC9C,IAAA09f,OAAA,EAFSA,EAEPn+f,sBAEH,IAAIzO,EAAI,GACA,IAADkrgB,E3XjB6B5gT,E2X2BpC,OATEtqN,EADE3wF,EACE,GAAGA,K3XlB2Bi7S,E2XmBV,QADW4gT,EACjCD,EAAI7lP,0BAAkB,IAAA8lP,OAAA,EAAtBA,EAAwB79mB,c3XlBzBi9T,EACM,OAAJA,QAAI,IAAJA,GAAAA,EAAMj9T,cAAcg5B,SAAS,QAChC,iBACI,OAAJikS,QAAI,IAAJA,GAAAA,EAAMj9T,cAAcg5B,SAAS,QAC7B,cACAikS,EALc,gB2XoBiB,QAA1BuiT,EAAI5B,EAAIplP,0BAAkB,IAAAgnP,GAAtBA,EAAwBn8mB,OAC7B,GAAGu6mB,EAAIplP,qBAEP,GAGC,GAAG7lR,KACRirgB,EAAItlP,UACA,IAAIj8S,EAAE,oBAAoB84S,GAAWyoP,EAAItlP,WAAW,MACpD,IAER,CA2BYmnP,CAAwB7B,EAAKviZ,GAEnC25Y,gBAAiBiJ,KAIzB,CAEe,SAASyB,GAAyBrtjB,GAI3B,IAJ4B,KAChD4njB,EAAI,cACJ5vO,EAAa,YACb4zO,GACiB5rjB,EACjB,MAAM6rjB,EAAoB,OAAJjE,QAAI,IAAJA,OAAI,EAAJA,EAAM7/mB,QAAQwjnB,IAAG,IAAAO,EAAA,OAClC,OAAHP,QAAG,IAAHA,GAAY,QAATO,EAAHP,EAAKz8f,eAAO,IAAAg9f,OAAT,EAAHA,EAAcr/hB,OAAOj9B,GAAMA,EAAEw2U,aAAeulP,EAAItzf,KAAI,IAEhD8zf,EAAmB,OAAJnE,QAAI,IAAJA,OAAI,EAAJA,EAAM7/mB,QACxBwjnB,IAAG,IAAAS,EAAA,QAAS,OAAHT,QAAG,IAAHA,GAAY,QAATS,EAAHT,EAAKz8f,eAAO,IAAAk9f,GAAZA,EAAcv/hB,OAAOj9B,GAAMA,EAAEw2U,aAAeulP,EAAItzf,MAAI,KAG1D,EAAEjuC,GAAMquR,KAad,OACE6X,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,GACiB,OAAZmre,QAAY,IAAZA,IAAAA,EAAc/6mB,UACfi/W,EAAAA,GAAAA,KAACg9P,GAAoB,CACnBjkZ,KAAM,QAENg/G,MAAOh+P,EAAE,mBACT49hB,KAAMmE,EACN/zO,cAAeA,EACf4zO,YAAaA,GAJR,GAhBA,CACX,QACA,YACA,UACA,QACA,YACA,UACA,QACA,SAgBQ3knB,KAAI,CAAC+hO,EAAMx7I,KACf,MAAM80B,EAAqB,OAAbupgB,QAAa,IAAbA,OAAa,EAAbA,EAAe9jnB,QAC1BwjnB,GACCA,EAAIz8f,QAAQ77C,MAAMzjB,GAChB6jD,GAAQ21H,GAAM/1J,MACXlrE,GAAWA,IAAYynD,EAAEggE,eAGJ,IAAzBnc,GAAQ21H,GAAMh4N,QAAuC,IAAvBu6mB,EAAIz8f,QAAQ99G,SAE/C,IAAS,OAALsxG,QAAK,IAALA,OAAK,EAALA,EAAOtxG,QAAU,EACnB,OACEi/W,EAAAA,GAAAA,KAACg9P,GAAoB,CACnBjkZ,KAAMA,EAENg/G,MAAOh+P,EAAE,aAAag/I,KACtB4+Y,KAAMtlgB,EACN01R,cAAeA,EACf4zO,YAAaA,GAJRp+hB,EAOX,MAIR,CC/KA,MA+FA,GA/F6Bx2B,IAA6B,IAADwvD,EAAA,IAA3B,KAACh3F,GAAqBwnC,EAClD,MAAMkvT,EAAWR,KACXg6P,EAAWC,KAEX0H,EAAkB9C,GAAkB,gBAEpC,WAAC1I,GAAcG,KAErBH,EACErslB,GACAygW,EAAAA,GAAAA,KAAC+pP,GAAY,KAEf,MAAOsT,GAAe/lK,GAAiB,wBAGrCx1a,KAAM61kB,EAAI,UACV34K,EAAS,MACTp6Z,GACEyskB,GAA8BtuO,GAAawyE,YAAa6hK,IAEpDt1kB,KAAMimW,GAAkBspO,GAC9BtuO,GAAa0oK,cACb2rE,GAMF,SAASkG,EAAW3F,GAClB,MAAMjuO,EAA6C,CAAC,EAEpD,IAAKiuO,EAAM,MAAO,GAElB,IAAK,MAAM2D,KAAO3D,EAAM,CAAC,IAAD4F,EACtB,MAAM/mP,EAAa,QAAV+mP,EAAGjC,EAAI9kP,WAAG,IAAA+mP,EAAAA,EAAIjC,EAAIt7mB,GAEtB0pY,EAAQlT,IAGXkT,EAAQlT,GAAKhB,YAAc,wBAC3BkU,EAAQlT,GAAK33Q,QAAU,IAAI6qR,EAAQlT,GAAK33Q,SAAS7mH,OAAOsjnB,EAAIz8f,UAH5D6qR,EAAQlT,GAAO,IAAK8kP,EAMxB,CAEA,OAAOxknB,OAAOkrE,OAAO0nU,EACvB,CAEA,MAAM,EAAE3vT,GAAMquR,MAEdplC,EAAAA,EAAAA,YAAU,KACJp+R,GACF6qkB,EAAS,CACPrtkB,QAAS,+CACTymE,QAAQ,EACR95F,KAAMugmB,GAAc53jB,OAExB,GACC,CAAC9S,EAAO6qkB,IAEX,MAAOxiO,GAAwBmlE,KAE/B,OACEnyF,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAsB,QAAtBp6B,EAAEx8B,EAAE,0BAAkB,IAAAw8B,EAAAA,EAAI,KACvCyoV,GACCh/E,EAAAA,GAAAA,KAACuzP,GAAc,IACI,KAAb,OAAJoE,QAAI,IAAJA,OAAI,EAAJA,EAAM52mB,SACRi/W,EAAAA,GAAAA,KAACyzP,GAAU,CACT17R,MAAM,2BACN27R,MAAOC,GAAO1lV,MAAMj0K,aAEpBqjgB,EAAYv1lB,QAAUmvb,GAAuBumK,SAC/Cx9P,EAAAA,GAAAA,KAAC07P,GAAkB,CACjB/D,KAAM2F,EAAW3F,GACjB5vO,cAAeA,EACf4zO,YAAcL,IACZruO,EAAqB,CAAC4kE,WAAYypK,EAAIt7mB,GAAImtY,aAAcpK,GAAawyE,cACnEt/F,EAAS,KAAOqlQ,EAAIt7mB,GAAG,KAI7BggX,EAAAA,GAAAA,KAACo9P,GAAyB,CACxBzF,KAAM2F,EAAW3F,GACjB5vO,cAAeA,EACf4zO,YAAcL,IACVruO,EAAqB,CAAC4kE,WAAYypK,EAAIt7mB,GAAImtY,aAAcpK,GAAawyE,cACrEt/F,EAAS,KAAOqlQ,EAAIt7mB,GAAG,MAI9B,6BCjGP,MA8HA,GA9H8By9mB,KAAO,IAADlngB,EAElC,MAAOmngB,EAAqBC,IAA0Bp6S,EAAAA,EAAAA,UAEnD,CAAC,IAGFzhS,KAAMomW,EAAY,UAClB82D,GACEqyK,GAA+BtuO,GAAawtH,eAEhDvtL,EAAAA,EAAAA,YAAU,KACHklE,GACLy1O,EACE,IAAIz1O,GACDx5X,MAAK,CAACqwC,EAAGyjB,IAAOzjB,EAAE9+C,KAAQuiE,EAAEviE,MAAS,EAAI,IACzC+jC,QAAO,CAAC45kB,EAA+Cl9I,KACtD,IAAIjnd,EAAMind,EAAQ7iG,YAKlB,OAJK+/O,EAAQnkmB,KACXmkmB,EAAQnkmB,GAAO,IAEjBmkmB,EAAQnkmB,GAAKw7C,KAAKyra,GACXk9I,CAAO,GACb,CAAC,GACP,GACA,CAAC11O,IAAe,IAEd21O,EAAqB,SAArBA,GAAqB,OAArBA,EAAqB,QAArBA,EAAqB,gCAArBA,EAAqB,kBAArBA,EAAqB,iBAArBA,CAAqB,MAO1B,SAASC,EACPrkmB,EACAq0gB,GAEA,IAAKA,EAAS/shB,OAAQ,OAAO88mB,EAAsBE,OACnD,OAAQtkmB,GACN,IAAK,aACH,GAAIq0gB,EAAS/shB,OAAS,EACpB,OAAO88mB,EAAsBG,eAE/B,MACF,IAAK,oBACH,IACGtqgB,KAAOo6a,EAAS,GAAG7thB,KAAM,YAAY61I,SACpCpiC,OAASgrG,SAAS,EAAG,SAGvB,OAAOm/Z,EAAsB95D,QAInC,OAAO85D,EAAsBE,MAC/B,CAEA,MAAM,EAAEhkiB,GAAMquR,KAEd,SAAS61Q,EAAoBxkmB,GAC3B,OAAOA,EACJo3C,MAAM,KACN75D,KAAKknnB,GACJnkiB,EAAE,wBAAwBmkiB,EAAWh7kB,cAAco1G,YAEpDn/H,KAAK,KACV,CAEA,OACE8mW,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAuB,QAAvBp6B,EAAEx8B,EAAE,2BAAmB,IAAAw8B,EAAAA,EAAI,MACzCypQ,EAAAA,GAAAA,KAAC28F,GAAO,IAEP3d,GACCh/E,EAAAA,GAAAA,KAACuzP,GAAc,IAEfz8mB,OAAOgwD,QAAQ42jB,GACZhvmB,OACA1X,KAAI+vD,IAAsB,IAApBttC,EAAKq0gB,GAAS/me,EACnB,OACEi5T,EAAAA,GAAAA,KAACmtP,GAAO,CACNp1R,MAAOkmS,EAAoBxkmB,GAC3BiplB,KACEob,EAAWrkmB,EAAKq0gB,KAChB+vF,EAAsBE,YAAS7lnB,GAC7B8nX,EAAAA,GAAAA,KAACkuP,GAAM,CACL1sZ,OAAK,EACLkhZ,MAAM1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKunS,GAAOxU,MAAO5hgB,QAAS2iR,IAAI,YAC3CkpP,KAAMx2J,GAAMgB,eAIlBtgY,KACEwqiB,EAAWrkmB,EAAKq0gB,KAAc+vF,EAAsBE,YAChD7lnB,EACA,gIACLy4I,UAEDqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMgsf,EACN40E,KAAOjwhB,IACLutS,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACN2pZ,KAAMx2J,GAAMc,OACZgvJ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MAAO5D,GAAMpkf,WAAWsmf,WACxB1wS,MAAM,WAKdv6P,QAAUod,GAA2BA,EAAKlzD,KAC1Cw4T,MAAQtlQ,GACN6gT,GAAyB7gT,EAAKxyE,SAG1B,MAIjB,ECxCP,GA/E4B8mD,IAA6B,IAADwvD,EAAA,IAA3B,KAACh3F,GAAqBwnC,EACjD,MAAMqwjB,EAAkB9C,GAAkB,eAEpC,KAAExykB,EAAI,UAAEk9Z,GAAcqyK,GAC1BtuO,GAAauyE,UACb8hK,IAGI,WAACxL,GAAcG,KAErBH,EACErslB,GACAygW,EAAAA,GAAAA,KAAC+pP,GAAY,KAEf,MAAO7tJ,GAAqB5E,GAAiB,4BACtC8E,GAAe9E,GAAiB,sBAChCkF,GAAelF,GAAiB,sBAChCgF,GAAgBhF,GAAiB,0BAClCnyV,EAAgB,OAAJrjF,QAAI,IAAJA,OAAI,EAAJA,EACd+c,QACDnwC,KACwB,eAAvB4tc,EAAax0b,MAAyBwplB,GAAqB72O,IAEzD+8O,EAA4B,OAATryf,QAAS,IAATA,OAAS,EAATA,EAAWrtH,QACjCqtC,GACEA,EAAEp2B,OAASqjX,GAAasG,yBACvBwjF,EAAkBp0b,OACnBqd,EAAEp2B,OAASqjX,GAAaO,QAAUypF,EAAYt0b,OAC9Cqd,EAAEp2B,OAASqjX,GAAaW,YAAcypF,EAAY10b,OACnDqd,EAAEp2B,OAASqjX,GAAau/D,UAGtB17E,EAAWR,MAEVw3B,GAAwBmlE,MAEzB,EAAEr4X,GAAMquR,KACd,OACE6X,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAqB,QAArBp6B,EAAEx8B,EAAE,yBAAiB,IAAAw8B,EAAAA,EAAI,cAET,KAAb,OAAhBihgB,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBz2mB,SACjBi/W,EAAAA,GAAAA,KAACyzP,GAAU,CAAC17R,MAAM,sBAAsB27R,MAAOC,GAAO1lV,MAAMx+J,WAC1DuvU,GACFh/E,EAAAA,GAAAA,KAACuzP,GAAc,KAEfvzP,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEqvO,EAAAA,GAAAA,KAACmtP,GAAO,CAAAx8d,SACLquT,GACCh/E,EAAAA,GAAAA,KAACwzP,GAAW,CAACzymB,OAAQ,IACF,KAAb,OAAJ+gC,QAAI,IAAJA,OAAI,EAAJA,EAAM/gC,SACRi/W,EAAAA,GAAAA,KAACyzP,GAAU,KAEXzzP,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAM01kB,KACFpD,GACJr8R,MAAO06C,GACP4/O,UAAY5/hB,GACVA,EAAK6iT,cAAWp9X,GAAY8nX,EAAAA,GAAAA,KAACiyP,GAAK,IAEpC58iB,QAAUod,IACR,S9X0BkBp6E,E8X1BKo6E,E9X2BnCp6E,EAAI0W,OAASqjX,GAAaO,OACrBt2B,GAAYhkW,EAA8B6jY,WAG5C7/B,GAAYhkW,EAA8B2vH,U8X/BC6qQ,GAChCpgT,EAAKqgT,QACL,K9XwBb,IAA6Bz6X,C8XtBnB,EACDq6mB,gBAAkBjgiB,IAAU,IAAD0riB,EAAAC,EACzBnxO,EAAqB,CAAC4kE,WAAqC,QAA3BssK,EAAM,OAAJ1riB,QAAI,IAAJA,GAAqB,QAAjB2riB,EAAJ3riB,EAAMupT,uBAAe,IAAAoiP,OAAjB,EAAJA,EAAuBp+mB,UAAE,IAAAm+mB,EAAAA,EAAI1riB,EAAKzyE,GAAImtY,aAAcpK,GAAauyE,YACnGr/F,EAAS,GAAGxjS,EAAKzyE,KAAK,UAOjC,ECnFDq+mB,GAAiB1iK,GAAOjjH,MAAM;;;;;WAKzBi6G,GAAMI;;;EA2BjB,GAtBkChsZ,IAO3B,IAP4B,MACjChgD,EAAK,SACLihB,EAAQ,MACRF,EAAK,SACL2tb,EAAQ,KACR1mc,EAAI,QACJy+D,EAAU,IACXzmB,EACC,OACEi5T,EAAAA,GAAAA,KAACq+P,GAAc,CACbv2lB,MAAOA,EACP2tb,SAAWj+c,GAAMi+c,GAAYA,EAASj+c,EAAEo9F,OAAO9sE,OAAO6oH,SAErDnjE,EAAQx2E,KAAKg/V,IACZgqB,EAAAA,GAAAA,KAAA,UAAQl4V,MAAOkuU,EAAOluU,MAAM6oH,SACzBqlN,EAAOjvV,OADwBivV,EAAOluU,UAI5B,EC7Bfw2lB,GAAgB3iK,GAAOC,GAAG;;;;6BAIHjJ,GAAM4vJ;aACtBlwJ,GAAK1mU,EAAI0mU,GAAKE;SAClBF,GAAKhsZ;;;;;;;;;;;EAsCd,GAzBiBU,IAMK,IANJ,MAChBhgD,EAAK,MACL+gB,EAAK,QACL66kB,EAAO,SACPltJ,EAAQ,QACRjoY,GACczmB,EACd,OACEk5T,EAAAA,GAAAA,MAACq+P,GAAa,CAAC30S,QAASg5R,EAAQhyd,SAAA,EAC9BqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAE5pI,IAEjBymE,GACCwyS,EAAAA,GAAAA,KAACu+P,GAAQ,CAAC/wiB,QAASA,EAASioY,SAAUA,EAAU3tb,MAAOA,KAEvDk4V,EAAAA,GAAAA,KAAC82F,GAAW3kD,OAAM,CAChB6kD,MAAM,QACNpnJ,MAAO+yS,EAAUhwJ,GAAMI,OAASJ,GAAMyB,YAAYzjU,SAEjD7oH,MAGS,EClCd02lB,GAAiB7iK,GAAOC,GAAG;aACpBvJ,GAAK1mU;EAGZ8ye,GAAc9iK,GAAOC,GAAG,GA0B9B,GAxB4B70Z,IAIK,IAJJ,MAC3BrqD,EAAK,QACLmiH,EAAO,WACP7E,GACyBjzD,EACzB,MAAM,EAAEgzB,GAAMquR,KAEd,OACE4X,EAAAA,GAAAA,KAACw+P,GAAc,CAAA7te,UACbqvO,EAAAA,GAAAA,KAACy+P,GAAW,CAAA9te,SACT9xB,EAAQ7nH,KAAI,CAACuoD,EAAGg+B,KAAK,IAAAmhiB,EAAAC,EAAA,OACpB3+P,EAAAA,GAAAA,KAAC4+P,GAAQ,CAEP73mB,MAAOgzE,EAAE,YAAcx6B,EAAEggE,WACzBz3F,MAAO,GAAGy3B,EAAEu/D,yBACkC,QADb4/f,EACF,QADEC,EAC/B3kgB,EAAWy7Q,0BAAkB,IAAAkpP,OAAA,EAA7BA,EAA+BjhnB,qBAAa,IAAAghnB,EAAAA,EAAI,MAH7CnhiB,EAKL,OAGS,ECrCd,IAAKshiB,GAAS,SAATA,GAAS,OAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,iBAATA,EAAAA,EAAS,eAATA,CAAS,MAQrB,MAAMC,GAAc,CAClB,CAACD,GAAUE,SAAU5c,EAAG;wBACFxvJ,GAAMgrJ;IAE5B,CAACkhB,GAAUtyQ,SAAU41P,EAAG;wBACFxvJ,GAAMe;IAE5B,CAACmrK,GAAUnnkB,OAAQyqjB,EAAG;wBACAxvJ,GAAMomK;IAE5B,CAAC8F,GAAUlnkB,SAAUwqjB,EAAG;wBACFxvJ,GAAMc;IAE5B,CAACorK,GAAUn0C,MAAOy3B,EAAG;wBACCxvJ,GAAMS;KAIxB4rK,GAAcrjK,GAAOC,GAAU;aACxBvJ,GAAKhsZ;mBACCgsZ,GAAK1mU;sBACFgnU,GAAMuB;YAChB7B,GAAK1mU;;IAEb5kF,IAAA,IAAC,KAAEh4C,EAAO8vmB,GAAUE,SAASh4jB,EAAA,OAAK+3jB,GAAY/vmB,EAAK;EAGxC,SAASkwmB,GAAKlvjB,GAAiD,IAAhD,SAAE4gF,EAAQ,KAAE5hI,EAAO8vmB,GAAUE,SAAgBhvjB,EACzE,OAAOiwT,EAAAA,GAAAA,KAACg/P,GAAW,CAACjwmB,KAAMA,EAAK4hI,SAAEA,GACnC,CCpBA,MAgJA,GAhJgCuue,KAAO,IAADC,EAAAC,EAAA7ogB,EAEpC,MAAM,QAAE3uF,EAAO,WAAEiqb,GAAep7F,MAExB30U,KAAMk4E,GAAek1f,GAC3BnsO,GAAawyE,YACb1D,EACAjqb,IAAYiplB,GAAUp8J,aAEhB3ya,KAAMkmW,GAAiBknO,GAC7BnsO,GAAa0oK,cACH,OAAVzxb,QAAU,IAAVA,OAAU,EAAVA,EAAYh6G,GACZ4nB,IAAYiplB,GAAUp8J,aAGhB3ya,KAAMi0V,GAAem5O,GAC3BnsO,GAAayyE,UACH,OAAVx7V,QAAU,IAAVA,OAAU,EAAVA,EAAYgO,IACZpgG,IAAYiplB,GAAUp8J,aAyBlB,EAAE16X,GAAMquR,MACPukC,GAAgBoxE,KACjBshK,EAAc1P,GAAgB,CAClCM,WAAY,8BACZC,aAAc,8DACdN,UAAWA,IACTjjO,EAAa,CACXpF,YAAa,CAACvtR,GACdgO,IAAe,OAAVhO,QAAU,IAAVA,OAAU,EAAVA,EAAY6E,QAAQ,GAAGk3Q,aAEhC+5O,oBAAqB,yDACrBD,kBAAmB,uBAcrB,MAAMhxf,EAAU/nH,OAAOgwD,QAXvB,SAAoB+3D,GAClB,OAAKA,EACEA,EAAQ76E,QAAO,CAACkxB,EAA0Cud,KAC1Dvd,EAAOud,EAAKsjT,cAAc7gU,EAAOud,EAAKsjT,YAAe,IAC1D7gU,EAAOud,EAAKsjT,YAAa9gU,KAAKwd,GACvBvd,IACN,CAAC,GALiB,CAAC,CAMxB,CAI+BoqjB,CAAqB,OAAVtlgB,QAAU,IAAVA,OAAU,EAAVA,EAAY6E,UAGtD,OACEohQ,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAEwqe,GAAiC,OAAVnhgB,QAAU,IAAVA,OAAU,EAAVA,EAAYz6F,SACnDygW,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,MAED,OAAV7hW,QAAU,IAAVA,GAAmB,QAATmlgB,EAAVnlgB,EAAY6E,eAAO,IAAAsggB,IAAnBA,EAAqBp+mB,UACtBi/W,EAAAA,GAAAA,KAACmtP,GAAO,CACNp1R,MAAM,eACNzkQ,KAAM,GAAGyG,EAAE,8BAA8BsiR,GACvC05B,OACIlD,GAAW74Q,EAAW6yB,WAAW8D,SAE5B,OAAV32B,QAAU,IAAVA,GAAmB,QAATolgB,EAAVplgB,EAAY6E,eAAO,IAAAuggB,GAAnBA,EAAqBr+mB,OACpB89G,EAAQ7nH,KAAI+vD,IAAA,IAAEihE,EAAKg0O,GAAKj1S,EAAA,OACtBi5T,EAAAA,GAAAA,KAACu/P,GAAmB,CAElB7inB,MAAOsrH,EACPnJ,QAASm9O,EACThiP,WAAYA,GAHPgO,EAIL,KAGJg4P,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAY,OAAV32B,QAAU,IAAVA,OAAU,EAAVA,EAAYi8Q,cAKzB,OAAVj8Q,QAAU,IAAVA,OAAU,EAAVA,EAAYk8Q,sBACXlW,EAAAA,GAAAA,KAACmxP,GAAO,CACN5skB,KAAgB,OAAVy1E,QAAU,IAAVA,OAAU,EAAVA,EAAYk8Q,mBAClBjrR,OAAQ8qR,EACR91X,KAAM4yX,GAAW74Q,EAAW6yB,WAmB/Bm7P,IAES,OAAVhuR,QAAU,IAAVA,OAAU,EAAVA,EAAY07Q,cACG,OAAZsS,QAAY,IAAZA,OAAY,EAAZA,EAAcx9W,UAAW2nW,GAA0B0G,OAClD7Y,EAAAA,GAAAA,KAACi/P,GAAK,CAAClwmB,KAAM8vmB,GAAUlnkB,QAAQg5F,UAC7BqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SACyB,QADzBp6B,EACbx8B,EAAE,4CAAoC,IAAAw8B,EAAAA,EAAI,QAI/C0pQ,EAAAA,GAAAA,MAACwjP,GAAW,CAAA9yd,SAAA,EACVqvO,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,KACd77F,EAAAA,GAAAA,KAAC2jP,GAAM,CACLtB,SAAO,EACPtqR,MAAOh+P,EAAE,oBACT4ohB,QAAS0c,UAIhB,ECVP,GAxH+Bt4jB,IAA6B,IAADwvD,EAAA,IAA3B,KAACh3F,GAAqBwnC,EACpD,MAAOy4jB,GAAcloK,GAAiB,kBAC/BmoK,GAAiBnoK,GAAiB,qBAClCooK,GAAYpoK,GAAiB,eAG9B8/J,EAAkB9C,GAAkB,YAEpC,WAAC1I,GAAcG,KAErBH,EACErslB,GACAygW,EAAAA,GAAAA,KAAC+pP,GAAY,KAGf,MACEjokB,KAAMwkW,EAAY,UAClB04D,GACEqyK,GAA8BtuO,GAAa6K,aAAcwpO,GACvDnhQ,EAAWR,KAEXylP,EAAYskB,EAAW13lB,MACb,OAAZw+W,QAAY,IAAZA,OAAY,EAAZA,EACIxuY,QACCinD,GACCA,EAAEv0B,SAAWknW,GAAqB4H,QAClCv6U,EAAEv0B,SAAWknW,GAAqBn4L,UAErCzhM,OAAOg6X,IACPpjX,KAAKkjX,IACR,GAEEupO,EAA8BskB,EAAc33lB,MAClC,OAAZw+W,QAAY,IAAZA,OAAY,EAAZA,EACIxuY,QAAQinD,GAAMA,EAAEv0B,SAAWknW,GAAqB4I,WACjDxiY,OAAOg6X,IACPpjX,KAAKijX,IACR,GAEEx3I,EAA0BulY,EAAS53lB,MACzB,OAAZw+W,QAAY,IAAZA,OAAY,EAAZA,EAAcxuY,OAAOw1O,IAAQ5+N,KAAKijX,IAClC,IAEE,EAAE53S,GAAMquR,MAEP6kC,GAAwBmlE,KAE/B,OACEnyF,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAkB,QAAlBp6B,EAAEx8B,EAAE,sBAAc,IAAAw8B,EAAAA,EAAI,WACnCyoV,GACCh/E,EAAAA,GAAAA,KAACuzP,GAAc,IACY,KAAb,OAAZjtO,QAAY,IAAZA,OAAY,EAAZA,EAAcvlY,UACR,OAARo6lB,QAAQ,IAARA,OAAQ,EAARA,EAAUp6lB,SAAkB,OAATm6lB,QAAS,IAATA,OAAS,EAATA,EAAWn6lB,SAAa,OAAJo5O,QAAI,IAAJA,OAAI,EAAJA,EAAMp5O,UAAW,GACxDi/W,EAAAA,GAAAA,KAACyzP,GAAU,CACT17R,MAAM,6BACN27R,MAAOC,GAAO1lV,MAAO+4G,UAGvB/mB,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,CACG6ue,EAAW13lB,QAAkB,OAATozkB,QAAS,IAATA,OAAS,EAATA,EAAWn6lB,QAAS,IACvCi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,oBAA8B42D,UAC9CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMo5jB,KACF+Y,GACJvB,gBAAkBjgiB,IAChBw6T,EAAqB,CAAC4kE,WAAYp/X,EAAKzyE,GAAImtY,aAAcpK,GAAa6K,eACtE33B,EAAS,KAAKxjS,EAAKzyE,KAAK,MAM/By/mB,EAAc33lB,QAAiB,OAARqzkB,QAAQ,IAARA,OAAQ,EAARA,EAAUp6lB,QAAS,IACzCi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAOh+P,EAAE,mBAA6B42D,UAC7CqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMq5jB,KACF8Y,GACJxJ,SAAWh4hB,GAASA,EAAKslQ,MACzBs6R,UAAY5/hB,IAAI,IAAAyhiB,EAAA,OACdl0P,EAAAA,GAAAA,KAACkuP,GAAM,CACL1sZ,OAAK,EACLnpE,OAAyB,QAAnB67d,EAAEzhiB,EAAK0mT,oBAAY,IAAA+6O,OAAA,EAAjBA,EAAmBlxkB,MAAMqtE,IAAOs+f,GAAWt+f,MACnD,EAEJqigB,gBAAkBjgiB,IAChBw6T,EAAqB,CAAC4kE,WAAYp/X,EAAKzyE,GAAImtY,aAAcpK,GAAa6K,eACtE33B,EAAS,MAAM46P,GAAUvkG,UAAU75b,EAAKzyE,KAAK,EAE/C0imB,KAAOjwhB,IACLutS,EAAAA,GAAAA,KAACkuP,GAAM,CACLzuZ,QAAM,EACN2pZ,KAAMx2J,GAAMmC,WACZ2tJ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MAAO5D,GAAMjB,YAAYsD,MACzB7wS,MAAO+iJ,GAAME,cAS1B6sK,EAAS53lB,QAAa,OAAJqyN,QAAI,IAAJA,OAAI,EAAJA,EAAMp5O,QAAS,IAChCi/W,EAAAA,GAAAA,KAACmtP,GAAO,CAACp1R,MAAM,wBAAoBpnM,UACjCqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMq4M,KACF85X,GACJvB,gBAAkBjgiB,GAASwjS,EAAS,KAAKxjS,EAAKzyE,eAMvD,EChIDkpmB,GAAkBvtJ,GAAOC,GAAG;;SAEzBvJ,GAAKE;EAmFd,GAhF4BxrZ,IAA6B,IAADwvD,EAAA,IAA3B,KAACh3F,GAAqBwnC,EACjD,MAAMqwjB,EAAkB9C,GAAkB,eAEpC,KAAExykB,EAAI,UAAEk9Z,GAAcqyK,GAC1BtuO,GAAayyE,UACb4hK,GAGIxC,EAAcH,KAEd0B,EAAW3B,MACX,EAAEz6hB,GAAMquR,KAEd,OACE6X,EAAAA,GAAAA,MAAAG,GAAAA,SAAA,CAAAzvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWP,GAAE,CAAA5lU,SAAgB,QAAhBp6B,EAAEx8B,EAAE,oBAAY,IAAAw8B,EAAAA,EAAI,KAEhB,KAAb,OAAJz0E,QAAI,IAAJA,OAAI,EAAJA,EAAM/gC,SACLi/W,EAAAA,GAAAA,KAACyzP,GAAU,CAAC17R,MAAM,sBAAsB27R,MAAOC,GAAO1lV,MAAMx+J,WAC1DuvU,GACFh/E,EAAAA,GAAAA,KAACuzP,GAAc,KAEfvzP,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEqvO,EAAAA,GAAAA,KAACmtP,GAAO,CAAAx8d,UACNqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACN3wkB,KAAMA,EACNi2S,MAAQtlQ,GAAmB4pR,GAAW5pR,GACtCpd,QAAUod,GACRA,EAAK+wC,UAAYgvQ,GAAsB//S,EAAK+wC,WAAa,GAE3Dk/e,KAAOjwhB,IAAmButS,EAAAA,GAAAA,KAACkuP,GAAM,CAAC71d,OAAQ5lE,IAC1C4/hB,UAAY5/hB,IAAc,IAAAktiB,EAAAC,EAAAC,EAAA,OACxB5/P,EAAAA,GAAAA,MAACipP,GAAe,CAAAv4d,SAAA,EAET,OAAJl+D,QAAI,IAAJA,GAAa,QAATktiB,EAAJltiB,EAAMmhH,eAAO,IAAA+rb,OAAT,EAAJA,EAAe38iB,MACb4wH,GAAYA,EAAQz0C,MAAQ+yO,GAAgB8L,YAE7Che,EAAAA,GAAAA,KAAA,KACEzwQ,KAAM,OACA,OAAJ98B,QAAI,IAAJA,GAAa,QAATmtiB,EAAJntiB,EAAMmhH,eAAO,IAAAgsb,GAEZ,QAFYC,EAAbD,EAAe58kB,MACZ4wJ,GAAYA,EAAQz0C,MAAQ+yO,GAAgB8L,gBAC9C,IAAA6hP,OAFG,EAAJA,EAEG/3lB,QACF6oH,UAEHqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CACLnB,QAAM,EACNhhZ,OAAK,EACLkhZ,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MAAO5D,GAAMe,MAAMW,cACnBlwS,MAAO+iJ,GAAMO,mBAMvBlzF,EAAAA,GAAAA,KAAC2jP,GAAM,CACLniZ,OAAK,EACLghZ,QAAM,EACNG,QAASA,KACPwT,GAASn2P,EAAAA,GAAAA,KAACw2P,GAAqB,GAAK,uBACpC5B,EAAY,MAAOniiB,EAAKzyE,GAAG,EAE7B0imB,MACE1iP,EAAAA,GAAAA,KAAC4oP,GAAI,CACH5G,MAAO5D,GAAMe,MAAMY,cACnBnwS,MAAO+iJ,GAAMO,kBAIH,UAM3B,ECvFA,IAAK29J,GAAS,SAATA,GAAS,OAATA,EAAS,YAATA,EAAS,gBAATA,EAAS,sBAATA,EAAS,kBAATA,EAAS,0BAATA,EAAS,wBAATA,EAAS,oBAATA,EAAS,sBAATA,CAAS,MAYrB,MA6DMiP,GAAYA,CAACl4lB,EAAiBiqb,KAClC,OAAQjqb,GACN,KAAKiplB,GAAUp8J,WACb,OAAO5C,EAAa,EAAI,EAC1B,KAAKg/J,GAAUl8J,YACb,OAAO,EACT,KAAKk8J,GAAUv7J,UACb,OAAOzD,EAAa,EAAI,EAE1B,KAAKg/J,GAAUvkG,OACb,OAAOz6D,EAAa,EAAI,EAC1B,KAAKg/J,GAAUr7J,UACb,OAAO,EAET,QACE,OAAO,EACX,EAGF,GAhFoBuqK,KAClB,MAAM,WAAEluK,EAAU,QAAEjqb,GAAY6uV,MAW1B,EAAE18R,GAAMquR,MAGP8hC,GAAqByzE,KAEGgyJ,GAAgB,CAC7C7tkB,KAAM+va,EACNo+J,WAAY,0BACZC,aACE,mFACFN,UAAWA,IAAM1lO,EAAkB2nE,GACnCi+J,oBACE,6GACFD,kBAAmB,0BAKrB,OACE7vP,EAAAA,GAAAA,KAACgsP,GAAmB,CAAAr7d,UACpBsvO,EAAAA,GAAAA,MAAC82P,GAAU,CACTvK,YAAasT,GAAiB,OAAPl4lB,QAAO,IAAPA,EAAAA,EAAW,GAAIiqb,GAEtC95H,MACah+P,EAAXnyD,EAAa,QAAQA,IAA2B,aAElD6klB,aAAazsP,EAAAA,GAAAA,KAAC0rP,GAAU,CAACnC,OAAQ3hlB,IAAY+oH,SAAA,EAE7CqvO,EAAAA,GAAAA,KAACggQ,GAAU,CAACzgmB,KAAMsxlB,GAAUvmF,QAE5BtqK,EAAAA,GAAAA,KAACigQ,GAAoB,CAAC1gmB,KAAMsxlB,GAAUp8J,cACtCz0F,EAAAA,GAAAA,KAACk/P,GAAuB,KAExBl/P,EAAAA,GAAAA,KAACy9P,GAAqB,KAEtBz9P,EAAAA,GAAAA,KAACkgQ,GAAmB,CAAC3gmB,KAAMsxlB,GAAUv7J,aACrCt1F,EAAAA,GAAAA,KAACo6P,GAAkB,KAEnBp6P,EAAAA,GAAAA,KAACmgQ,GAAsB,CAAC5gmB,KAAMsxlB,GAAUvkG,UACxCtsJ,EAAAA,GAAAA,KAACogQ,GAAwB,CAAC7gmB,KAAK,kBAE/BygW,EAAAA,GAAAA,KAACqgQ,GAAmB,CAAC9gmB,KAAMsxlB,GAAUr7J,gBAIjB,EClFpB6nJ,GAAcC,EAAS;;;;;;;;;;;EAYvBC,GAAeD,EAAS;;;;;;;;;EAWxBgjB,GAAmB3kK,GAAOC,GAAG;aACtBvJ,GAAK3mU,OAAO2mU,GAAK3mU;QACtB2mU,GAAKyvJ,IAAMzvJ,GAAK1mU;UACd0mU,GAAK1mU;uBACQ6mU,GAAWx0E;UACxBq0E,GAAKyvJ,IAAMzvJ,GAAK0J;YACd1J,GAAK3mU;;;;;;;oBAOGinU,GAAM4vJ;kBACRlwJ,GAAKE;aACVE,GAAU/mU;;;aAGV6xd,MAAgB7qJ,GAAOgrJ;;;uBAGblrJ,GAAWu1J;kBAChB11J,GAAKyvJ;;;;;;;;;;;;;;;gBAePzE;;;;EAgBhB,GANsBt2iB,IAAA,IAAC,SAAE4pF,GAAwB5pF,EAAA,OAC/Ci5T,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEqvO,EAAAA,GAAAA,KAACsgQ,GAAgB,CAACvqa,UAAU,UAASplE,SAAEA,KACtC,ECpDL,GArBsB4ve,KACpB,MAAOf,EAAYgB,GAAgBlpK,GAAiB,kBAC7CmoK,EAAegB,GAAmBnpK,GAAiB,qBACnDooK,EAAUgB,GAAcppK,GAAiB,eAEhD,OACEt3F,EAAAA,GAAAA,KAAC08F,GAAc,CACf31c,MAAOgzE,GAAE,oBACPvM,QAAS,CACP,CACEzmE,MAAO,2BACP+gB,MAAO03lB,EACP97mB,OAAQ88mB,GAEV,CAAEz5mB,MAAO,eAAa+gB,MAAO23lB,EAAe/7mB,OAAQ+8mB,GACpD,CAAE15mB,MAAO,wBAAsB+gB,MAAO43lB,EAAUh8mB,OAAQg9mB,KAE1D,ECSN,GApB0BC,KACxB,MAAOC,EAAUC,GAAevpK,GAAiB,wBAC3C,EAAEv9X,GAAMquR,KACd,OACE4X,EAAAA,GAAAA,KAAC08F,GAAc,CACb31c,MAAOgzE,EAAE,oBACTvM,QAAS,CACP,CACEzmE,MAAO,cACP+gB,MAAO84lB,EACPl9mB,OAAQm9mB,EACRrziB,QAAS12E,OAAOkrE,OAAOi1Y,IAAwBjgd,KAAK2jU,IAC3C,CAAE36T,GAAI26T,EAAM5zT,MAAOgzE,EAAE,aAAa4gP,KAAS7yS,MAAO6yS,SAI/D,EC2DN,GAxEiBmmT,KACEn+P,GAAYqyE,IAA7B,MAEM,EAAEj7W,EAAC,KAAE83B,GAASu2P,MAEbvoW,EAAUm9c,GAAe1F,GAAiB,YAE3C32I,EAAWyjD,MAEjBphD,EAAAA,EAAAA,YAAU,KACJnjU,EAASioB,QAAU+pW,KAAAA,WACrBA,KAAAA,OAAahyX,EAASioB,OACtB+pF,EAAKouP,eAAepgW,EAASioB,OAC/B,GACC,CAACjoB,IAoBJ,OACEmgX,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,UACEsvO,EAAAA,GAAAA,MAACy8F,GAAc,CACb31c,MAAOgzE,EAAE,qBACTvM,QAAS,CACP,CACE1lD,MAAOjoB,EACP6D,OAAQs5c,EACRxvY,QAASsvY,GAAgB9ld,KAAKknH,IACrB,CAAEl+G,GAAIk+G,EAAMn3G,MAAOgzE,EAAE,YAAYmkC,KAASp2F,MAAOo2F,QAG5DyyB,SAAA,EAEFqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CACL5rR,MAAOh+P,EAAE,+BACTqohB,WAAW,QACXO,QAASA,IAnCD5iR,WACd,IAAIvhS,EAAY,EAChB,MAAMuikB,EAA8C5tL,GAAkBj0E,SACtE,IAAK,MAAM8hQ,KAAuBD,EAAsB,CACtD,MAAME,SAA0CD,EAAoB10O,6BAA6Bx0Y,OAAO6tM,SAExG,IAAK,MAAMk5L,KAAyBoiP,EAC7BpiP,IACLjO,GACIiO,EACA,2BACA,GAAGmiP,EAAoBpyO,kBAAkB5uY,oBAAoBw+C,SAEjEA,IAEJ,CAAC,EAoBoB0ikB,MAGjBlhQ,EAAAA,GAAAA,KAAC2jP,GAAM,CACL5rR,MAAOh+P,EAAE,mBACTqohB,WAAW,OACXO,QAASA,IAAMhiS,EAAS1iU,YAW3B,EC5EMkjnB,GAAY,wBAGnBC,GAAW,kFAEXC,GAAW9+kB,OAAO+sE,SAASm/F,OAEpB6ya,GAAiB,YAEjBC,GAAe,GAAGF,KAAWC,KAC7BE,GAAgB,GAAGJ,UACnBK,GAAiB,GAAGL,WAEpBM,GAAgB,GAAGN,cCRnBO,GAAmBA,KAE9B98kB,QAAQgvB,IAAI,oBACZhvB,QAAQgvB,IAAO,GAAG2tjB,gBAA2BL,4CAAmDtjkB,KAAKqxF,MACnF,IAAhBrxF,KAAK+lC,sCACuB7qF,mBAAmBwonB,OAGjDh/kB,OAAO2iU,KACL,GAAGs8Q,gBAA2BL,4CAAmDtjkB,KAAKqxF,MACpE,IAAhBrxF,KAAK+lC,sCACuB7qF,mBAAmBwonB,MAEjD,QACD,EAGUphlB,GAAW4/S,UACtB,MAAMj+S,EAAO,CACX8/kB,WAAY,qBACZ3ymB,KAAMA,EACN4ymB,aAAcN,GACdO,UAAWX,IAGb,IACE,MAAM19kB,QAAiBjB,MAAM,uCAAuCi/kB,GAAgB,CAClFtjnB,OAAQ,OACR/H,QAAS,CACP,eAAgB,oDAElBsB,KAAM,IAAI4jX,gBAAgBx5U,GAAMod,aAG5B6ikB,QAAqBt+kB,EAASwB,OAE9BquC,QAAa9wC,MAAM,uCAAuCk/kB,GAAe,CAC7EvjnB,OAAQ,OACR/H,QAAS,CACPgrJ,cAAe,UAAU2ge,EAAaC,kBAIpCC,QAAiB3uiB,EAAKruC,OAG5B,MAAO,CAACjnC,MAAM+jnB,EAAaC,aAAa1uiB,KAAK,CAACzhD,UAAUowlB,EAASC,WAAWpwlB,SAASmwlB,EAASE,YAAYninB,GAAGiinB,EAASvsf,MACxH,CAAE,MAAO9wF,GACPC,QAAQD,MAAMA,EAChB,GC/CmC,IAEhCw9kB,GAAiB,SAAjBA,GAAiB,OAAjBA,EAAiB,0BAAjBA,CAAiB,EAAjBA,IAAiB,IAIf,MAAM7jd,GAAoB4xS,GAAcjQ,gBAAgB,CAC7DG,kBAAkB,EAClBD,UAAY31E,IAAO,CAIjB5pO,QAAS4pO,EAAQw6C,SAA8C,CAC7DmjC,QAASroH,MAAOl8S,EAAa82B,KAC3B,MAAMm5X,QAAoBX,GAAkBM,sBAC1C5vZ,GAG2B,IAADw+kB,EAAxBvuL,EAAY/yb,OAAS,GACvB45D,EAAIgmQ,SAASi0H,GAAe,CAAC/wZ,YAAYA,EAAYyvC,KAAkC,QAA9B+uiB,EAACvuL,EAAY9wZ,MAAKy/B,GAAKA,EAAE6Q,cAAK,IAAA+uiB,OAAA,EAA7BA,EAA+B/uiB,QAoB3F,OAjBAwgX,EAAYpmX,SAASgmX,IACnB,MAAML,EAAYK,EAAWL,UAE7B,OADA14X,EAAIgmQ,SAAS2zH,GAAsBZ,IAC5BP,GAAkBI,wBACvBF,EACAK,GAECt7b,MAAMqqE,IACL9H,EAAIgmQ,SACF4zH,GAAkB,IAAIb,EAAWpgX,KAAK7Q,EAAEk+B,UACzC,IAEFpoG,OAAOf,IACNmjE,EAAIgmQ,SAAS0zH,GAAgB,IAAIX,EAAW9uZ,MAAMptC,IAAI,GACtD,IAGC,CAAEsqC,KAAMgyZ,EAAa,IAKhC71b,OAAQwsX,EAAQw6C,SAAuB,CACrCmjC,QAASroH,UAEP,MAAM1tO,QAAcy7B,aAAaq6H,aACjC,IAAK,MAAM11L,KAAQ4/B,EACb5/B,IAAS2viB,GAAkBxoB,mBAEvB9rd,aAAaP,WAAW96D,GAGlC,MAAO,CACL3wC,KAAM,KACP,EAEHgwa,gBAAiB,CAAC/uE,GAAayyE,kBAKtB8sK,kBAAiB,GAAEC,mBAAmB,IAAIhkd,GC9D1C,SAASikd,KACtB,MAAOr3jB,GAAUwzT,KAIX1I,GADWmO,KACA3O,OAoBR50N,IAlBQ2zd,KAkBG+N,MAkBdtzmB,EAAOk8C,EAAOzmB,IAAI,QAKxB,OAHAs+R,EAAAA,EAAAA,YAAU,KACJ/zT,GAnBiB8wU,WACrBl7S,QAAQgvB,IAAI,qBACZ,MAAM4ujB,EAAY,UAAUtilB,GAASlxB,GAAMo3X,SAASp0U,GAAcywjB,QAO9DD,EAAUzknB,QACZ6iJ,EAAQ4he,GACRxsQ,EAAS,QAEX,EAMU0sQ,CAAe1zmB,EAAK,GAC7B,CAACA,KAEF+wW,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,CAAAzvO,SAAE,OAEN,CC5De,SAASiye,KACtB,OACE3iQ,EAAAA,GAAAA,MAAA,OAAAtvO,SAAA,EACEqvO,EAAAA,GAAAA,KAAC82F,GAAWL,GAAE,CAAA9lU,SAAC,sBACfqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAAAi5I,SAAC,4EAIjBsvO,EAAAA,GAAAA,MAACwjP,GAAW,CAAA9yd,SAAA,EACVqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CAACtB,SAAO,EAACtqR,MAAM,+BACtBioC,EAAAA,GAAAA,KAAC2jP,GAAM,CAAC5rR,MAAM,+BAItB,CCFA,MAAMq0R,GAAYzwJ,GAAOC,GAAG;;;;;;;EA8E5B,GArEoBinK,KAClB,MAAMliT,EAAWyjD,MAEVvjO,GAAS,UAAEm+S,IAAeujL,MAC1BO,EAAiBC,IAAsBx/S,EAAAA,EAAAA,WAAS,IAEhDp4Q,GAAUwzT,KACXvgS,EAAcjzB,EAAOzmB,IAAI,QAIxB3D,IAASwiS,EAAAA,EAAAA,UAAS,gCAClB/jT,IAAY+jT,EAAAA,EAAAA,UAAS,cAK5BP,EAAAA,EAAAA,YAAU,KACJ5kP,GACFuiP,EAASozH,GAAe31W,GAC1B,GACC,CAACA,EAAauiP,IAGjB,MAAMgiT,GAAiB7/S,EAAAA,EAAAA,cAAYid,UACjCl7S,QAAQgvB,IAAI,qBACZkvjB,GAAmB,GACnB,MAAMN,EAAY,UAAUtilB,GAASlxB,GAAOqjD,cAAcL,GAAcywjB,QACxEK,GAAmB,GACfN,EAAUzknB,OACZ6iJ,EAAQ4he,EACV,GACC,CAAC5he,EAASkie,IAEP9zmB,EAAOk8C,EAAOzmB,IAAI,SACxBs+R,EAAAA,EAAAA,YAAU,KACJ/zT,GAAM0zmB,EAAe1zmB,EAAK,GAC7B,CAACA,EAAM0zmB,IAGV,MAAM,EAAE5oiB,GAAMquR,KAEd,OACE6X,EAAAA,GAAAA,MAACmsP,GAAS,CAAAz7d,SAAA,EAEdsvO,EAAAA,GAAAA,MAAA,OAAAtvO,SAAA,EACAqvO,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC7G,cAAY,EAACC,MAAO5D,GAAMkD,cAAcI,UAC9C1hP,EAAAA,GAAAA,KAAC28F,GAAO,CAACb,QAAM,KAET97F,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACs/c,MAAM,SAAQrmU,SAAC,sIAE9BsvO,EAAAA,GAAAA,MAACwjP,GAAW,CAACzkK,UAAWA,GAAa8jL,EAAgBnye,SAAA,EACnDqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CACLtB,SAAO,EACPtqR,MAAOh+P,EAAE,iBACT4ohB,QAASgf,MAGX3hQ,EAAAA,GAAAA,KAAC2jP,GAAM,CAAC5rR,MAAM,aAAa4qR,QAASA,IAAM9hd,EAAQ,CAAEmhB,SAAUjhI,EAAOvhB,sBAIzEygW,EAAAA,GAAAA,MAAC62F,GAAWt1P,MAAK,CAACw1P,MAAM,SAAQrmU,SAAA,CAAC,mDACgBqvO,EAAAA,GAAAA,KAAA,KAAGzwQ,KAAK,SAAQohC,SAAC,qBAAoB,SAAKqvO,EAAAA,GAAAA,KAAA,KAAGzwQ,KAAK,WAAUohC,SAAC,mBAAkB,SAEtH,wyICzFD,SAASqye,KACpB,OAEIhjQ,EAAAA,GAAAA,KAAA,OAAKjqK,UAAU,UAASplE,UACtBsvO,EAAAA,GAAAA,MAAA,OACElqK,UAAU,YACV4pK,MAAM,6BACND,QAAQ,YAAW/uO,SAAA,EAEnBqvO,EAAAA,GAAAA,KAAA,UACEjqK,UAAU,oBACV8pK,GAAG,KACHC,GAAG,KACHvgU,EAAE,KACF23J,KAAK,UAEP8oK,EAAAA,GAAAA,KAAA,QACEjqK,UAAU,mBACVmB,KAAK,OACL/xK,EAAE,qCAOd,CCvBa,SAASs1hB,KACpB,OAEGz6M,EAAAA,GAAAA,KAACkuP,GAAM,CACIryJ,OAAK,EACL6mJ,MAAM1iP,EAAAA,GAAAA,KAAA,OAAK5zC,IAAKunS,GAAOxU,MAAO5hgB,UAC9B6rgB,KAAMx2J,GAAMgB,cAM5B,CCPF,MA+BA,GA/B0BqvK,KAItBhjQ,EAAAA,GAAAA,MAAA,OAAK16I,MAAO,CAACtmI,QAAQozW,GAAKhsZ,GAAGsqF,SAAA,EAE7BqvO,EAAAA,GAAAA,KAAC4oP,GAAI,CAAC7G,cAAY,EAACC,MAAO5D,GAAMkD,cAAcE,eAC9CxhP,EAAAA,GAAAA,KAAC28F,GAAO,KACN38F,EAAAA,GAAAA,KAAC82F,GAAWL,GAAE,CAACO,MAAM,SAAQrmU,SAAC,6BAC9BqvO,EAAAA,GAAAA,KAAC28F,GAAO,KACR38F,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACs/c,MAAM,SAAQrmU,SAAC,oLAIhCqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACs/c,MAAM,SAAQrmU,SAAC,2FAGhCqvO,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACs/c,MAAM,SAAQrmU,SAAC,+HAMhCqvO,EAAAA,GAAAA,KAACyjP,GAAW,CAAA9yd,UACVqvO,EAAAA,GAAAA,KAAC2jP,GAAM,CAAC5rR,MAAM,sBCwHtB,GAtIyBmrS,KAAO,IAADC,EAAAC,EAC7B,MAAMziT,EAAWyjD,KAEX0vE,EAAcnxE,GAAYoyE,KAEzBsuL,EAAmBC,IACxB//S,EAAAA,EAAAA,aAEO1iL,GAAW0he,MAEbgB,EAAYC,IAAiBjgT,EAAAA,EAAAA,WAAS,GACvCkgT,GAAYngT,EAAAA,EAAAA,QAAyB,MAErCogT,EAAYlP,MAGXmP,EAAcC,IAAmBrgT,EAAAA,EAAAA,WAAS,IAcjDP,EAAAA,EAAAA,YAAU,KACR,MAAM6gT,EAAoB/vL,EAAYh8b,QACnC47b,GAAeA,EAAWlpa,SAAW0oa,GAAiBpzS,YAGvDg0S,EAAY/yb,OAAS,GACrB+yb,EAAY/yb,OAAS8inB,EAAkB9inB,SAAW,GAClD4inB,EAEAnglB,YAAW,KACToglB,GAAgB,GAChB,MAAMnhjB,EAAIohjB,EAAkB7glB,MAAKy/B,GAAKA,EAAE2b,aAAe3b,EAAE8+T,MACrD9+T,IACFihjB,GAAU1jQ,EAAAA,GAAAA,KAACijQ,GAAiB,KAzBhBa,EAACrqmB,EAAW8F,KAC5B,MAAMsxF,EAAO,IAAIjzF,KAAK,CAACnE,GAAM,CAAE1K,KAAM,6BAC/BwgG,EAAOF,IAAIyvO,gBAAgBjuO,GAC3BoL,EAAOgJ,SAASspI,cAAc,KACpCtyI,EAAK1M,KAAOA,EACZ0M,EAAKi1Q,SAAW3xW,EAChB0lG,SAASvtH,KAAKq7P,YAAY92I,GAC1BA,EAAKk1Q,QACLlsQ,SAASvtH,KAAK+6P,YAAYx2I,EAAK,EAkB7B6ngB,CAAa,OAADrhjB,QAAC,IAADA,OAAC,EAADA,EAAG8+T,IAAK,kBAEpB,GAEC,KAGHiiP,EAAcK,EAAkB9inB,OAAS,EAC3C,GACC,CAAC+yb,EAAanzH,EAAUgjT,EAAcD,IAEzC,MAAMK,EAAkBvsnB,IAAkC,IAADwsnB,EACvD,MAAMp9jB,EAAkB,QAAXo9jB,EAAGxsnB,EAAEo9F,cAAM,IAAAovhB,OAAA,EAARA,EAAU9ujB,OACtBtO,GAA8B,kBAAZA,GAEnBi6F,EAAQ,IACFwie,EAAmBx/kB,YACtB09V,IAAK36U,GACL,EAaF+5C,EAAwC,QAAjCwihB,EAAGxgQ,GAAYqyE,WAAkB,IAAAmuL,OAAA,EAA9BA,EAAiC,IAC3C,EAAEppiB,GAAMquR,KAEd,OACE6X,EAAAA,GAAAA,MAAA,OAAK16I,MAAO,CAACumG,QAAQ,OAAOgjS,cAAc,SAAUvB,WAAW,UAAU58d,SAAA,EACxEqvO,EAAAA,GAAAA,KAACikQ,GAAe,CACb73S,IAAI,2EACJz8E,WAAW,cACXiyF,MAAO,EACPr8G,MAAO,CAAEzO,MAAO,IAAK2wB,OAAQ,KAC7BoiD,UAAW,EACX63C,KAAMiiS,EACNriS,UAAQ,KAEV0+B,EAAAA,GAAAA,KAAC28F,GAAO,CAACd,OAAK,KACd57F,EAAAA,GAAAA,MAAC62F,GAAWJ,GAAE,CAACM,MAAM,SAAQrmU,SAAA,CAAC,aAA6B,QAAnByye,EAAQ,OAAPzihB,QAAO,IAAPA,OAAO,EAAPA,EAAS9uE,iBAAS,IAAAuxlB,EAAAA,EAAI,GAAG,QAClEpjQ,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACs/c,MAAM,SAAQrmU,SAAC,yDAIhCqvO,EAAAA,GAAAA,KAAA,SACEjxW,KAAK,OACL/O,GAAG,OACHmmV,OAAO,OACP5gH,MAAO,CAAEumG,QAAS,QAClB2pI,SAAWj+c,IAAO,IAAD0snB,EAAAC,EAAAC,EACH,QAAZF,EAAI1snB,EAAEo9F,cAAM,IAAAsvhB,GAAO,QAAPC,EAARD,EAAUG,aAAK,IAAAF,GAAfA,EAAiBpjnB,QAjCH8wJ,KACxB,IAAKA,EAAM,OACX,IAAIyyd,EAAa,IAAItzgB,WACrBszgB,EAAWC,UAAYR,EACvBO,EAAWtyd,WAAWH,EAAK,EA6BQ2yd,CAAyB,QAATJ,EAAC5snB,EAAEo9F,cAAM,IAAAwvhB,OAAA,EAARA,EAAUC,MAAM,GAAG,EAEnEjgnB,IAAKq/mB,KAGbxjQ,EAAAA,GAAAA,MAAA,OAAK16I,MAAO,CAACzO,MAAM,QAAQnmF,SAAA,EAC3BqvO,EAAAA,GAAAA,KAACmtP,GAAO,CAAAx8d,UACFqvO,EAAAA,GAAAA,KAACyyP,GAAO,CACRF,WAAS,EACPzwkB,KAAMgyZ,EACN/7G,MAAO27G,IAAU,IAAA+wL,EAAA,OAAkB,QAAfA,EAAW,OAAV/wL,QAAU,IAAVA,OAAU,EAAVA,EAAY1zb,UAAE,IAAAyknB,EAAAA,EAAI,IAAIj5hB,UAAU,EAAG,IAAM,KAAK,EACnEn2B,QAASq+X,IAAU,IAAAn9U,EAAA,OAAiC,QAAjCA,EAAEx8B,EAAE,SAAS25W,EAAWlpa,iBAAS,IAAA+rF,EAAAA,EAAI,KAAK,EAC7Dmsf,KAAMhvK,GAAaA,EAAWlpa,SAAW0oa,GAAiBx7Y,OAASsoU,EAAAA,GAAAA,KAACy6M,GAAO,IAAK/mI,EAAWlpa,SAAW0oa,GAAiBpzS,WAAYkgO,EAAAA,GAAAA,KAAA,OAAKz6I,MAAO,CAACo5B,UAAU,aAAahuH,UAACqvO,EAAAA,GAAAA,KAACgjQ,GAAO,OAAWhjQ,EAAAA,GAAAA,KAAC8iP,GAAO,IACnM4P,gBAAiBh/K,IAAe,IAADgxL,EAC7BpB,EAAqB5vL,GACJ,QAAjBgxL,EAAAjB,EAAU3jc,eAAO,IAAA4kc,GAAjBA,EAAmBvzP,OAAO,MAGnCoyP,IACSvjQ,EAAAA,GAAAA,KAAC2jP,GAAM,CACLtB,SAAO,EACPtqR,MAAM,UACN4qR,QAASA,IAAMhiS,EAASqzH,aAO1B,EC5IJ2wL,GAA0BhpK,GAAOC,GAAG;;;;EAY1C,MAaA,GAbuBgpK,KACrB,MAAMC,EAAWliQ,GAAYsyE,IAE7B,OACEj1E,EAAAA,GAAAA,KAAC2kQ,GAAuB,CAAAh0e,UACtBsvO,EAAAA,GAAAA,MAAC82P,GAAU,CAACvK,YAAaqY,IAAajxL,GAASsB,cAAgB,EAAI,EAAEvkT,SAAA,EACnEqvO,EAAAA,GAAAA,KAAC6iQ,GAAW,KACZ7iQ,EAAAA,GAAAA,KAACkjQ,GAAgB,QAEK,ECoI9B,GAvIa4B,KACX,MAAMC,EAAWpiQ,GAAYyyE,IACvBhB,EAAwBzxE,IAC3B9zT,GAAqBA,EAAM01U,KAAK6vD,yBAI5BjpY,IAFUqpjB,KAEA71P,MACXvgS,EAAcjzB,EAAOzmB,IAAI,OA0E/B,OAvEAs+R,EAAAA,EAAAA,YAAU,KACR,MAAMgiT,EAAWrrnB,KAAKC,MAAMk0I,aAAad,QAAQ,aAAe,OAC5D5uD,GAAiB4miB,GAAaA,EAAStulB,SAAS0nD,KAClD0vD,aAAahB,QAAQ2kP,GAAcrzS,GACnC0vD,aAAahB,QAAQ,WAAYnzI,KAAKE,UAAUmrnB,EAAShtnB,OAAOomF,KAClE,GACC,CAACA,KAkEF4hS,EAAAA,GAAAA,KAAC3pC,GAAQ,CAAC8mB,MAAOA,GAAMxsN,UACrBqvO,EAAAA,GAAAA,KAACs1D,GAAI,CAAA3kS,UACHsvO,EAAAA,GAAAA,MAACglQ,GAAY,CAAClva,UAAU,OAAMplE,SAAA,CAC3Bo0e,IAAY/kQ,EAAAA,GAAAA,KAACooP,GAAU,IACvB2c,GACC/kQ,EAAAA,GAAAA,KAAChF,GAAM,CAAArqO,UACLqvO,EAAAA,GAAAA,KAACzF,GAAK,CACJn8W,KAAK,0BACLs5I,SACEsoO,EAAAA,GAAAA,KAACklQ,GAAW,CAACnva,UAAU,UAASplE,UAC9BqvO,EAAAA,GAAAA,KAAC+/P,GAAW,UAKlB3rL,GACFp0E,EAAAA,GAAAA,KAAC4iQ,GAAW,KAEZ3iQ,EAAAA,GAAAA,MAACjF,GAAM,CAAArqO,SAAA,EACLqvO,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,OAAOs5I,SAASsoO,EAAAA,GAAAA,KAACwiQ,GAAY,OACzCxiQ,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,IAAIs5I,SAASsoO,EAAAA,GAAAA,KAAC4kQ,GAAc,SAI3CG,IACC/kQ,EAAAA,GAAAA,KAACmlQ,GAAa,CAAAx0e,UACZsvO,EAAAA,GAAAA,MAACjF,GAAM,CAAArqO,SAAA,EACLqvO,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,SAASs5I,SAASsoO,EAAAA,GAAAA,KAACugQ,GAAa,OAC5CvgQ,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,YAAYs5I,SAASsoO,EAAAA,GAAAA,KAACi8F,GAAuB,OACzDj8F,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,aAAas5I,SAASsoO,EAAAA,GAAAA,KAAC2gQ,GAAiB,OACpD3gQ,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,GAAGs5I,SAASsoO,EAAAA,GAAAA,KAAC8gQ,GAAQ,iBAkBlC,EC7Hf,GAzBoD/5jB,IAAmB,IAAlB,SAAE4pF,GAAU5pF,EAC/D,MAAOyojB,EAAQ4V,IAAa7hT,EAAAA,EAAAA,UAAuB,IAE7CksS,GAAW3sS,EAAAA,EAAAA,cAAauiT,IAC5B,MAAMrlnB,GAAK,IAAIpI,MAAOC,UAAUqnD,WAC1B66B,EAAI,IAAKsriB,EAAOrlnB,MACtBolnB,GAAWE,GAAkB,IAAIA,EAAevriB,KAEhDv2C,YAAW,KACT4hlB,GAAWE,GACTA,EAActunB,KAAK+iF,GAAOA,EAAE/5E,KAAOA,EAAK+5E,EAAI,IAAKA,EAAG8uB,QAAQ,MAC7D,GACA,KACHrlE,YAAW,KACT4hlB,GAAWE,GAAkBA,EAAcxtnB,QAAQiiF,GAAMA,EAAE/5E,KAAOA,KAAI,GACrE,KAAK,GACP,IAEH,OACEggX,EAAAA,GAAAA,KAACuvP,GAAal5R,SAAQ,CAACvuT,MAAO,CAAE0nlB,SAAQC,YAAW9+d,SAChDA,GACqB,ECtBtB0sd,GAAcC,EAAS;;;;;;;;EAWvBioB,GAAiB5pK,GAAOC,GAAe;;;sBAGtBlqZ,GACnBA,EAAM3iD,OAASugmB,GAAc33jB,QACzBg7Z,GAAMa,WACN9hZ,EAAM3iD,OAASugmB,GAAc53jB,MAC7Bi7Z,GAAMomK,YACNpmK,GAAMyB;;;gBAGE3B,GAAU/mU;;aAEb2mU,GAAKhsZ;;YAENgsZ,GAAK1mU,OAAO0mU,GAAK1mU,OAAO0mU,GAAK3mU,OAAO2mU,GAAK1mU;;;oBAGjC0xd;;IAEhBt2iB,IAAA,IAAC,OAAE8hD,GAAQ9hD,EAAA,OACV8hD,GACDs5f,EAAG;;KAEF;EAGCqjB,GAAqB7pK,GAAOC,GAAuB;;;;;;0BAM9BlqZ,IAAWA,EAAM3T;;EAoC5C,GA/BkB0nkB,KAChB,MAAM,OAAEjW,IAAWzsS,EAAAA,EAAAA,YAAWwsS,IACxBmW,GAAUpiT,EAAAA,EAAAA,QAAuB,OAChCvlR,EAAQ4nkB,IAAapiT,EAAAA,EAAAA,UAAS,GAQrC,OANAP,EAAAA,EAAAA,YAAU,KACJ0iT,EAAQ5lc,SACV6lc,EAAUD,EAAQ5lc,QAAQ8lc,aAC5B,GACC,CAACpW,EAAOzumB,UAGTi/W,EAAAA,GAAAA,KAACwlQ,GAAkB,CAACphnB,IAAKshnB,EAAS3nkB,OAAQA,EAAO4yF,SAC9C6+d,EAAOx4mB,KAAI,CAACqunB,EAAO9niB,KAAK,IAAAsoiB,EAAAC,EAAAC,EAAA,OACvB9lQ,EAAAA,GAAAA,MAACslQ,GAAc,CAEb18gB,OAAQw8gB,EAAMx8gB,OACdktG,UAAU,QACVhnM,KAAgB,QAAZ82mB,EAAER,EAAMt2mB,YAAI,IAAA82mB,EAAAA,EAAIvW,GAAcyP,QAAQpue,SAAA,EAE1CqvO,EAAAA,GAAAA,KAAC82F,GAAW3kD,OAAM,CAACviG,MAAO+iJ,GAAME,MAAMliU,SACxB,QADwBm1e,EACnCT,EAAMttS,aAAK,IAAA+tS,EAAAA,EAAI,MAElB9lQ,EAAAA,GAAAA,KAAA,OAAKz6I,MAAO,CAAEkiB,OAAQ4qN,GAAK1mU,MAC3Bq0O,EAAAA,GAAAA,KAAC82F,GAAWp/c,KAAI,CAACk4T,MAAO+iJ,GAAME,MAAMliU,SAAe,QAAfo1e,EAAEV,EAAMjjlB,eAAO,IAAA2jlB,EAAAA,EAAI,OATlDxoiB,EAUU,KAEA,+BCnEnBo4Q,GACJ8sD,GAAezpP,OAAOmlF,IAAI,sBAAwB,qBAE9C,SAAU6nY,KACdj4Q,GACE,kBAAmB,GACnB,QACE7yK,EAAA05K,GAAAA,cAAAjf,WACAz6J,IACApkM,OAAAgiK,eAAA87M,GAAAA,cAAAjf,GAAA,CACA7tU,MAAAozK,EAAA05K,GAAAA,cAAA,IAGAn9O,YAAiB,EAGhBggF,UAAU,EACbC,cAAO,MAEL8kC,YAAiB,uBCtBVypY,GAA0D,SAACrqnB,OACtEyjM,EAAMzjM,EAAAyjM,OACN1uD,EAAQ/0I,EAAA+0I,SAEFu1e,EAAgBF,KAChBG,EAAgBvxQ,GAAAA,WAAiBsxQ,GAEjChrb,EAAU05K,GAAAA,SAAc,WAC5B,OAAAtvB,EAAAA,GAAAA,WAAAA,EAAAA,GAAAA,UAAA,GACK6gS,GAAa,CAChB9mb,OAAQA,GAAU8mb,EAAc9mb,QAEpC,GAAG,CAAC8mb,EAAe9mb,WAEnB0uK,GACE7yK,EAAQmE,OACR,IACEu1K,GAAAA,cAAAsxQ,EAAA7vS,SAAA,CAAAvuT,MACFozK,GAAAvqD,ICxBJ,MAgBA,GAhBoD5pF,IAAmB,IAAlB,SAAE4pF,GAAU5pF,EAC/D,MAAO8hD,EAAQu9gB,IAAa7iT,EAAAA,EAAAA,WAAS,IAC9B38Q,EAASy/jB,IAAc9iT,EAAAA,EAAAA,YAExBqpK,GAAS9pK,EAAAA,EAAAA,cAAa/nL,IAC1Bsre,EAAWtre,GACXqre,IAAYrre,EAAU,GACrB,IAEH,OACEilO,EAAAA,GAAAA,KAACu0P,GAAal+R,SAAQ,CAACvuT,MAAO,CAAE+gF,SAAQjiD,UAASgmb,UAASj8V,SACvDA,GACqB,ECD5B,MAAM0sd,GAAcC,EAAS;;;;;;;;;EAWvBC,GAAeD,EAAS;;;;;;;;;;;;;;EAgBxBgpB,GAAsBhpB,EAAS;;;;;;;;;;;;;;;EAiB/BipB,GAAmBjpB,EAAS;;;;;;;;;EAW5BkpB,GAAsB7qK,GAAOC,GAAe;;;;;;;;;;;;;;oBAc7BlqZ,GAAWA,EAAMm3C,OAAS,OAAS;EAGlD49gB,GAAuB9qK,GAAOC,GAA0B;;;;;;aAMhDlqZ,GAAWA,EAAM0xiB,QAAU,EAAI;;;wBAGrB1wJ,GAAO4wJ;sBACT3wJ,GAAM0wJ;EAGtBqjB,GAAQ/qK,GAAOC,GAA0B;;;;;;;;;;sBAUzBjJ,GAAM4vJ;;;;;;;eAObgkB,MAAoB7zK,GAAOgrJ;;IAEtC32iB,IAAA,IAAC,QAAEq8iB,GAASr8iB,EAAA,OACXq8iB,GACDjB,EAAG;mBACYmkB,MAAuB5zK,GAAOgrJ;KAC5C;;uBAEkBlrJ,GAAWx0E;;;;;sBAKZq0E,GAAKyvJ;;iBAEVzE,MAAe3qJ,GAAOgrJ;;MAEjC3tiB,IAAA,IAAC,QAAEqziB,GAASrziB,EAAA,OACXqziB,GACDjB,EAAG;qBACY5E,MAAgB7qJ,GAAOgrJ;OACrC;;EA0CP,GArCmBipB,KACjB,MAAMzQ,EAAWzB,KACX0B,EAAW3B,MACVz1P,EAAcK,GAAmBT,KAClCioQ,ECpJO,SAAqB9+lB,GAChC,MAAM1jB,GAAMk/T,EAAAA,EAAAA,QAAsB,MAIlC,OAHAN,EAAAA,EAAAA,YAAU,KACR5+T,EAAI07K,QAAUh4J,CAAK,IAEd1jB,EAAI07K,OACf,CD8IqBypL,CAAYwV,EAAar6U,IAAI,YAG1C,OAAEmkE,EAAM,QAAEjiD,IAAYm8Q,EAAAA,EAAAA,YAAWwxS,IAsBvC,OApBAvxS,EAAAA,EAAAA,YAAU,KAEM,IAAD6jT,EAATjgkB,EAGFsvjB,EAAS,SAAsB,QAAd2Q,EAAS,OAAPjgkB,QAAO,IAAPA,OAAO,EAAPA,EAASntC,WAAG,IAAAotmB,EAAAA,EAAI,SAEnCznQ,GACF,GACC,CAACx4T,KAEJo8Q,EAAAA,EAAAA,YAAU,KACJ+7C,EAAar6U,IAAI,UACnByxkB,EAASvvjB,GACAggkB,GACTzQ,EAAS,KACX,GACC,CAACp3P,KAIFkB,EAAAA,GAAAA,MAACumQ,GAAmB,CAAC39gB,OAAmB,MAAXjiD,EAAgB+pF,SAAA,EAC3CqvO,EAAAA,GAAAA,KAACymQ,GAAoB,CAACrjB,QAAoB,MAAXx8iB,EAAiB+iR,QAASA,IAAMwsS,EAAS,SACxEn2P,EAAAA,GAAAA,KAAC0mQ,GAAK,CAACtjB,QAASv6f,EAAO8nC,SAAE/pF,MACL,EE5I1B,GA5BekgkB,KAEX9mQ,EAAAA,GAAAA,KAAC3pC,GAAQ,CAAC8mB,MAAOA,GAAMxsN,UAErBqvO,EAAAA,GAAAA,KAACimQ,GAAc,CAAC5mb,OAAQA,GAAO1uD,UAC7BqvO,EAAAA,GAAAA,KAAC+mQ,GAAa,CAAAp2e,UACZsvO,EAAAA,GAAAA,MAAC+mQ,GAAa,CAAAr2e,SAAA,EACZqvO,EAAAA,GAAAA,KAAC8kQ,GAAI,KACL9kQ,EAAAA,GAAAA,KAACylQ,GAAS,KACVzlQ,EAAAA,GAAAA,KAAC2mQ,GAAU,wCCjBR,SAASM,KACtB,MAAMtnmB,EAAI81V,KACJplQ,EAAIsuQ,KAMV,OAJA37C,EAAAA,EAAAA,YAAU,KACRrjT,EAAE,QAAU0wF,EAAEl3F,KAAK,KAAK,GACvB,KAEI6mW,EAAAA,GAAAA,KAAAI,GAAAA,SAAA,GACT,CCiBA8mQ,KAAAA,WleAgC,WAAiC,IAAhChpgB,EAAWp9G,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAG8oW,GAAUE,Gme7BhC,IAA4B9vS,Ene8BjD63T,KAAAA,OAAa3zQ,GACbs8e,GAAAA,IACU3yP,IACL1oN,IAAImjN,IACJj/T,KAAK,CACF+xE,IAAK8I,EACLo1O,YAAasW,GAAUE,GACvBjL,QAAS/nW,OAAOkrE,OAAO4nS,IACvBzf,GAAI,CAAC,cAAc,UACnB8E,UAAW,cACX6P,yBAAwB,EACxB5B,QAAS,CACLsF,SAAU,Eme1C2BxoS,Ene2Cd6vS,Gme1C9B,CACL96V,KAAM,UACNs0B,KAAM,SAAcwM,EAAU+yT,EAAgBL,GAAiB,EAC/DnE,KAAM,SAAcv+V,EAAUk7J,EAAWvrH,GACvC,GAAmB,oBAARwqB,EAmBXxqB,EAAS,KAAMwqB,GAAOA,EAAIn6D,IAAam6D,EAAIn6D,GAAUk7J,QAnBrD,CACE,GAAI/gG,EAAIj5D,OAAS,EAAG,CAClB,IACE,IAAIw+C,EAAIya,EAAIn6D,EAAUk7J,GAClBx7G,GAAuB,oBAAXA,EAAEnnD,KAChBmnD,EAAEnnD,MAAK,SAAU0pC,GACf,OAAO0N,EAAS,KAAM1N,GAAQA,EAAKwyE,SAAWxyE,EAChD,IAAGvpC,MAAMi3C,GAETA,EAAS,KAAM+P,EAEnB,CAAE,MAAO/mD,GACPg3C,EAASh3C,EACX,CACA,MACF,CACAwhE,EAAIn6D,EAAUk7J,EAAWvrH,EAE3B,CAEF,InemBgB23kB,IAEJvkR,eAAgB,CACZ,CAAC,EACD,CAAC8C,SDxCS,uDC6C9B,CkerBA0hR,GA+BA,SA7BA,WAUE,OARApkT,EAAAA,EAAAA,YAAU,KrdKDuzB,EAAC8wR,EAAQ70d,KAClB,GAAIjwH,OAAOi+U,mBAAqBj+U,OAAO6+U,OAAQ,OAC/C7+U,OAAOi+U,mBAAoB,EAC3B,IAAI8mQ,EAAUrigB,SAASspI,cAAc,UACjCg5X,EAActigB,SAAS8lO,qBAAqB,UAAU,IAAM9lO,SAAS8pV,cAAc,QACvFu4K,EAAQtnnB,GAAK,gBACbsnnB,EAAQvnS,OAAQ,EAChBunS,EAAQj7a,aAAa,YAAag7a,GAClCC,EAAQl7S,IAAM55K,GAAQA,EAAKrwH,IAAMqwH,EAAKrwH,IAAM,sCACxCqwH,SACgB,IAAdA,EAAKg1d,MACPF,EAAQj7a,aAAa,YAAa,GAAG75C,EAAKg1d,aACtB,IAAlBh1d,EAAKi1d,UACPH,EAAQj7a,aAAa,iBAAkB,GAAG75C,EAAKi1d,iBAC1B,IAAnBj1d,EAAKk1d,WACPJ,EAAQj7a,aAAa,iBAAkB,GAAG75C,EAAKk1d,aAC7Cl1d,EAAKm1d,kBACP1mQ,GAAoBzuN,EAAKm1d,iBACzBL,EAAQj7a,aACN,wBACA75C,EAAKm1d,gBAAgBxumB,KAAK,OAG1Bq5I,EAAKo1d,kBACP3mQ,GAAoBzuN,EAAKo1d,iBACzBN,EAAQj7a,aACN,wBACA75C,EAAKo1d,gBAAgBzumB,KAAK,OAG1Bq5I,EAAKq1d,KAAKP,EAAQj7a,aAAa,WAAY75C,EAAKq1d,MAEtDP,EAAQr2gB,OAASsvQ,GACjBgnQ,EAAYpmU,WAAW2pB,aAAaw8S,EAASC,EAAY,EqdrCvDO,CElC0B,WFkCC,GAE3B,KAMA9nQ,EAAAA,GAAAA,KAACpL,EAAAA,SAAc,CAACzsC,SAAS,aAAYx3L,UACnCqvO,EAAAA,GAAAA,KAACpE,GAAa,CAAAjrO,UACZsvO,EAAAA,GAAAA,MAAA,OAAKlqK,UAAU,MAAKplE,SAAA,EACrBqvO,EAAAA,GAAAA,KAAC7oX,GAAM,KAEJ8oX,EAAAA,GAAAA,MAACjF,GAAM,CAAArqO,SAAA,EACHqvO,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAK,SAAUs5I,SAASsoO,EAAAA,GAAAA,KAAC8mQ,GAAM,OAGtC9mQ,EAAAA,GAAAA,KAACzF,GAAK,CAACn8W,KAAMkjnB,GAAiB5pe,SAASsoO,EAAAA,GAAAA,KAACinQ,GAAY,eAOlE,EG/CA,GAZyBc,IACnBA,GAAeA,aAAuBv/X,UACxC,+BAAqBpwP,MAAK2uD,IAAkD,IAAjD,OAAEihkB,EAAM,OAAEC,EAAM,OAAEC,EAAM,OAAEC,EAAM,QAAEC,GAASrhkB,EACpEihkB,EAAOD,GACPE,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAQL,EAAY,GAExB,ECJW3vb,GAAc,qBAAAC,kBAAAA,iBCmF3B,SAASohB,GAAYn6I,GACnB,OAAOA,GAAOA,EAAIzhB,MAAQA,KAAOyhB,OAAMpnE,CACzC,CAGO,MAAMstM,GACW,iBAAdkU,YAA0BD,GAAYC,aAE5B,iBAAVn3K,QAAsBk3K,GAAYl3K,SAC1B,iBAARE,MAAoBg3K,GAAYh3K,OACtB,iBAAVk3K,EAAAA,GAAsBF,GAAYE,EAAAA,IACzC,WACC,OAAOpjN,IACX,CAFG,IAGD,CAAC,EAKI,SAASqjN,KACd,OAAOpU,EACT,CAaO,SAAS9K,GAAsBn7K,EAA0Cs6L,EAAkBv6I,GAChG,MAAMs3I,EAAOt3I,GAAOkmI,GACdtO,EAAc0f,EAAI1f,WAAa0f,EAAI1f,YAAc,CAAC,EAExD,OADkBA,EAAW33K,KAAU23K,EAAW33K,GAAQs6L,IAE5D,CC3HA,MAEa3D,GAA0C,CACrD,QACA,OACA,OACA,QACA,MACA,SACA,SAOWC,GAGT,CAAC,EAeE,SAAS7R,GAAkB90J,GAChC,KAAM,gBACJ,OAAOA,IAGT,MAAM3K,EAAU2gK,GAAW3gK,QACrBuxK,EAA8C,CAAC,EAE/CC,EAAgBv/M,OAAOC,KAAKo/M,IAGlCE,EAAc3oI,SAAQ5C,IACpB,MAAMwrI,EAAwBH,GAAuBrrI,GACrDsrI,EAAatrI,GAASjmC,EAAQimC,GAC9BjmC,EAAQimC,GAASwrI,CAAqB,IAGxC,IACE,OAAO9mK,GACX,SAEI6mK,EAAc3oI,SAAQ5C,IACpBjmC,EAAQimC,GAASsrI,EAAatrI,EAAO,GAE3C,CACA,CAkCsC,MAAAiwH,GAhCtC,WACE,IAAIwb,GAAU,EACd,MAAMxb,EAA0B,CAC9Byb,OAAQA,KACND,GAAU,CAAI,EAEhBE,QAASA,KACPF,GAAU,CAAK,EAEjBG,UAAWA,IAAMH,GAoBiB,OAjBhCne,GACF8d,GAAexoI,SAAQnuD,IAErBw7K,EAAOx7K,GAAQ,WAAoB,QAAAqvH,EAAA9tI,UAAAC,OAAhB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GACjBynE,GACFjS,IAAe,KACbkB,GAAW3gK,QAAQtlB,GAAM,kBAACA,SAAAsvH,EAAA,GAGA,KAGAqnE,GAAAxoI,SAAAnuD,IACAw7K,EAAAx7K,GAAA,UAIAw7K,CACA,CAEA4b,GC7FhCf,GAAiB9+M,OAAOohK,UAAUh5G,SASjC,SAASm/N,GAAQvoE,GACtB,OAAQF,GAAe1rG,KAAK4rG,IAC1B,IAAK,iBACL,IAAK,qBACL,IAAK,wBACH,OAAO,EACT,QACE,OAAOG,GAAaH,EAAKl3M,OAE/B,CAQA,SAASi3M,GAAUC,EAAcC,GAC/B,OAAOH,GAAe1rG,KAAK4rG,KAAS,WAAWC,IACjD,CASO,SAASsya,GAAavya,GAC3B,OAAOD,GAAUC,EAAK,aACxB,CASO,SAASwya,GAAWxya,GACzB,OAAOD,GAAUC,EAAK,WACxB,CAoBO,SAASvB,GAASuB,GACvB,OAAOD,GAAUC,EAAK,SACxB,CASO,SAASyya,GAAsBzya,GACpC,MACiB,kBAARA,GACC,OAARA,GACA,+BAAgCA,GAChC,+BAAgCA,CAEpC,CASO,SAAS0ya,GAAY1ya,GAC1B,OAAe,OAARA,GAAgByya,GAAsBzya,IAAwB,kBAARA,GAAmC,oBAARA,CAC1F,CASO,SAAS9U,GAAc8U,GAC5B,OAAOD,GAAUC,EAAK,SACxB,CASO,SAAS2ya,GAAQ3ya,GACtB,MAAwB,qBAAV4ya,OAAyBzya,GAAaH,EAAK4ya,MAC3D,CA4BO,SAASrub,GAAWyb,GAEzB,OAAOnQ,QAAQmQ,GAAOA,EAAI19M,MAA4B,oBAAb09M,EAAI19M,KAC/C,CAgCO,SAAS69M,GAAaH,EAAUvpI,GACrC,IACE,OAAOupI,aAAevpI,CAC1B,CAAI,MAAOrH,GACP,OAAO,CACX,CACA,CAcO,SAASyjjB,GAAe7ya,GAE7B,QAAyB,kBAARA,GAA4B,OAARA,IAAkBA,EAAqB8ya,UAAY9ya,EAAqB+ya,OAC/G,CCjNA,MAAMC,GAASlva,KAcR,SAASmva,GACdtzb,GAEQ,IADRjoH,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAiE,CAAC,EAEzE,IAAK20L,EACH,MAAO,YAOT,IACE,IAAIuzb,EAAcvzb,EAClB,MAAMwzb,EAAsB,EACtB53e,EAAM,GACZ,IAAIo2G,EAAS,EACTzpM,EAAM,EACV,MAAMq7F,EAAY,MACZ6ve,EAAY7ve,EAAUt4I,OAC5B,IAAIoonB,EACJ,MAAMC,EAAW3rmB,MAAMC,QAAQ8vD,GAAWA,EAAUA,EAAQ47iB,SACtDC,GAAoB5rmB,MAAMC,QAAQ8vD,IAAYA,EAAQ67iB,iBAlC9B,GAoC9B,KAAOL,GAAevhY,IAAWwhY,IAC/BE,EAAUG,GAAqBN,EAAaI,KAK5B,SAAZD,GAAuB1hY,EAAS,GAAKzpM,EAAMqzF,EAAItwI,OAASmonB,EAAYC,EAAQponB,QAAUsonB,KAI1Fh4e,EAAIp8E,KAAKk0jB,GAETnrkB,GAAOmrkB,EAAQponB,OACfionB,EAAcA,EAAY7nU,WAG5B,OAAO9vK,EAAI5hH,UAAUtW,KAAKkgI,EAC9B,CAAI,MAAOyrD,GACP,MAAO,WACX,CACA,CAOA,SAASwkb,GAAqBl5S,EAAag5S,GACzC,MAAM3zb,EAAO26I,EAOP/+L,EAAM,GACZ,IAAI0kE,EACAwza,EACA9vmB,EACA+vmB,EACAhrkB,EAEJ,IAAKi3I,IAASA,EAAKipI,QACjB,MAAO,GAIT,GAAIoqT,GAAOrvS,aAELhkJ,aAAgBgkJ,aAAehkJ,EAAK8yI,SAAW9yI,EAAK8yI,QAAyB,gBAC/E,OAAO9yI,EAAK8yI,QAAyB,gBAIzCl3L,EAAIp8E,KAAKwgI,EAAKipI,QAAQhhU,eAGtB,MAAM+rnB,EACJL,GAAYA,EAASronB,OACjBqonB,EAAStxnB,QAAO4xnB,GAAWj0b,EAAKm4D,aAAa87X,KAAU1ynB,KAAI0ynB,GAAW,CAACA,EAASj0b,EAAKm4D,aAAa87X,MAClG,KAEN,GAAID,GAAgBA,EAAa1onB,OAC/B0onB,EAAa/7iB,SAAQi8iB,IACnBt4e,EAAIp8E,KAAK,IAAI00jB,EAAY,OAAOA,EAAY,OAAO,SAS9B,GANnBl0b,EAAKz1L,IACPqxI,EAAIp8E,KAAK,IAAIwgI,EAAKz1L,MAIG+1M,EAAAtgB,EAAAsgB,UACAA,GAAAxB,GAAAwB,GAEA,IADAwza,EAAAxza,EAAAllJ,MAAA,OACArS,EAAA,EAAAA,EAAA+qkB,EAAAxonB,OAAAy9C,IACA6yF,EAAAp8E,KAAA,IAAAs0jB,EAAA/qkB,MAIA,MAAAorkB,EAAA,2CACA,IAAAprkB,EAAA,EAAAA,EAAAorkB,EAAA7onB,OAAAy9C,IACA/kC,EAAAmwmB,EAAAprkB,GACAgrkB,EAAA/zb,EAAAm4D,aAAAn0O,GACA+vmB,GACAn4e,EAAAp8E,KAAA,IAAAx7C,MAAA+vmB,OAGA,OAAAn4e,EAAAl4H,KAAA,GACA,CCxHpB,SAASilM,GAAS3gK,GAAsC,IAAzBxB,EAAGn7C,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,EAClD,MAAmB,kBAAR28C,GAA4B,IAARxB,GAGxBwB,EAAI18C,QAAUk7C,EAFZwB,EAEwB,GAACA,EAAAoB,MAAA,EAAA5C,OACA,CAoDA,SAAA4tkB,GAAAjie,EAAA8wE,GACA,IAAAj7M,MAAAC,QAAAkqI,GACA,SAGA,MAAAiU,EAAA,GAEA,QAAAr9G,EAAA,EAAAA,EAAAopG,EAAA7mJ,OAAAy9C,IAAA,CACA,MAAA12B,EAAA8/H,EAAAppG,GACA,IAMAmqkB,GAAA7gmB,GACA+zI,EAAA5mG,KAAA,kBAEA4mG,EAAA5mG,KAAA/7D,OAAA4uB,GAEA,OAAAtwB,IACAqkK,EAAA5mG,KAAA,+BACA,CACA,CAEA,OAAA4mG,EAAA1iJ,KAAAu/M,EACA,CAUA,SAAAoxZ,GACAhimB,EACA8wM,GAEA,IADAmxZ,EAAAjpnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEA,QAAAyzM,GAAAzsL,KFuC3B+tL,GEnC2B+iB,EFmCZ,UElCYA,EAAA/8I,KAAA/zD,KAEAysL,GAAAqkB,KACAmxZ,EAAAjimB,IAAA8wM,EAAA9wM,EAAA4O,SAAAkiM,IAIA,CAYA,SAAAoxZ,GACAC,GAGA,IADAF,EAAAjpnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEA,OAHAA,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,OAGAkiE,MAAA41J,GAAAkxZ,GAAAG,EAAArxZ,EAAAmxZ,IACA,CCtH7B,SAAS7ya,GAAKrhH,EAAgCt2E,EAAc43L,GACjE,KAAM53L,KAAQs2E,GACZ,OAGF,MAAMuhH,EAAWvhH,EAAOt2E,GAClB83L,EAAUF,EAAmBC,GAIZ,oBAAZC,GACTG,GAAoBH,EAASD,GAG/BvhH,EAAOt2E,GAAQ83L,CACjB,CASO,SAAStF,GAAyBzyI,EAAa//C,EAAcuI,GAClE,IACEhxB,OAAOgiK,eAAex5F,EAAK//C,EAAM,CAE/BuI,MAAOA,EACP2vL,UAAU,EACVC,cAAc,GAEpB,CAAI,MAAOH,GACPnf,IAAe2C,GAAOlnI,IAAI,0CAA0Ct0C,eAAmB+/C,EAC3F,CACA,CASO,SAASk4I,GAAoBH,EAA0BD,GAC5D,IACE,MAAME,EAAQF,EAASl/C,WAAa,CAAC,EACrCm/C,EAAQn/C,UAAYk/C,EAASl/C,UAAYo/C,EACzCvF,GAAyBsF,EAAS,sBAAuBD,EAC7D,CAAI,MAAOG,GAAM,CACjB,CASO,SAAS2ya,GAAoBj9X,GAClC,OAAOA,EAAKk9X,mBACd,CAsBiB,SAAAC,GACAtimB,GAgBA,GAAAu2P,GAAAv2P,GACA,OACAsa,QAAAta,EAAAsa,QACA7iB,KAAAuI,EAAAvI,KACAooM,MAAA7/L,EAAA6/L,SACA0ia,GAAAvimB,IAEA,GAAA2gmB,GAAA3gmB,GAAA,CACA,MAAAgwa,EAMA,CACA/ob,KAAA+Y,EAAA/Y,KACA6lF,OAAA01hB,GAAAximB,EAAA8sE,QACA00N,cAAAghU,GAAAximB,EAAAwhS,kBACA+gU,GAAAvimB,IAOA,MAJA,qBAAAyimB,aAAAt0a,GAAAnuL,EAAAyimB,eACAzyL,EAAAttI,OAAA1iS,EAAA0iS,QAGAstI,CACA,CACA,OAAAhwa,CAEA,CAGA,SAAAwimB,GAAA11hB,GACA,IACA,OHnBSkhH,EGmBTlhH,EHlBW,qBAAZ6pJ,SAA2BxoC,GAAaH,EAAK2oC,SGkB5CsqY,GAAAn0hB,GAAA99F,OAAAohK,UAAAh5G,SAAAgrD,KAAAtV,EACA,OAAAkwG,GACA,iBACA,CHtBV,IAAmBgR,CGuBT,CAGA,SAAAu0a,GAAA/qjB,GACA,qBAAAA,GAAA,OAAAA,EAAA,CACA,MAAAkrjB,EAAA,GACA,UAAAximB,KAAAs3C,EACAxoE,OAAAohK,UAAA95C,eAAAlU,KAAA5qC,EAAAt3C,KACAwimB,EAAAximB,GAAAs3C,EAAAt3C,IAGA,OAAAwimB,CACA,CACA,QAEA,CAuCA,SAAA9ub,GAAAic,GAOA,OAAAC,GAAAD,EAHA,IAAA5mI,IAIA,CAEA,SAAA6mI,GAAAD,EAAAE,GACA,GAyCA,SAAAjwD,GACA,IAAAo5C,GAAAp5C,GACA,SAGA,IACA,MAAAroI,EAAAzoB,OAAAghN,eAAAlwD,GAAAnxJ,YAAA8oB,KACA,OAAAA,GAAA,WAAAA,CACA,OAAA/nB,IACA,QACA,CACA,CApDAy9I,CAAA0iE,GAAA,CAEA,MAAAI,EAAAF,EAAAnzK,IAAAizK,GACA,QAAAz/M,IAAA6/M,EACA,OAAAA,EAGA,MAAAC,EAAA,GAEAH,EAAAr9I,IAAAm9I,EAAAK,GAEA,UAAAv+L,KAAA3iB,OAAAC,KAAA4gN,GACA,qBAAAA,EAAAl+L,KACAu+L,EAAAv+L,GAAAm+L,GAAAD,EAAAl+L,GAAAo+L,IAIA,OAAAG,CACA,CAEA,GAAAv6L,MAAAC,QAAAi6L,GAAA,CAEA,MAAAI,EAAAF,EAAAnzK,IAAAizK,GACA,QAAAz/M,IAAA6/M,EACA,OAAAA,EAGA,MAAAC,EAAA,GAQA,OANAH,EAAAr9I,IAAAm9I,EAAAK,GAEAL,EAAAjqI,SAAA+E,IACAulI,EAAA/iJ,KAAA2iJ,GAAAnlI,EAAAolI,GAAA,IAGAG,CACA,CAEA,OAAAL,CACA,CChPV,SAASrc,KACd,MAAMsb,EAAMpR,GACN5uI,EAASggJ,EAAIhgJ,QAAUggJ,EAAI98C,SAEjC,IAAI+8C,EAAgBA,IAA8B,GAAhBh5J,KAAK+lC,SACvC,IACE,GAAIhtB,GAAUA,EAAO4sB,WACnB,OAAO5sB,EAAO4sB,aAAankC,QAAQ,KAAM,IAEvCuX,GAAUA,EAAOgC,kBACnBi+I,EAAgBA,KAKd,MAAMC,EAAa,IAAI1yK,WAAW,GAElC,OADAwyB,EAAOgC,gBAAgBk+I,GAChBA,EAAW,EAAE,EAG5B,CAAI,MAAOr8I,GAEX,CAKE,OAAS,CAAC,KAA6B,IAAM,IAAM,IAAM,MAAMpb,QAAQ,UAAUojB,IAE7EA,GAA8C,GAAlBo0I,MAA2Bp0I,EAA0B,GAAKvjB,SAAS,KAErG,CAEA,SAASurkB,GAAkBr6gB,GACzB,OAAOA,EAAMiyF,WAAajyF,EAAMiyF,UAAUrgI,OAASouC,EAAMiyF,UAAUrgI,OAAO,QAAK9pE,CACjF,CAMO,SAASwynB,GAAoBt6gB,GAClC,MAAM,QAAEhuE,EAASmgK,SAAUD,GAAYlyF,EACvC,GAAIhuE,EACF,OAAOA,EAGT,MAAMuolB,EAAiBF,GAAkBr6gB,GACzC,OAAIu6gB,EACEA,EAAe57mB,MAAQ47mB,EAAe7imB,MACjC,GAAC6imB,EAAA57mB,SAAA47mB,EAAA7imB,QAEA6imB,EAAA57mB,MAAA47mB,EAAA7imB,OAAAw6K,GAAA,YAEAA,GAAA,WACA,CASA,SAAAsob,GAAAx6gB,EAAAtoF,EAAA/Y,GACA,MAAAszL,EAAAjyF,EAAAiyF,UAAAjyF,EAAAiyF,WAAA,GACArgI,EAAAqgI,EAAArgI,OAAAqgI,EAAArgI,QAAA,GACA2ojB,EAAA3ojB,EAAA,GAAAA,EAAA,OACA2ojB,EAAA7imB,QACA6imB,EAAA7imB,MAAAA,GAAA,IAEA6imB,EAAA57mB,OACA47mB,EAAA57mB,KAAAA,GAAA,QAEA,CASA,SAAA87mB,GAAAz6gB,EAAA06gB,GACA,MAAAH,EAAAF,GAAAr6gB,GACA,IAAAu6gB,EACA,OAGA,MACAI,EAAAJ,EAAAK,UAGA,GAFAL,EAAAK,UAAA,CAFAj8mB,KAAA,UAAAk8mB,SAAA,KAEAF,KAAAD,GAEAA,GAAA,SAAAA,EAAA,CACA,MAAAxlO,EAAA,IAAAylO,GAAAA,EAAAjplB,QAAAgplB,EAAAhplB,MACA6olB,EAAAK,UAAAlplB,KAAAwjX,CACA,CACA,CAmFA,SAAA4lO,GAAA7ob,GAEA,GAAAA,GAAAA,EAAA8ob,oBACA,SAGA,IAGAp5a,GAAA1P,EAAA,yBACA,OAAA7pM,GACA,CAGA,QACA,CAQA,SAAAklM,GAAAqZ,GACA,OAAAt5L,MAAAC,QAAAq5L,GAAAA,EAAA,CAAAA,EACA,CP7NP,MAAM3e,GAAc,qBAAAC,kBAAAA,iBQA3B,IAAkBU,GAmBX,SAASqyb,GAAuBtjmB,GACrC,OAAO,IAAIkxK,IAAY1iM,IACrBA,EAAQwxB,EAAM,GAElB,CAQO,SAASujmB,GAA+Bp7jB,GAC7C,OAAO,IAAI+oI,IAAY,CAACv+H,EAAGn3B,KACzBA,EAAO2sB,EAAO,GAElB,EAnCkB,SAAA8oI,GAELA,EAAAA,EAAA,QAAD,GAAC,UAECA,EAAAA,EAAA,SAAD,GAAC,WAEAA,EAAAA,EAAA,SAAD,GAAC,UACb,CAPiB,CAOlBA,KAAAA,GAAA,KAkCA,MAAMC,GAKGviM,WAAAA,CACLwiM,GACAD,GAAA9gC,UAAAghC,OAAAhvF,KAAA,MAAA8uF,GAAA9gC,UAAAihC,QAAAjvF,KAAA,MAAA8uF,GAAA9gC,UAAAkhC,QAAAlvF,KAAA,MAAA8uF,GAAA9gC,UAAAmhC,QAAAnvF,KAAA,MACA3zG,KAAK+iM,OAASP,GAAOQ,QACrBhjM,KAAKijM,UAAY,GAEjB,IACEP,EAAS1iM,KAAKkjM,SAAUljM,KAAKmjM,QACnC,CAAM,MAAOliM,IACPjB,KAAKmjM,QAAQliM,GACnB,CACA,CAGSY,IAAAA,CACLuhM,EACAC,GAEA,OAAO,IAAIZ,IAAY,CAAC1iM,EAASgtC,KAC/B/sC,KAAKijM,UAAUvkI,KAAK,EAClB,EACAC,IACE,GAAKykI,EAKH,IACErjM,EAAQqjM,EAAYzkI,GAClC,CAAc,MAAO19D,IACP8rC,EAAO9rC,GACrB,MANYlB,EAAQ4+D,EAOpB,EAEQjF,IACE,GAAK2pI,EAGH,IACEtjM,EAAQsjM,EAAW3pI,GACjC,CAAc,MAAOz4D,IACP8rC,EAAO9rC,GACrB,MANY8rC,EAAO2sB,EAOnB,IAGM15D,KAAKsjM,kBAAkB,GAE7B,CAGSthM,MACLqhM,GAEA,OAAOrjM,KAAK6B,MAAK0hM,GAAOA,GAAKF,EACjC,CAGSG,QAAiBC,GACtB,OAAO,IAAIhB,IAAqB,CAAC1iM,EAASgtC,KACxC,IAAIw2J,EACAG,EAEJ,OAAO1jM,KAAK6B,MACV0vB,IACEmyK,GAAa,EACbH,EAAMhyK,EACFkyK,GACFA,GACZ,IAEQ/pI,IACEgqI,GAAa,EACbH,EAAM7pI,EACF+pI,GACFA,GACZ,IAEQ5hM,MAAK,KACD6hM,EACF32J,EAAOw2J,GAITxjM,EAAQwjM,EAAsB,GAC9B,GAER,CAGmBZ,MAAAA,GAAA,KAAAO,SAAY3xK,IAC3BvxB,KAAK2jM,WAAWnB,GAAOoB,SAAUryK,EAAM,CACxC,CAGgBqxK,OAAAA,GAAA,KAAAO,QAAWzpI,IAC1B15D,KAAK2jM,WAAWnB,GAAOqB,SAAUnqI,EAAO,CACzC,CAGHmpI,OAAAA,GAAA,KAAmBc,WAAa,CAACrrI,EAAe/mC,KACxCvxB,KAAK+iM,SAAWP,GAAOQ,UAIvBc,GAAWvyK,GACPA,EAAyB1vB,KAAK7B,KAAKkjM,SAAUljM,KAAKmjM,UAI1DnjM,KAAK+iM,OAASzqI,EACdt4D,KAAK+jM,OAASxyK,EAEdvxB,KAAKsjM,oBAAkB,CACxB,CAGgBR,OAAAA,GAAA,KAAAQ,iBAAmB,KAClC,GAAItjM,KAAK+iM,SAAWP,GAAOQ,QACzB,OAGF,MAAMgB,EAAiBhkM,KAAKijM,UAAU36I,QACtCtoD,KAAKijM,UAAY,GAEjBe,EAAe7sH,SAAQ8sH,IACjBA,EAAQ,KAIRjkM,KAAK+iM,SAAWP,GAAOoB,UAEzBK,EAAQ,GAAGjkM,KAAK+jM,QAGd/jM,KAAK+iM,SAAWP,GAAOqB,UACzBI,EAAQ,GAAGjkM,KAAK+jM,QAGlBE,EAAQ,IAAK,EAAI,GACjB,CACH,ECzLI,SAASC,KACd,OAAOC,GAAqC,yBAAyB,IAAM,IAC7E,CAMO,SAAS4wb,GAAwB97kB,GAEtCirJ,KAA2BxlI,KAAKzlB,EAClC,CAKO,SAASmrJ,GACdC,EACAxqF,EACAyqF,GAE2B,IAD3Bt9G,EAAKz8E,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,EAEhB,OAAO,IAAIk4L,IAA0B,CAAC1iM,EAASgtC,KAC7C,MAAMw3J,EAAYF,EAAWr9G,GAC7B,GAAc,OAAV6yB,GAAuC,oBAAd0qF,EAC3BxkM,EAAQ85G,OACH,CACL,MAAMl7C,EAAS4lI,EAAU,IAAK1qF,GAASyqF,GAEvCzC,IAAe0C,EAAU96L,IAAiB,OAAXk1D,GAAmB6lI,GAAOlnI,IAAI,oBAAoBinI,EAAU96L,qBAEvFq6L,GAAWnlI,GACRA,EACF98D,MAAK4iM,GAASL,GAAsBC,EAAYI,EAAOH,EAAMt9G,EAAQ,GAAGnlF,KAAK9B,KAC7E8B,KAAK,KAAMkrC,GAETq3J,GAAsBC,EAAY1lI,EAAQ2lI,EAAMt9G,EAAQ,GAC1DnlF,KAAK9B,GACL8B,KAAK,KAAMkrC,EAEtB,IAEA,CC3BO,SAASi+J,KACd,OAAO3pM,KAAKoyF,MAvBW,GAwBzB,CA0Ca,MAAAoxG,GAlCb,WACE,MAAM,YAAE+c,GAAgB3S,GACxB,IAAK2S,IAAgBA,EAAYnuH,IAC/B,OAAOu3G,GAKT,MAAM6W,EAA2BxgN,KAAKoyF,MAAQmuH,EAAYnuH,MACpDquH,OAAuCngN,GAA1BigN,EAAYE,WAA0BD,EAA2BD,EAAYE,WAWhG,MAAO,KACGA,EAAaF,EAAYnuH,OArDZ,GAuDzB,CAWkCsuH,OAavBC,GAMiC,MAK1C,MAAM,YAAEJ,GAAgB3S,GACxB,IAAK2S,IAAgBA,EAAYnuH,IAE/B,YADAuuH,GAAoC,QAItC,MAAM75G,EAAY,KACZ+5G,EAAiBN,EAAYnuH,MAC7B0uH,EAAU9gN,KAAKoyF,MAGf2uH,EAAkBR,EAAYE,WAChCx6J,KAAK+6J,IAAIT,EAAYE,WAAaI,EAAiBC,GACnDh6G,EACEm6G,EAAuBF,EAAkBj6G,EAQzCo6G,EAAkBX,EAAYY,QAAUZ,EAAYY,OAAOD,gBAG3DE,EAFgD,kBAApBF,EAEgBj7J,KAAK+6J,IAAIE,EAAkBL,EAAiBC,GAAWh6G,EAGrGm6G,GAF8BG,EAAuBt6G,EAInDi6G,GAAmBK,GACrBT,GAAoC,aAC7BJ,EAAYE,YAEnBE,GAAoC,kBAMxCA,GAAoC,SAErC,EA/C2C,GAA/B,MCvFApgB,GAAsB,aCU5B,SAAS8C,GAAYC,GAE1B,MAAMC,EAAeC,KAEfpsI,EAAmB,CACvBqsI,IAAKC,KACLj4J,MAAM,EACNk6G,UAAW49C,EACXI,QAASJ,EACTt9L,SAAU,EACV2sB,OAAQ,KACRgxK,OAAQ,EACRC,gBAAgB,EAChB72G,OAAQA,IAkHO,SAAA51B,GACA,OAAA0sI,GAAA,CACAL,IAAA,GAAArsI,EAAAqsI,MACAh4J,KAAA2rB,EAAA3rB,KAEAk4J,QAAA,IAAA3jM,KAAA,IAAAo3D,EAAAusI,SAAAI,cACAp+C,UAAA,IAAA3lJ,KAAA,IAAAo3D,EAAAuuF,WAAAo+C,cACAnxK,OAAAwkC,EAAAxkC,OACAgxK,OAAAxsI,EAAAwsI,OACAI,IAAA,kBAAA5sI,EAAA4sI,KAAA,kBAAA5sI,EAAA4sI,IAAA,GAAA5sI,EAAA4sI,WAAA1jM,EACA2F,SAAAmxD,EAAAnxD,SACAg+L,mBAAA7sI,EAAA6sI,mBACAC,MAAA,CACA3rH,QAAAnhB,EAAAmhB,QACA4rH,YAAA/sI,EAAA+sI,YACAC,WAAAhtI,EAAAitI,UACAC,WAAAltI,EAAAwqG,YAGA,CArID2iC,CAAcntI,IAO9B,OAJIksI,GACFkB,GAAcptI,EAASksI,GAGlBlsI,CACT,CAcO,SAASotI,GAAcptI,GAAsD,IAApCksI,EAAOp6L,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmB,CAAC,EAiCxD,GAhCbo6L,EAAQvwF,QACL37C,EAAQitI,WAAaf,EAAQvwF,KAAKqxF,aACrChtI,EAAQitI,UAAYf,EAAQvwF,KAAKqxF,YAG9BhtI,EAAQ4sI,KAAQV,EAAQU,MAC3B5sI,EAAQ4sI,IAAMV,EAAQvwF,KAAK3qG,IAAMk7L,EAAQvwF,KAAK5pE,OAASm6J,EAAQvwF,KAAK99C,WAIxEmC,EAAQuuF,UAAY29C,EAAQ39C,WAAa69C,KAErCF,EAAQW,qBACV7sI,EAAQ6sI,mBAAqBX,EAAQW,oBAGnCX,EAAQO,iBACVzsI,EAAQysI,eAAiBP,EAAQO,gBAE/BP,EAAQG,MAEVrsI,EAAQqsI,IAA6B,KAAvBH,EAAQG,IAAIt6L,OAAgBm6L,EAAQG,IAAMC,WAErCpjM,IAAjBgjM,EAAQ73J,OACV2rB,EAAQ3rB,KAAO63J,EAAQ73J,OAEpB2rB,EAAQ4sI,KAAOV,EAAQU,MAC1B5sI,EAAQ4sI,IAAM,GAACV,EAAAU,OAEA,kBAAAV,EAAAK,UACAvsI,EAAAusI,QAAAL,EAAAK,SAEAvsI,EAAAysI,eACAzsI,EAAAnxD,cAAA3F,OACA,qBAAAgjM,EAAAr9L,SACAmxD,EAAAnxD,SAAAq9L,EAAAr9L,aACA,CACA,MAAAA,EAAAmxD,EAAAuuF,UAAAvuF,EAAAusI,QACAvsI,EAAAnxD,SAAAA,GAAA,EAAAA,EAAA,CACA,CACAq9L,EAAA/qH,UACAnhB,EAAAmhB,QAAA+qH,EAAA/qH,SAEA+qH,EAAAa,cACA/sI,EAAA+sI,YAAAb,EAAAa,cAEA/sI,EAAAitI,WAAAf,EAAAe,YACAjtI,EAAAitI,UAAAf,EAAAe,YAEAjtI,EAAAwqG,WAAA0hC,EAAA1hC,YACAxqG,EAAAwqG,UAAA0hC,EAAA1hC,WAEA,kBAAA0hC,EAAAM,SACAxsI,EAAAwsI,OAAAN,EAAAM,QAEAN,EAAA1wK,SACAwkC,EAAAxkC,OAAA0wK,EAAA1wK,OAEA,CAaA,SAAA86K,GAAAt2I,EAAAxkC,GACA,IAAA0wK,EAAA,GACA1wK,EACA0wK,EAAA,CAAA1wK,UACA,OAAAwkC,EAAAxkC,SACA0wK,EAAA,CAAA1wK,OAAA,WAGA4xK,GAAAptI,EAAAksI,EACA,CCvHnB,MAEMqwb,GAAuB,kBACvBC,GAAqB,kCASpB,SAASC,KAA8D,QAAA78e,EAAA9tI,UAAAC,OAAzC+qO,EAAO,IAAAruN,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAPg9F,EAAOh9F,GAAAhuI,UAAAguI,GAC1C,MAAM48e,EAAgB5/Y,EAAQp9N,MAAK,CAACqwC,EAAGyjB,IAAMzjB,EAAE,GAAKyjB,EAAE,KAAIxrE,KAAIq5G,GAAKA,EAAE,KAErE,OAAO,SAACs3G,GAAuD,IAAxCgka,EAAS7qnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,EACzC,MAAM8qnB,EAAuB,GACvBvlO,EAAQ1+L,EAAM92J,MAAM,MAE1B,IAAK,IAAIrS,EAAImtkB,EAAWntkB,EAAI6nW,EAAMtlZ,OAAQy9C,IAAK,CAC7C,MAAMypJ,EAAOo+M,EAAM7nW,GAKnB,GAAIypJ,EAAKlnM,OAAS,KAChB,SAKF,MAAM8qnB,EAAcN,GAAqB1viB,KAAKosH,GAAQA,EAAK5oJ,QAAQkskB,GAAsB,MAAQtjb,EAIjG,IAAI4jb,EAAYr5jB,MAAM,cAAtB,CAIA,IAAK,MAAMk6K,KAAUg/Y,EAAe,CAClC,MAAMI,EAAQp/Y,EAAOm/Y,GAErB,GAAIC,EAAO,CACTF,EAAO32jB,KAAK62jB,GACZ,KACV,CACA,CAEM,GAAIF,EAAO7qnB,QAhDc,GAiDvB,KAZR,CAcA,CAEI,OAuBG,SAAqC4mN,GAC1C,IAAKA,EAAM5mN,OACT,MAAO,GAGT,MAAMgrnB,EAAatumB,MAAMta,KAAKwkN,GAG1B,gBAAgB9rI,KAAKkwiB,EAAWA,EAAWhrnB,OAAS,GAAGirnB,UAAY,KACrED,EAAWj+f,MAIbi+f,EAAWt8lB,UAGP+7lB,GAAmB3viB,KAAKkwiB,EAAWA,EAAWhrnB,OAAS,GAAGirnB,UAAY,MACxED,EAAWj+f,MAUP09f,GAAmB3viB,KAAKkwiB,EAAWA,EAAWhrnB,OAAS,GAAGirnB,UAAY,KACxED,EAAWj+f,OAIf,OAAOi+f,EAAWltkB,MAAM,EA5GK,IA4GsB7nD,KAAI80nB,IAAA,IAClDA,EACHG,SAAUH,EAAMG,UAAYF,EAAWA,EAAWhrnB,OAAS,GAAGkrnB,SAC9DD,SAAUF,EAAME,UAAY,OAEhC,CA5DWE,CAA4BN,EACvC,CACA,CA4DA,MAAM3za,GAAsB,cAKrB,SAAStC,GAAgB93D,GAC9B,IACE,OAAKA,GAAoB,oBAAPA,GAGXA,EAAGt+H,MAFD04L,EAGb,CAAI,MAAOzgN,IAGP,OAAOygN,EACX,CACA,CCvGO,SAAS3iG,GAAUsyC,GAA6E,IAA7D1X,EAAKpvI,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,IAAKqrnB,EAAarrnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAYwhN,IACtF,IAEE,OAAOg0L,GAAM,GAAI1uP,EAAO1X,EAAOi8e,EACnC,CAAI,MAAO3znB,GACP,MAAO,CAAEk/C,MAAO,yBAAyBl/C,KAC7C,CACA,CAGO,SAAS4znB,GAEdx3a,GAKG,IAHH1kE,EAAKpvI,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,EAEhBgzL,EAAOhzL,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,OAElB,MAAMgpa,EAAax0T,GAAUs/F,EAAQ1kE,GAErC,OA6NgBpoH,EA7NHgiZ,EAsNf,SAAoBhiZ,GAElB,QAASujX,UAAUvjX,GAAO+oC,MAAM,SAAS9vD,MAC3C,CAKSsrnB,CAAW1ynB,KAAKE,UAAUiuB,IA9NNgsK,EAClBs4b,GAAgBx3a,EAAQ1kE,EAAQ,EAAG4jD,GAGrCg2O,EAyNT,IAAkBhiZ,CAxNlB,CAWA,SAASwuX,GACP78X,EACAqO,GAIiC,IAHjCooH,EAAKpvI,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAYwhN,IACjB6pa,EAAarrnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAYwhN,IACzBu0H,EAAI/1U,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GC/DC,WACL,MAAMwrnB,EAAgC,oBAAZniT,QACpB4e,EAAaujS,EAAa,IAAIniT,QAAY,GAgChD,MAAO,CA/BP,SAAiB7qQ,GACf,GAAIgtjB,EACF,QAAIvjS,EAAMnzR,IAAI0J,KAGdypR,EAAMxlR,IAAIjE,IACH,GAGT,IAAK,IAAI9gB,EAAI,EAAGA,EAAIuqS,EAAMhoV,OAAQy9C,IAEhC,GADcuqS,EAAMvqS,KACN8gB,EACZ,OAAO,EAIX,OADAypR,EAAM9zR,KAAKqK,IACJ,CACX,EAEE,SAAmBA,GACjB,GAAIgtjB,EACFvjS,EAAMj3Q,OAAOxS,QAEb,IAAK,IAAI9gB,EAAI,EAAGA,EAAIuqS,EAAMhoV,OAAQy9C,IAChC,GAAIuqS,EAAMvqS,KAAO8gB,EAAK,CACpBypR,EAAMhtO,OAAOv9D,EAAG,GAChB,KACV,CAGA,EAEA,CD4BmB+tkB,GAEjB,MAAOjyW,EAASkyW,GAAa31S,EAG7B,GACW,MAAT/uT,GACC,CAAC,SAAU,UAAW,UAAU4O,gBAAgB5O,KXgG7B,kBADFguL,EW/FgDhuL,IXgGlCguL,IAAQA,GW9FxC,OAAOhuL,EX6FJ,IAAeguL,EW1FpB,MAAMqpP,EAkGR,SACE1lb,EAGAqO,GAEA,IACE,GAAY,WAARrO,GAAoBqO,GAA0B,kBAAVA,GAAuBA,EAA+B2kmB,QAC5F,MAAO,WAGT,GAAY,kBAARhzmB,EACF,MAAO,kBAMT,GAAsB,qBAAXkgM,EAAAA,GAA0B7xL,IAAU6xL,EAAAA,EAC7C,MAAO,WAIT,GAAsB,qBAAXp3K,QAA0Bza,IAAUya,OAC7C,MAAO,WAIT,GAAwB,qBAAb0iF,UAA4Bn9F,IAAUm9F,SAC/C,MAAO,aAGT,GAAI0jgB,GAAe7gmB,GACjB,MAAO,iBAIT,GXxDG,SAA0BguL,GAC/B,OAAO9U,GAAc8U,IAAQ,gBAAiBA,GAAO,mBAAoBA,GAAO,oBAAqBA,CACvG,CWsDQ42a,CAAiB5kmB,GACnB,MAAO,mBAGT,GAAqB,kBAAVA,GAAsBA,IAAUA,EACzC,MAAO,QAGT,GAAqB,oBAAVA,EACT,MAAO,cAAc6tL,GAAgB7tL,MAGvC,GAAqB,kBAAVA,EACT,MAAO,IAAI5uB,OAAO4uB,MAIpB,GAAqB,kBAAVA,EACT,MAAO,YAAY5uB,OAAO4uB,MAO5B,MAAM6kmB,EAcV,SAA4B7kmB,GAC1B,MAAMowI,EAA8BphK,OAAOghN,eAAehwL,GAE1D,OAAOowI,EAAYA,EAAUzhK,YAAY8oB,KAAO,gBAClD,CAlBoBqtmB,CAAmB9kmB,GAGnC,MAAI,qBAAqB+zD,KAAK8wiB,GACrB,iBAAiBA,KAGnB,WAAWA,IACtB,CAAI,MAAOn0nB,GACP,MAAO,yBAAyBA,IACpC,CACA,CA3KsBq0nB,CAAepzmB,EAAKqO,GAIxC,IAAKq3a,EAAYn6Z,WAAW,YAC1B,OAAOm6Z,EAQT,GAAKr3a,EAA6D,8BAChE,OAAOA,EAMT,MAAMglmB,EACiF,kBAA7EhlmB,EAAuE,wCACzEA,EAAuE,wCACzEooH,EAGN,GAAuB,IAAnB48e,EAEF,OAAO3tL,EAAY9/Y,QAAQ,UAAW,IAIxC,GAAIi7N,EAAQxyP,GACV,MAAO,eAIT,MAAMilmB,EAAkBjlmB,EACxB,GAAIilmB,GAAqD,oBAA3BA,EAAgBnoiB,OAC5C,IAGE,OAAO0xT,GAAM,GAFKy2O,EAAgBnoiB,SAENkoiB,EAAiB,EAAGX,EAAet1S,EACrE,CAAM,MAAOr+U,GACb,CAOE,MAAMsxa,EAAcrsZ,MAAMC,QAAQoK,GAAS,GAAK,CAAC,EACjD,IAAIklmB,EAAW,EAIf,MAAMC,EAAY7C,GAAqBtimB,GAEvC,IAAK,MAAMolmB,KAAYD,EAAW,CAEhC,IAAKn2nB,OAAOohK,UAAU95C,eAAelU,KAAK+ihB,EAAWC,GACnD,SAGF,GAAIF,GAAYb,EAAe,CAC7BriN,EAAWojN,GAAY,oBACvB,KACN,CAGI,MAAMC,EAAaF,EAAUC,GAC7BpjN,EAAWojN,GAAY52O,GAAM42O,EAAUC,EAAYL,EAAiB,EAAGX,EAAet1S,GAEtFm2S,GACJ,CAME,OAHAR,EAAU1kmB,GAGHgiZ,CACT,CE9JO,SAAS3sO,GAAmBb,GACjC,MAAQuG,OAAQ6N,EAAS9N,QAASoE,GAAa1K,EAAK4O,eAC9C,KAAEppK,EAAI,GAAEsqK,EAAE,eAAEqE,EAAc,OAAEjmL,EAAM,KAAEumB,EAAI,OAAE09J,GAAWjR,GAAWlB,GAEtE,OAAOZ,GAAkB,CACvB55J,OACAsqK,KACAqE,iBACAC,UACAlmL,SACAumB,OACAi2J,WACAyH,UAEJ,CAgDO,SAASjR,GAAWlB,GACzB,OAkBF,SAAyBA,GACvB,MAAkD,oBAAnCA,EAAmBkU,WACpC,CApBMwD,CAAgB1X,GACXA,EAAKkU,cAKa,oBAAhBlU,EAAK13G,OAEP03G,EAAK13G,SAGP,CAAC,CACV,CAgBO,SAASkjH,GAAcxL,GAG5B,MAAM,WAAEgT,GAAehT,EAAK4O,cAE5B,OAAOvF,QArGyB,EAqGjB2J,EACjB,CC/DO,SAAS89a,GACd5/iB,EACA4iC,EACAyqF,EACAnC,EACA2G,EACA6D,GAEA,MAAM,eAAEmqb,EAAiB,EAAC,oBAAEC,EAAsB,KAAU9/iB,EACtDk7S,EAAkB,IACnBt4Q,EACHmyF,SAAUnyF,EAAMmyF,UAAY1H,EAAK0H,UAAYjH,KAC7C/9C,UAAWntC,EAAMmtC,WAAagkD,MAE1BtJ,EAAe4C,EAAK5C,cAAgBzqH,EAAQyqH,aAAajhM,KAAIwnD,GAAKA,EAAEj/B,QA2E5E,SAA4B6wF,EAAc5iC,GACxC,MAAM,YAAEuuH,EAAW,QAAE5rH,EAAO,KAAEo9iB,EAAI,eAAEC,EAAiB,KAAQhgjB,EAEvD,gBAAiB4iC,IACrBA,EAAM2rF,YAAc,gBAAiBvuH,EAAUuuH,EAAc5D,SAGzCjgM,IAAlBk4G,EAAMjgC,cAAqCj4E,IAAZi4E,IACjCigC,EAAMjgC,QAAUA,QAGCj4E,IAAfk4G,EAAMm9gB,WAA+Br1nB,IAATq1nB,IAC9Bn9gB,EAAMm9gB,KAAOA,GAGXn9gB,EAAMhuE,UACRguE,EAAMhuE,QAAUg8K,GAAShuG,EAAMhuE,QAASorlB,IAG1C,MAAMnrb,EAAYjyF,EAAMiyF,WAAajyF,EAAMiyF,UAAUrgI,QAAUouC,EAAMiyF,UAAUrgI,OAAO,GAClFqgI,GAAaA,EAAUv6K,QACzBu6K,EAAUv6K,MAAQs2L,GAAS/b,EAAUv6K,MAAO0lmB,IAG9C,MAAMzynB,EAAUq1G,EAAMr1G,QAClBA,GAAWA,EAAQonC,MACrBpnC,EAAQonC,IAAMi8K,GAASrjN,EAAQonC,IAAKqrlB,GAExC,CArGEC,CAAmB/kQ,EAAUl7S,GA8M/B,SAAmC4iC,EAAcs9gB,GAC3CA,EAAiB3snB,OAAS,IAC5BqvG,EAAMu9gB,IAAMv9gB,EAAMu9gB,KAAO,CAAC,EAC1Bv9gB,EAAMu9gB,IAAI11b,aAAe,IAAK7nF,EAAMu9gB,IAAI11b,cAAgB,MAAQy1b,GAEpE,CAlNEE,CAA0BllQ,EAAUzwL,QAGjB//L,IAAfk4G,EAAMrhG,MAwGL,SAAuBqhG,EAAcy9gB,GAC1C,MAAMC,EAAatob,GAAWuob,gBAE9B,IAAKD,EACH,OAGF,IAAIE,EACJ,MAAMC,EAA+BC,GAAwBxplB,IAAImplB,GAC7DI,EACFD,EAA0BC,GAE1BD,EAA0B,IAAIj9iB,IAC9Bm9iB,GAAwB1zjB,IAAIqzjB,EAAaG,IAI3C,MAAMG,EAAqBr3nB,OAAOC,KAAK+2nB,GAAY9plB,QAA+B,CAACC,EAAKmqlB,KACtF,IAAIC,EACJ,MAAMC,EAAoBN,EAAwBtplB,IAAI0plB,GAClDE,EACFD,EAAcC,GAEdD,EAAcR,EAAYO,GAC1BJ,EAAwBxzjB,IAAI4zjB,EAAmBC,IAGjD,IAAK,IAAI7vkB,EAAI6vkB,EAAYttnB,OAAS,EAAGy9C,GAAK,EAAGA,IAAK,CAChD,MAAM+vkB,EAAaF,EAAY7vkB,GAC/B,GAAI+vkB,EAAWtC,SAAU,CACvBholB,EAAIsqlB,EAAWtC,UAAY6B,EAAWM,GACtC,KACR,CACA,CACI,OAAOnqlB,CAAG,GACT,CAAC,GAEJ,IAEEmsE,EAAOiyF,UAAWrgI,OAAQ0L,SAAQ20H,IAEhCA,EAAUmsb,WAAY5C,OAAQl+iB,SAAQo+iB,IAChCA,EAAMG,WACRH,EAAM2C,SAAWN,EAAmBrC,EAAMG,UACpD,GACQ,GAER,CAAI,MAAOz0nB,IACX,CAEA,CAzJIk3nB,CAAchmQ,EAAUl7S,EAAQqgjB,aAKlC,MAAMc,EAiRR,SAAuBj2b,EAA0BiI,GAC/C,IAAKA,EACH,OAAOjI,EAGT,MAAMi2b,EAAaj2b,EAAQA,EAAMjxF,QAAU,IAAIs2F,GAE/C,OADA4wb,EAAWxhiB,OAAOwzG,GACXgub,CACT,CAzRqBC,CAAcl2b,EAAOmC,EAAK8F,gBAEzC9F,EAAKmwb,WACPH,GAAsBniQ,EAAU7tL,EAAKmwb,WAGvC,MAAM6D,EAAwBxvb,GAAUA,EAAOyvb,mBAAqBzvb,EAAOyvb,qBAAuB,GAK5FhtlB,EC+mBD,WACAitlB,KACHA,GAAc,IAAIhxb,IAGpB,OAAOgxb,EACT,CDrnBeC,GAAiBlub,eAE9B,GAAIoC,EAAgB,CAElB+rb,GAAentlB,EADOohK,EAAepC,eAEzC,CAEE,GAAI6tb,EAAY,CAEdM,GAAentlB,EADQ6slB,EAAW7tb,eAEtC,CAEE,MAAMc,EAAc,IAAK/G,EAAK+G,aAAe,MAAQ9/J,EAAK8/J,aACtDA,EAAY7gM,SACd85L,EAAK+G,YAAcA,GAGrBvF,GAAsBqsL,EAAU5mV,GAahC,OAFe64J,GARS,IACnBk0b,KAEAp0b,QAEA34J,EAAKggK,iBAG4C4mL,EAAU7tL,GAElDziM,MAAK82nB,IACbA,GA+GD,SAAwB9+gB,GAE7B,MAAM+9gB,EAA6C,CAAC,EACpD,IAEE/9gB,EAAMiyF,UAAWrgI,OAAQ0L,SAAQ20H,IAE/BA,EAAUmsb,WAAY5C,OAAQl+iB,SAAQo+iB,IAChCA,EAAM2C,WACJ3C,EAAMqD,SACRhB,EAAmBrC,EAAMqD,UAAYrD,EAAM2C,SAClC3C,EAAMG,WACfkC,EAAmBrC,EAAMG,UAAYH,EAAM2C,iBAEtC3C,EAAM2C,SACvB,GACQ,GAER,CAAI,MAAOj3nB,IACX,CAGE,GAA+C,IAA3CV,OAAOC,KAAKo3nB,GAAoBptnB,OAClC,OAIFqvG,EAAMg/gB,WAAah/gB,EAAMg/gB,YAAc,CAAC,EACxCh/gB,EAAMg/gB,WAAWC,OAASj/gB,EAAMg/gB,WAAWC,QAAU,GACrD,MAAMA,EAASj/gB,EAAMg/gB,WAAWC,OAChCv4nB,OAAOC,KAAKo3nB,GAAoBzgjB,SAAQu+iB,IACtCoD,EAAOp6jB,KAAK,CACVlmD,KAAM,YACNugnB,UAAWrD,EACXwC,SAAUN,EAAmBlC,IAC7B,GAEN,CA/IMsD,CAAeL,GAGa,kBAAnB7B,GAA+BA,EAAiB,EAmK/D,SAAwBj9gB,EAAqB8/B,EAAes/e,GAC1D,IAAKp/gB,EACH,OAAO,KAGT,MAAM05T,EAAoB,IACrB15T,KACCA,EAAMmsF,aAAe,CACvBA,YAAansF,EAAMmsF,YAAYvlM,KAAIwrE,IAAE,IAChCA,KACCA,EAAE1gC,MAAQ,CACZA,KAAMwzE,GAAU9yC,EAAE1gC,KAAMouG,EAAOs/e,YAIjCp/gB,EAAMzF,MAAQ,CAChBA,KAAM2K,GAAUlF,EAAMzF,KAAMulC,EAAOs/e,OAEjCp/gB,EAAMssF,UAAY,CACpBA,SAAUpnF,GAAUlF,EAAMssF,SAAUxsD,EAAOs/e,OAEzCp/gB,EAAMqsF,OAAS,CACjBA,MAAOnnF,GAAUlF,EAAMqsF,MAAOvsD,EAAOs/e,KAWrCp/gB,EAAMssF,UAAYtsF,EAAMssF,SAASQ,OAAS4sO,EAAWptO,WACvDotO,EAAWptO,SAASQ,MAAQ9sF,EAAMssF,SAASQ,MAGvC9sF,EAAMssF,SAASQ,MAAMp7J,OACvBgoY,EAAWptO,SAASQ,MAAMp7J,KAAOwzE,GAAUlF,EAAMssF,SAASQ,MAAMp7J,KAAMouG,EAAOs/e,KAK7Ep/gB,EAAMm8F,QACRu9N,EAAWv9N,MAAQn8F,EAAMm8F,MAAMv1M,KAAIslM,IACjC,MAAMx6J,EAAO07J,GAAWlB,GAAMx6J,KAQ9B,OANIA,IAGFw6J,EAAKx6J,KAAOwzE,GAAUxzE,EAAMouG,EAAOs/e,IAG9Blzb,CAAI,KAIf,OAAOwtO,CACT,CA5Na2lN,CAAeP,EAAK7B,EAAgBC,GAEtC4B,IAEX,CAsCA,MAAMhB,GAA0B,IAAIhsX,QAkM7B,SAASwtX,GACd70b,GAEA,GAAKA,EAKL,OAaF,SACEA,GAEA,OAAOA,aAAgBkD,IAAyB,oBAATlD,CACzC,CAjBM80b,CAAsB90b,IA+B5B,SAA4BA,GAC1B,OAAO/jM,OAAOC,KAAK8jM,GAAM73H,MAAKvpD,GAAOm2mB,GAAmBl5lB,SAASjd,IACnE,CA7BMo2mB,CAAmBh1b,GAHd,CAAE8F,eAAgB9F,GASpBA,CACT,CASA,MAAM+0b,GAAsD,CAC1D,OACA,QACA,QACA,WACA,OACA,cACA,iBACA,sBE5TK,SAASjtb,GAAavyF,EAAcyqF,GAEzC,OAAOrC,KAAgBmK,aAAavyF,EAAOyqF,EAC7C,CAuBO,SAASqG,GAAcC,EAAwBtG,GAEpDrC,KAAgB0I,cAAcC,EAAYtG,EAC5C,CAwFO,SAASvC,KAId,MAAMC,EAAMC,KAEd,QAAA5pD,EAAA9tI,UAAAC,OALK03L,EAAI,IAAAh7K,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJ2pD,EAAI3pD,GAAAhuI,UAAAguI,GAMP,GAAoB,IAAhB2pD,EAAK13L,OAAc,CACrB,MAAO23L,EAAOlpJ,GAAYipJ,EAC1B,OAAKC,EAMEH,EAAID,WAAU,KAEnBC,EAAII,cAAcD,MAAQA,EACnBlpJ,EAASkpJ,MAPTH,EAAID,UAAU9oJ,EAS3B,CAGE,OAAO+oJ,EAAID,UAAUG,EAAK,GAC5B,CAmLO,SAASG,KAEd,OAAOJ,KAAgBI,WACzB,CAYO,SAASC,KAEd,OAAOL,KAAgBM,UACzB,CASO,SAASyM,GAAarK,GAC3B,MAAMmE,EAASzG,KACTsK,EAAiBc,KACjB8rb,EAAej3b,MAEf,QAAE1oH,EAAO,YAAE4rH,EAAc5D,IAAyBkH,GAAUA,EAAO+E,cAAiB,CAAC,GAGrF,UAAE5qC,GAAcgsC,GAAWjsC,WAAa,CAAC,EAEzCvqG,EAAUisI,GAAY,CAC1B9qH,UACA4rH,cACApxF,KAAMmlhB,EAAarvlB,WAAayiK,EAAeziK,aAC3C+4H,GAAa,CAAEA,gBAChB0hC,IAICuK,EAAiBvC,EAAexC,aActC,OAbI+E,GAA4C,OAA1BA,EAAej7K,QACnC4xK,GAAcqJ,EAAgB,CAAEj7K,OAAQ,WAG1C46K,KAGAlC,EAAezC,WAAWzxI,GAI1B8gkB,EAAarvb,WAAWzxI,GAEjBA,CACT,CAKO,SAASo2I,KACd,MAAMlC,EAAiBc,KACjB8rb,EAAej3b,KAEf7pI,EAAU8gkB,EAAapvb,cAAgBwC,EAAexC,aACxD1xI,GACFs2I,GAAat2I,GAEfq2I,KAGAnC,EAAezC,aAIfqvb,EAAarvb,YACf,CAKA,SAAS4E,KACP,MAAMnC,EAAiBc,KACjB8rb,EAAej3b,KACfwG,EAASzG,KAGT5pI,EAAU8gkB,EAAapvb,cAAgBwC,EAAexC,aACxD1xI,GAAWqwI,GAAUA,EAAO8F,gBAC9B9F,EAAO8F,eAAen2I,EAE1B,CAQO,SAASm2I,KAAkBrkM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAG9BskM,KAKFC,IACF,CCtfO,SAAShI,GAAYf,GAG1B,OAAOA,EAAKU,WACd,CCDO,SAAS+J,GACdC,EACA3H,EACA3G,GAEA,MAAMlrH,EAAU6xH,EAAO+E,cAEftzJ,UAAWm2J,GAAe5H,EAAO6H,UAAY,CAAC,GAG9CzH,QAAS0H,GAAkBzO,GAASA,EAAMj4J,WAAc,CAAC,EAE3D2mK,EAAM1L,GAAkB,CAC5BK,YAAavuH,EAAQuuH,aAAe5D,GACpChoH,QAAS3C,EAAQ2C,QACjBg3H,eACAF,aACAD,aAKF,OAFA3H,EAAOkF,MAAQlF,EAAOkF,KAAK,YAAa6C,GAEjCA,CACT,CAcO,SAAS7J,GAAkCjB,GAChD,MAAM+C,EAASzG,KACf,IAAKyG,EACH,MAAO,CAAC,EAIV,MAAM+H,EAAML,GAAoCvJ,GAAWlB,GAAM0K,UAAY,GAAI3H,EAAQxG,MAGnFwO,EAAMhK,GAAYf,GACxB,IAAK+K,EACH,OAAOD,EAMT,MAAME,EAAcD,GAAOA,EAAIE,8BAC/B,GAAID,EACF,OAAOA,EAMT,MAAQE,WAAYC,EAAe,OAAE5xG,GAAWwxG,EAAIK,SAC7B,MAAnBD,IACFL,EAAIO,YAAc,GAACF,KAIA,MAAAG,EAAApK,GAAA6J,GAWA,OARAxxG,GAAA,QAAAA,IACAuxG,EAAApK,YAAA4K,EAAAxlB,aAGAglB,EAAAS,QAAA3uM,OAAA4uM,GAAAT,IAEAhI,EAAAkF,MAAAlF,EAAAkF,KAAA,YAAA6C,GAEAA,CACA,CCrFhB,SAAS/K,GAAsBjsF,EAActuE,GAClD,MAAM,YAAEsrC,EAAW,KAAEkvH,EAAI,YAAEC,EAAW,sBAAEC,GAA0B16J,GA8GpE,SAA0BsuE,EAActuE,GACtC,MAAM,MACJ26J,EAAK,KACL1rJ,EAAI,KACJ45D,EAAI,SACJ+xF,EAAQ,MACR5xH,EAAK,gBAEL6xH,GACE76J,EAEE86J,EAAelB,GAAkBe,GACnCG,GAAgB9lM,OAAOC,KAAK6lM,GAAc77L,SAC5CqvG,EAAMqsF,MAAQ,IAAKG,KAAiBxsF,EAAMqsF,QAG5C,MAAMI,EAAcnB,GAAkB3qJ,GAClC8rJ,GAAe/lM,OAAOC,KAAK8lM,GAAa97L,SAC1CqvG,EAAMr/D,KAAO,IAAK8rJ,KAAgBzsF,EAAMr/D,OAG1C,MAAM+rJ,EAAcpB,GAAkB/wF,GAClCmyF,GAAehmM,OAAOC,KAAK+lM,GAAa/7L,SAC1CqvG,EAAMzF,KAAO,IAAKmyF,KAAgB1sF,EAAMzF,OAG1C,MAAMoyF,EAAkBrB,GAAkBgB,GACtCK,GAAmBjmM,OAAOC,KAAKgmM,GAAiBh8L,SAClDqvG,EAAMssF,SAAW,IAAKK,KAAoB3sF,EAAMssF,WAG9C5xH,IACFslC,EAAMtlC,MAAQA,GAGZ6xH,IACFvsF,EAAM4sF,YAAcL,EAExB,CAjJEM,CAAiB7sF,EAAOtuE,GAKpBw6J,GA0JN,SAA0BlsF,EAAcksF,GACtClsF,EAAMssF,SAAW,CAAEQ,MAAOC,GAAmBb,MAAUlsF,EAAMssF,UAC7D,MAAMU,EAAWC,GAAYf,GAC7B,GAAIc,EAAU,CACZhtF,EAAMosF,sBAAwB,CAC5Bc,uBAAwBC,GAAkCjB,MACvDlsF,EAAMosF,uBAEX,MAAMG,EAAkBa,GAAWJ,GAAUhb,YACzCua,IACFvsF,EAAMr/D,KAAO,CAAEisJ,YAAaL,KAAoBvsF,EAAMr/D,MAE5D,CACA,CAtKI0sJ,CAAiBrtF,EAAOksF,GA4K5B,SAAiClsF,EAAchjC,GAE7CgjC,EAAMhjC,YAAcgjC,EAAMhjC,YAAcswH,GAASttF,EAAMhjC,aAAe,GAGlEA,IACFgjC,EAAMhjC,YAAcgjC,EAAMhjC,YAAYp1E,OAAOo1E,IAI3CgjC,EAAMhjC,cAAgBgjC,EAAMhjC,YAAYrsE,eACnCqvG,EAAMhjC,WAEjB,CAtLEuwH,CAAwBvtF,EAAOhjC,GA0IjC,SAAiCgjC,EAAcmsF,GAC7C,MAAMqB,EAAoB,IAAKxtF,EAAMmsF,aAAe,MAAQA,GAC5DnsF,EAAMmsF,YAAcqB,EAAkB78L,OAAS68L,OAAoB1lM,CACrE,CA5IE2lM,CAAwBztF,EAAOmsF,GA8IjC,SAAiCnsF,EAAcosF,GAC7CpsF,EAAMosF,sBAAwB,IACzBpsF,EAAMosF,yBACNA,EAEP,CAlJEsB,CAAwB1tF,EAAOosF,EACjC,CAGO,SAASyyb,GAAentlB,EAAiB42O,GAC9C,MAAM,MACJj8E,EAAK,KACL1rJ,EAAI,KACJ45D,EAAI,SACJ+xF,EAAQ,MACR5xH,EAAK,sBACL0xH,EAAqB,YACrBD,EAAW,YACXnvH,EAAW,gBACX00H,EAAe,YACfF,EAAW,mBACXb,EAAkB,gBAElBpE,EAAe,KACfL,GACEo8E,EAEJq3W,GAA2BjulB,EAAM,QAAS26J,GAC1Cszb,GAA2BjulB,EAAM,OAAQiP,GACzCg/kB,GAA2BjulB,EAAM,OAAQ6oE,GACzColhB,GAA2BjulB,EAAM,WAAY46J,GAC7Cqzb,GAA2BjulB,EAAM,wBAAyB06J,GAEtD1xH,IACFhpC,EAAKgpC,MAAQA,GAGX6xH,IAEF76J,EAAK66J,gBAAkBA,GAGrBL,IACFx6J,EAAKw6J,KAAOA,GAGVC,EAAYx7L,SACd+gC,EAAKy6J,YAAc,IAAIz6J,EAAKy6J,eAAgBA,IAG1CnvH,EAAYrsE,SACd+gC,EAAKsrC,YAAc,IAAItrC,EAAKsrC,eAAgBA,IAG1C00H,EAAgB/gM,SAClB+gC,EAAKggK,gBAAkB,IAAIhgK,EAAKggK,mBAAoBA,IAGlDF,EAAY7gM,SACd+gC,EAAK8/J,YAAc,IAAI9/J,EAAK8/J,eAAgBA,IAG9C9/J,EAAKi/J,mBAAqB,IAAKj/J,EAAKi/J,sBAAuBA,EAC7D,CAMO,SAASgvb,GAGdjulB,EAAY8oG,EAAYolf,GACxB,GAAIA,GAAYl5nB,OAAOC,KAAKi5nB,GAAUjvnB,OAAQ,CAE5C+gC,EAAK8oG,GAAQ,IAAK9oG,EAAK8oG,IACvB,IAAK,MAAMnxH,KAAOu2mB,EACZl5nB,OAAOohK,UAAU95C,eAAelU,KAAK8lhB,EAAUv2mB,KACjDqoB,EAAK8oG,GAAMnxH,GAAOu2mB,EAASv2mB,GAGnC,CACA,CJ5DA,IAAIs1mB,GAMG,MAAMhxb,GA+DJtnM,WAAAA,GACLF,KAAKynM,qBAAsB,EAC3BznM,KAAK0nM,gBAAkB,GACvB1nM,KAAK2nM,iBAAmB,GACxB3nM,KAAK4nM,aAAe,GACpB5nM,KAAK6nM,aAAe,GACpB7nM,KAAK8nM,MAAQ,CAAC,EACd9nM,KAAK+nM,MAAQ,CAAC,EACd/nM,KAAKgoM,OAAS,CAAC,EACfhoM,KAAKioM,UAAY,CAAC,EAClBjoM,KAAKkoM,uBAAyB,CAAC,EAC/BloM,KAAKmoM,oBAAsBC,IAC/B,CAMS,YAAOl3F,CAAMixF,GAClB,OAAOA,EAAQA,EAAMjxF,QAAU,IAAIs2F,EACvC,CAKSt2F,KAAAA,GACL,MAAMm3F,EAAW,IAAIb,GAkBrB,OAjBAa,EAAST,aAAe,IAAI5nM,KAAK4nM,cACjCS,EAASN,MAAQ,IAAK/nM,KAAK+nM,OAC3BM,EAASL,OAAS,IAAKhoM,KAAKgoM,QAC5BK,EAASJ,UAAY,IAAKjoM,KAAKioM,WAC/BI,EAASP,MAAQ9nM,KAAK8nM,MACtBO,EAASC,OAAStoM,KAAKsoM,OACvBD,EAASE,MAAQvoM,KAAKuoM,MACtBF,EAASG,SAAWxoM,KAAKwoM,SACzBH,EAASI,iBAAmBzoM,KAAKyoM,iBACjCJ,EAASK,aAAe1oM,KAAK0oM,aAC7BL,EAASV,iBAAmB,IAAI3nM,KAAK2nM,kBACrCU,EAASM,gBAAkB3oM,KAAK2oM,gBAChCN,EAASR,aAAe,IAAI7nM,KAAK6nM,cACjCQ,EAASH,uBAAyB,IAAKloM,KAAKkoM,wBAC5CG,EAASF,oBAAsB,IAAKnoM,KAAKmoM,qBACzCE,EAASO,QAAU5oM,KAAK4oM,QAEjBP,CACX,CAGSQ,SAAAA,CAAUC,GACf9oM,KAAK4oM,QAAUE,CACnB,CAOSzG,SAAAA,GACL,OAAOriM,KAAK4oM,OAChB,CAMSG,gBAAAA,CAAiB9vJ,GACtBj5C,KAAK0nM,gBAAgBhpI,KAAKzlB,EAC9B,CAKS+vJ,iBAAAA,CAAkB/vJ,GAEvB,OADAj5C,KAAK2nM,iBAAiBjpI,KAAKzlB,GACpBj5C,IACX,CAKSipM,OAAAA,CAAQ70F,GAgBb,OAbAp0G,KAAK8nM,MAAQ1zF,GAAQ,CACnB5pE,WAAO7oC,EACP8H,QAAI9H,EACJ8jM,gBAAY9jM,EACZunM,aAASvnM,EACT20D,cAAU30D,GAGR3B,KAAKwoM,UACP3C,GAAc7lM,KAAKwoM,SAAU,CAAEp0F,SAGjCp0G,KAAKmpM,wBACEnpM,IACX,CAKSkqC,OAAAA,GACL,OAAOlqC,KAAK8nM,KAChB,CAKSsB,iBAAAA,GACL,OAAOppM,KAAK2oM,eAChB,CAKSU,iBAAAA,CAAkBC,GAEvB,OADAtpM,KAAK2oM,gBAAkBW,EAChBtpM,IACX,CAKSupM,OAAAA,CAAQ/uJ,GAMb,OALAx6C,KAAK+nM,MAAQ,IACR/nM,KAAK+nM,SACLvtJ,GAELx6C,KAAKmpM,wBACEnpM,IACX,CAKSwpM,MAAAA,CAAOtmL,EAAaqO,GAGzB,OAFAvxB,KAAK+nM,MAAQ,IAAK/nM,KAAK+nM,MAAO,CAAC7kL,GAAMqO,GACrCvxB,KAAKmpM,wBACEnpM,IACX,CAKSypM,SAAAA,CAAUC,GAMf,OALA1pM,KAAKgoM,OAAS,IACThoM,KAAKgoM,UACL0B,GAEL1pM,KAAKmpM,wBACEnpM,IACX,CAKS2pM,QAAAA,CAASzmL,EAAagjL,GAG3B,OAFAlmM,KAAKgoM,OAAS,IAAKhoM,KAAKgoM,OAAQ,CAAC9kL,GAAMgjL,GACvClmM,KAAKmpM,wBACEnpM,IACX,CAKS4pM,cAAAA,CAAe/yH,GAGpB,OAFA72E,KAAK0oM,aAAe7xH,EACpB72E,KAAKmpM,wBACEnpM,IACX,CAKSigM,QAAAA,CAEL1rH,GAIA,OAFAv0E,KAAKsoM,OAAS/zH,EACdv0E,KAAKmpM,wBACEnpM,IACX,CAKS6pM,kBAAAA,CAAmB7gL,GAGxB,OAFAhpB,KAAKyoM,iBAAmBz/K,EACxBhpB,KAAKmpM,wBACEnpM,IACX,CAKS8pM,UAAAA,CAAW5mL,EAAayhL,GAS7B,OARgB,OAAZA,SAEK3kM,KAAKioM,UAAU/kL,GAEtBljB,KAAKioM,UAAU/kL,GAAOyhL,EAGxB3kM,KAAKmpM,wBACEnpM,IACX,CAOS+pM,OAAAA,CAAQhE,GAGb,OAFA/lM,KAAKuoM,MAAQxC,EACb/lM,KAAKmpM,wBACEnpM,IACX,CAMSgqM,OAAAA,GACL,OAAOhqM,KAAKuoM,KAChB,CAMS0B,cAAAA,GAGL,MAAMlE,EAAO/lM,KAAKuoM,MAIlB,OAAOxC,GAAQA,EAAKU,WACxB,CAKSyD,UAAAA,CAAWzxI,GAOhB,OANKA,EAGHz4D,KAAKwoM,SAAW/vI,SAFTz4D,KAAKwoM,SAIdxoM,KAAKmpM,wBACEnpM,IACX,CAKSmqM,UAAAA,GACL,OAAOnqM,KAAKwoM,QAChB,CAKS5xG,MAAAA,CAAOwzG,GACZ,IAAKA,EACH,OAAOpqM,KAGT,MAAMqqM,EAAyC,oBAAnBD,EAAgCA,EAAepqM,MAAQoqM,EAEnF,GAAIC,aAAwB7C,GAAO,CACjC,MAAM8C,EAAYD,EAAaE,eAE/BvqM,KAAK+nM,MAAQ,IAAK/nM,KAAK+nM,SAAUuC,EAAU9vJ,MAC3Cx6C,KAAKgoM,OAAS,IAAKhoM,KAAKgoM,UAAWsC,EAAUpE,OAC7ClmM,KAAKioM,UAAY,IAAKjoM,KAAKioM,aAAcqC,EAAUnE,UAC/CmE,EAAUl2F,MAAQ7zG,OAAOC,KAAK8pM,EAAUl2F,MAAM5pG,SAChDxK,KAAK8nM,MAAQwC,EAAUl2F,MAErBk2F,EAAU/1H,QACZv0E,KAAKsoM,OAASgC,EAAU/1H,OAEtB+1H,EAAUzzH,YAAYrsE,SACxBxK,KAAK0oM,aAAe4B,EAAUzzH,aAE5BwzH,EAAajB,sBACfppM,KAAK2oM,gBAAkB0B,EAAajB,qBAElCkB,EAAUE,qBACZxqM,KAAKmoM,oBAAsBmC,EAAUE,mBAE7C,MAAW,GAAIC,GAAcJ,GAAe,CACtC,MAAMK,EAAeN,EACrBpqM,KAAK+nM,MAAQ,IAAK/nM,KAAK+nM,SAAU2C,EAAalwJ,MAC9Cx6C,KAAKgoM,OAAS,IAAKhoM,KAAKgoM,UAAW0C,EAAaxE,OAChDlmM,KAAKioM,UAAY,IAAKjoM,KAAKioM,aAAcyC,EAAavE,UAClDuE,EAAat2F,OACfp0G,KAAK8nM,MAAQ4C,EAAat2F,MAExBs2F,EAAan2H,QACfv0E,KAAKsoM,OAASoC,EAAan2H,OAEzBm2H,EAAa7zH,cACf72E,KAAK0oM,aAAegC,EAAa7zH,aAE/B6zH,EAAapB,iBACftpM,KAAK2oM,gBAAkB+B,EAAapB,gBAElCoB,EAAaF,qBACfxqM,KAAKmoM,oBAAsBuC,EAAaF,mBAEhD,CAEI,OAAOxqM,IACX,CAKS46E,KAAAA,GAeL,OAdA56E,KAAK4nM,aAAe,GACpB5nM,KAAK+nM,MAAQ,CAAC,EACd/nM,KAAKgoM,OAAS,CAAC,EACfhoM,KAAK8nM,MAAQ,CAAC,EACd9nM,KAAKioM,UAAY,CAAC,EAClBjoM,KAAKsoM,YAAS3mM,EACd3B,KAAKyoM,sBAAmB9mM,EACxB3B,KAAK0oM,kBAAe/mM,EACpB3B,KAAK2oM,qBAAkBhnM,EACvB3B,KAAKuoM,WAAQ5mM,EACb3B,KAAKwoM,cAAW7mM,EAChB3B,KAAKmpM,wBACLnpM,KAAK6nM,aAAe,GACpB7nM,KAAKmoM,oBAAsBC,KACpBpoM,IACX,CAKS2qM,aAAAA,CAAcC,EAAwBC,GAC3C,MAAMC,EAAsC,kBAAnBD,EAA8BA,EAja3B,IAoa5B,GAAIC,GAAa,EACf,OAAO9qM,KAGT,MAAM+qM,EAAmB,CACvB/jD,UAAWgkD,QACRJ,GAGC5E,EAAchmM,KAAK4nM,aAMzB,OALA5B,EAAYtnI,KAAKqsI,GACjB/qM,KAAK4nM,aAAe5B,EAAYx7L,OAASsgM,EAAY9E,EAAY19I,OAAOwiJ,GAAa9E,EAErFhmM,KAAKmpM,wBAEEnpM,IACX,CAKSirM,iBAAAA,GACL,OAAOjrM,KAAK4nM,aAAa5nM,KAAK4nM,aAAap9L,OAAS,EACxD,CAKS0gM,gBAAAA,GAGL,OAFAlrM,KAAK4nM,aAAe,GACpB5nM,KAAKmpM,wBACEnpM,IACX,CAKSmrM,aAAAA,CAAcnoL,GAEnB,OADAhjB,KAAK6nM,aAAanpI,KAAK17C,GAChBhjB,IACX,CAMSorM,cAAAA,GAGL,OAFaprM,KAAKuqM,eAENc,WAChB,CAKSC,gBAAAA,GAEL,OADAtrM,KAAK6nM,aAAe,GACb7nM,IACX,CAGSuqM,YAAAA,GACL,MAAM,aACJ3C,EAAY,aACZC,EAAY,UACZI,EAAS,MACTF,EAAK,OACLC,EAAM,MACNF,EAAK,OACLQ,EAAM,aACNI,EAAY,iBACZf,EAAgB,oBAChBQ,EAAmB,uBACnBD,EAAsB,iBACtBO,EAAgB,MAChBF,GACEvoM,KAEJ,MAAO,CACLgmM,YAAa4B,EACbyD,YAAaxD,EACb1B,SAAU8B,EACVztJ,KAAMutJ,EACN7B,MAAO8B,EACP5zF,KAAM0zF,EACNvzH,MAAO+zH,EACPzxH,YAAa6xH,GAAgB,GAC7B6C,gBAAiB5D,EACjB6C,mBAAoBrC,EACpBlC,sBAAuBiC,EACvB9B,gBAAiBqC,EACjB1C,KAAMwC,EAEZ,CAUSiD,YAAAA,CACL3xF,GAG2B,IAF3ByqF,EAAI/5L,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAc,CAAC,EACnBkhM,EAAyBlhM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAqB,GAE9Cu7L,GAAsBjsF,EAAO75G,KAAKuqM,gBAUlC,OAAOnG,GAPmC,IACrCqH,KAEAvH,QACAlkM,KAAK2nM,kBAGoC9tF,EAAOyqF,EACzD,CAKSoH,wBAAAA,CAAyBxzH,GAG9B,OAFAl4E,KAAKkoM,uBAAyB,IAAKloM,KAAKkoM,0BAA2BhwH,GAE5Dl4E,IACX,CAKS2rM,qBAAAA,CAAsBhH,GAE3B,OADA3kM,KAAKmoM,oBAAsBxD,EACpB3kM,IACX,CAKS4rM,qBAAAA,GACL,OAAO5rM,KAAKmoM,mBAChB,CASS0D,gBAAAA,CAAiBC,EAAoBxH,GAC1C,MAAMyH,EAAUzH,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KAExD,IAAK/kM,KAAK4oM,QAER,OADApE,GAAOj2J,KAAK,+DACLw9J,EAGT,MAAME,EAAqB,IAAI5jM,MAAM,6BAarC,OAXArI,KAAK4oM,QAAQiD,iBACXC,EACA,CACEI,kBAAmBJ,EACnBG,wBACG3H,EACH0H,SAAUD,GAEZ/rM,MAGK+rM,CACX,CAUSI,cAAAA,CAAetgK,EAAiB0oC,EAAuB+vH,GAC5D,MAAMyH,EAAUzH,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KAExD,IAAK/kM,KAAK4oM,QAER,OADApE,GAAOj2J,KAAK,6DACLw9J,EAGT,MAAME,EAAqB,IAAI5jM,MAAMwjC,GAcrC,OAZA7rC,KAAK4oM,QAAQuD,eACXtgK,EACA0oC,EACA,CACE23H,kBAAmBrgK,EACnBogK,wBACG3H,EACH0H,SAAUD,GAEZ/rM,MAGK+rM,CACX,CASSK,YAAAA,CAAavyF,EAAcyqF,GAChC,MAAMyH,EAAUzH,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KAExD,OAAK/kM,KAAK4oM,SAKV5oM,KAAK4oM,QAAQwD,aAAavyF,EAAO,IAAKyqF,EAAM0H,SAAUD,GAAW/rM,MAE1D+rM,IANLvH,GAAOj2J,KAAK,2DACLw9J,EAMb,CAKY5C,qBAAAA,GAIHnpM,KAAKynM,sBACRznM,KAAKynM,qBAAsB,EAC3BznM,KAAK0nM,gBAAgBvwH,SAAQl+B,IAC3BA,EAASj5C,KAAK,IAEhBA,KAAKynM,qBAAsB,EAEjC,EAwBA,SAASW,KACP,MAAO,CACLiE,QAAStH,KACTuH,OAAQvH,KAAQ9vG,UAAU,IAE9B,CKvtBO,MAAMykiB,GAAc,UC8Cdntb,GAAcC,WAAWktb,IAMhCjtb,GAAsB,IAkErB,MAAMC,GAyDJxsM,WAAAA,CACL4oM,EACA3G,EACAwK,GAEA,IACIC,EAQAC,EAVaC,EAAQviM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAWgiM,GACpC,KAAAO,SAAAA,EAEK3K,EAIHyK,EAAgBzK,GAHhByK,EAAgB,IAAIpF,GACpBoF,EAAc/D,UAAUC,IAMrB6D,EAIHE,EAAyBF,GAHzBE,EAAyB,IAAIrF,GAC7BqF,EAAuBhE,UAAUC,IAKnC9oM,KAAK+sM,OAAS,CAAC,CAAE5K,MAAOyK,IAEpB9D,GAEF9oM,KAAKgtM,WAAWlE,GAGlB9oM,KAAKitM,gBAAkBJ,CAC3B,CAUSK,WAAAA,CAAY5iM,GACjB,OAAOtK,KAAK8sM,SAAWxiM,CAC3B,CAQS0iM,UAAAA,CAAWlE,GAEhB,MAAMqE,EAAMntM,KAAKoiM,cACjB+K,EAAIrE,OAASA,EACbqE,EAAIhL,MAAM0G,UAAUC,GAEhBA,GAAUA,EAAOsE,mBAEnBtE,EAAOsE,mBAEb,CAOSC,SAAAA,GAGL,MAAMlL,EAAQniM,KAAKuiM,WAAWrxF,QAO9B,OALAlxG,KAAKstM,WAAW5uI,KAAK,CAEnBoqI,OAAQ9oM,KAAKqiM,YACbF,UAEKA,CACX,CAOSoL,QAAAA,GAEL,QAAIvtM,KAAKstM,WAAW9iM,QAAU,MAErBxK,KAAKstM,WAAW/1E,KAC7B,CAOSwqE,SAAAA,CAAa9oJ,GAElB,MAAMkpJ,EAAQniM,KAAKqtM,YAEnB,IAAIG,EACJ,IACEA,EAAqBv0J,EAASkpJ,EACpC,CAAM,MAAOlhM,IAGP,MADAjB,KAAKutM,WACCtsM,EACZ,CAEI,OAAI6iM,GAAW0J,GAENA,EAAmB3rM,MACxB4hE,IAEEzjE,KAAKutM,WACE9pI,KAETxiE,IAGE,MADAjB,KAAKutM,WACCtsM,CAAC,KAMbjB,KAAKutM,WACEC,EACX,CAOSnL,SAAAA,GAEL,OAAOriM,KAAKoiM,cAAc0G,MAC9B,CAOSvG,QAAAA,GAEL,OAAOviM,KAAKoiM,cAAcD,KAC9B,CAKSsL,iBAAAA,GACL,OAAOztM,KAAKitM,eAChB,CAMSK,QAAAA,GACL,OAAOttM,KAAK+sM,MAChB,CAMS3K,WAAAA,GACL,OAAOpiM,KAAK+sM,OAAO/sM,KAAK+sM,OAAOviM,OAAS,EAC5C,CAOSqhM,gBAAAA,CAAiBC,EAAoBxH,GAC1C,MAAMyH,EAAW/rM,KAAK0tM,aAAepJ,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KACvEkH,EAAqB,IAAI5jM,MAAM,6BASrC,OAPArI,KAAKuiM,WAAWsJ,iBAAiBC,EAAW,CAC1CI,kBAAmBJ,EACnBG,wBACG3H,EACH0H,SAAUD,IAGLA,CACX,CAOSI,cAAAA,CACLtgK,EAEA0oC,EACA+vH,GAEA,MAAMyH,EAAW/rM,KAAK0tM,aAAepJ,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KACvEkH,EAAqB,IAAI5jM,MAAMwjC,GASrC,OAPA7rC,KAAKuiM,WAAW4J,eAAetgK,EAAS0oC,EAAO,CAC7C23H,kBAAmBrgK,EACnBogK,wBACG3H,EACH0H,SAAUD,IAGLA,CACX,CAOSK,YAAAA,CAAavyF,EAAcyqF,GAChC,MAAMyH,EAAUzH,GAAQA,EAAK0H,SAAW1H,EAAK0H,SAAWjH,KAMxD,OALKlrF,EAAMrhG,OACTxY,KAAK0tM,aAAe3B,GAGtB/rM,KAAKuiM,WAAW6J,aAAavyF,EAAO,IAAKyqF,EAAM0H,SAAUD,IAClDA,CACX,CAOS4B,WAAAA,GACL,OAAO3tM,KAAK0tM,YAChB,CAOS/C,aAAAA,CAAcC,EAAwBtG,GAE3C,MAAM,MAAEnC,EAAK,OAAE2G,GAAW9oM,KAAKoiM,cAE/B,IAAK0G,EAAQ,OAEb,MAAM,iBAAE8E,EAAmB,KAAI,eAAE/C,EAAiB4B,IAC/C3D,EAAO+E,YAAc/E,EAAO+E,cAAiB,CAAC,EAEjD,GAAIhD,GAAkB,EAAG,OAEzB,MACME,EAAmB,CAAE/jD,UADTgkD,QACuBJ,GACnCkD,EAAkBF,EACnBG,IAAe,IAAMH,EAAiB7C,EAAkBzG,KACzDyG,EAEoB,OAApB+C,IAEAhF,EAAOkF,MACTlF,EAAOkF,KAAK,sBAAuBF,EAAiBxJ,GAWtDnC,EAAMwI,cAAcmD,EAAiBjD,GACzC,CAMS5B,OAAAA,CAAQ70F,GAGbp0G,KAAKuiM,WAAW0G,QAAQ70F,GAExBp0G,KAAKytM,oBAAoBxE,QAAQ70F,EACrC,CAMSm1F,OAAAA,CAAQ/uJ,GAGbx6C,KAAKuiM,WAAWgH,QAAQ/uJ,GAExBx6C,KAAKytM,oBAAoBlE,QAAQ/uJ,EACrC,CAMSivJ,SAAAA,CAAUC,GAGf1pM,KAAKuiM,WAAWkH,UAAUC,GAE1B1pM,KAAKytM,oBAAoBhE,UAAUC,EACvC,CAMSF,MAAAA,CAAOtmL,EAAaqO,GAGzBvxB,KAAKuiM,WAAWiH,OAAOtmL,EAAKqO,GAE5BvxB,KAAKytM,oBAAoBjE,OAAOtmL,EAAKqO,EACzC,CAMSo4K,QAAAA,CAASzmL,EAAagjL,GAG3BlmM,KAAKuiM,WAAWoH,SAASzmL,EAAKgjL,GAE9BlmM,KAAKytM,oBAAoB9D,SAASzmL,EAAKgjL,EAC3C,CAOS4D,UAAAA,CAAW9gL,EAAc27K,GAG9B3kM,KAAKuiM,WAAWuH,WAAW9gL,EAAM27K,GAEjC3kM,KAAKytM,oBAAoB3D,WAAW9gL,EAAM27K,EAC9C,CAOSsJ,cAAAA,CAAeh1J,GAEpB,MAAM,MAAEkpJ,EAAK,OAAE2G,GAAW9oM,KAAKoiM,cAC3B0G,GACF7vJ,EAASkpJ,EAEf,CAMS+L,GAAAA,CAAIj1J,GAET,MAAMk1J,EAASC,GAASpuM,MACxB,IACEi5C,EAASj5C,KACf,SAEMouM,GAASD,EACf,CACA,CAMSE,cAAAA,CAAsCC,GAE3C,MAAMxF,EAAS9oM,KAAKqiM,YACpB,IAAKyG,EAAQ,OAAO,KACpB,IAEE,OAAOA,EAAOuF,eAAeC,EACnC,CAAM,MAAOC,GAEP,OADA1M,IAAe2C,GAAOj2J,KAAK,+BAA+B+/J,EAAY7kM,2BAC/D,IACb,CACA,CAqBS+kM,gBAAAA,CAAiB7J,EAA6B8J,GACnD,MAAM9vI,EAAS3+D,KAAK0uM,qBAAkC,mBAAoB/J,EAAS8J,GAEnF,GAAI5M,KAAgBljI,EAAQ,CAEX3+D,KAAKqiM,YAMlBmC,GAAOj2J,KAAK,sKAJZi2J,GAAOj2J,KACL,+GAQV,CAEI,OAAOowB,CACX,CAMSgwI,YAAAA,GACL,OAAO3uM,KAAK0uM,qBAAgD,eAChE,CAOSE,cAAAA,GAEL,GAF8BrkM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAI5B,OAAOvK,KAAK6uM,aAId7uM,KAAK8uM,oBACT,CAMSD,UAAAA,GAEL,MACM1M,EADQniM,KAAKoiM,cACCD,MACd1pI,EAAU0pI,EAAMgI,aAClB1xI,GACFs2I,GAAat2I,GAEfz4D,KAAK8uM,qBAGL3M,EAAM+H,YACV,CAMS8E,YAAAA,CAAarK,GAElB,MAAM,MAAExC,EAAK,OAAE2G,GAAW9oM,KAAKoiM,eACzB,QAAExoH,EAAO,YAAE4rH,EAAc5D,IAAyBkH,GAAUA,EAAO+E,cAAiB,CAAC,GAGrF,UAAE5qC,GAAcgsC,GAAWjsC,WAAa,CAAC,EAEzCvqG,EAAUisI,GAAY,CAC1B9qH,UACA4rH,cACApxF,KAAM+tF,EAAMj4J,aACR+4H,GAAa,CAAEA,gBAChB0hC,IAICuK,EAAiB/M,EAAMgI,YAAchI,EAAMgI,aAUjD,OATI+E,GAA4C,OAA1BA,EAAej7K,QACnC4xK,GAAcqJ,EAAgB,CAAEj7K,OAAQ,WAG1Cj0B,KAAK6uM,aAGL1M,EAAM+H,WAAWzxI,GAEVA,CACX,CASS02I,oBAAAA,GAEL,MAAMrG,EAAS9oM,KAAKqiM,YACdprH,EAAU6xH,GAAUA,EAAO+E,aACjC,OAAOuB,QAAQn4H,GAAWA,EAAQo4H,eACtC,CAKUP,kBAAAA,GAEN,MAAM,MAAE3M,EAAK,OAAE2G,GAAW9oM,KAAKoiM,cAEzB3pI,EAAU0pI,EAAMgI,aAClB1xI,GAAWqwI,GAAUA,EAAO8F,gBAC9B9F,EAAO8F,eAAen2I,EAE5B,CAOUi2I,oBAAAA,CAAwB9mM,GAC9B,MACM0nM,EADU5O,KACOC,WACvB,GAAI2O,GAAUA,EAAOC,YAAmD,oBAA9BD,EAAOC,WAAW3nM,GAAwB,SAAAywI,EAAA9tI,UAAAC,OAHnC8tI,EAAI,IAAApxH,MAAAmxH,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAA,GAAAhuI,UAAAguI,GAInD,OAAO+2D,EAAOC,WAAW3nM,GAAQigD,MAAM7nD,KAAMs4I,EACnD,CACIupD,IAAe2C,GAAOj2J,KAAK,oBAAoB3mC,sCACnD,EAUO,SAAS84L,KAKd,OAJAuO,GAAWtO,WAAasO,GAAWtO,YAAc,CAC/C4O,WAAY,CAAC,EACbvN,SAAKrgM,GAEAstM,EACT,CAUO,SAASb,GAASpM,GACvB,MAAMwN,EAAW9O,KACXyN,EAASsB,GAAkBD,GAEjC,OADAE,GAAgBF,EAAUxN,GACnBmM,CACT,CAYO,SAASlM,KAEd,MAAMuN,EAAW9O,KAEjB,GAAI8O,EAAS7O,YAAc6O,EAAS7O,WAAWgP,IAAK,CAClD,MAAM3N,EAAMwN,EAAS7O,WAAWgP,IAAI1N,gBAEpC,GAAID,EACF,OAAOA,CAEb,CAGE,OAAO4N,GAAaJ,EACtB,CAOO,SAAS/B,KAEd,OAAOxL,KAAgBwL,mBACzB,CAGA,SAASmC,KAAwD,IAA3CJ,EAAQjlM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAYm2L,KAaxC,OATGmP,GAAgBL,KAEjBC,GAAkBD,GAAUtC,YAAYX,KAGxCmD,GAAgBF,EAAU,IAAI9C,IAIzB+C,GAAkBD,EAC3B,CA4DA,SAASK,GAAgBpP,GACvB,SAAUA,GAAWA,EAAQE,YAAcF,EAAQE,WAAWqB,IAChE,CASO,SAASyN,GAAkBhP,GAEhC,OAAO0D,GAAwB,OAAO,IAAM,IAAIuI,IAAOjM,EACzD,CASO,SAASiP,GAAgBjP,EAAkBuB,GAChD,IAAKvB,EAAS,OAAO,EAGrB,OAFoBA,EAAQE,WAAaF,EAAQE,YAAc,CAAC,GACrDqB,IAAMA,GACV,CACT,CC72Ba,MAAA23b,GAAkC,GAkCxC,SAASC,GAAuB3ijB,GACrC,MAAM4ijB,EAAsB5ijB,EAAQ4ijB,qBAAuB,GACrDC,EAAmB7ijB,EAAQyqH,aAOjC,IAAIA,EAJJm4b,EAAoB1ijB,SAAQm3H,IAC1BA,EAAYyrb,mBAAoB,CAAI,IAMpCr4b,EADEx6K,MAAMC,QAAQ2ymB,GACD,IAAID,KAAwBC,GACN,oBAArBA,EACD3yb,GAAS2yb,EAAiBD,IAE1BA,EAGjB,MAAMG,EAxCR,SAA0Bt4b,GACxB,MAAMu4b,EAAqD,CAAC,EAgB5D,OAdAv4b,EAAavqH,SAAQ+ijB,IACnB,MAAM,KAAElxmB,GAASkxmB,EAEXC,EAAmBF,EAAmBjxmB,GAIxCmxmB,IAAqBA,EAAiBJ,mBAAqBG,EAAgBH,oBAI/EE,EAAmBjxmB,GAAQkxmB,EAAe,IAGrC35nB,OAAOC,KAAKy5nB,GAAoBx5nB,KAAIC,GAAKu5nB,EAAmBv5nB,IACrE,CAsB4B05nB,CAAiB14b,GAMrC24b,EA2FgG,SAAAjtiB,EAAAn0C,GACA,QAAAgP,EAAA,EAAAA,EAAAmlC,EAAA5iF,OAAAy9C,IACA,QAAAhP,EAAAm0C,EAAAnlC,IACA,OAAAA,EAIA,QACA,CAnGnFw9D,CAAUu0gB,GAAmB1rb,GAAoC,UAArBA,EAAYtlL,OAC3E,IAAoB,IAAhBqxmB,EAAmB,CACrB,MAAOC,GAAiBN,EAAkBx0gB,OAAO60gB,EAAY,GAC7DL,EAAkBt7jB,KAAK47jB,EAC3B,CAEE,OAAON,CACT,CAwBO,SAASO,GAAuBzxb,EAAgBpH,GACrD,IAAK,MAAM4M,KAAe5M,EAEpB4M,GAAeA,EAAYksb,eAC7Blsb,EAAYksb,cAAc1xb,EAGhC,CAGO,SAAS2xb,GAAiB3xb,EAAgBwF,EAA0Bosb,GACzE,GAAIA,EAAiBpsb,EAAYtlL,MAC/B64K,IAAe2C,GAAOlnI,IAAI,yDAAyDgxI,EAAYtlL,YADjG,CAkBsG,GAdA0xmB,EAAApsb,EAAAtlL,MAAAslL,GAGA,IAAAqrb,GAAApwhB,QAAA+kG,EAAAtlL,QAEAslL,EAAAqsb,UAAA5F,GAAA9yb,IACA03b,GAAAj7jB,KAAA4vI,EAAAtlL,OAIAslL,EAAAssb,OAAA,oBAAAtsb,EAAAssb,OACAtsb,EAAAssb,MAAA9xb,GAGAA,EAAAj/E,IAAA,oBAAAykF,EAAAusb,gBAAA,CACA,MAAA5hlB,EAAAq1J,EAAAusb,gBAAAnyiB,KAAA4lH,GACAxF,EAAAj/E,GAAA,oBAAAhQ,EAAAyqF,IAAArrJ,EAAA4gE,EAAAyqF,EAAAwE,IACA,CAEA,GAAAA,EAAAE,mBAAA,oBAAAsF,EAAAwsb,aAAA,CACA,MAAA7hlB,EAAAq1J,EAAAwsb,aAAApyiB,KAAA4lH,GAEA/J,EAAAhkM,OAAA8sC,QAAA,CAAAwsE,EAAAyqF,IAAArrJ,EAAA4gE,EAAAyqF,EAAAwE,IAAA,CACAr/L,GAAA6kM,EAAAtlL,OAGA8/K,EAAAE,kBAAAzE,EACA,CAEA1C,IAAA2C,GAAAlnI,IAAA,0BAAAgxI,EAAAtlL,OA9BA,CA+BA,CA+BA,SAAA+xmB,GACA/xmB,EACAs+H,GAEA,OAAA/mJ,OAAA8sC,QACA,WACA,OAAAi6G,KAAA/8I,UACA,GACA,CAAAd,GAAAuf,GAEA,CC/LxG,MAAMgymB,GAAwB,CAC5B,oBACA,gDACA,kEACA,yCAGIC,GAA8B,CAClC,oBACA,gBACA,aACA,cACA,kBACA,eACA,iBAcIC,GAAmB,iBAcZC,GAbuB,WAAkD,IAAjDlkjB,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmC,CAAC,EAC9E,MAAO,CACLye,KAAMkymB,GAENP,SAAAA,GAAa,EACbG,YAAAA,CAAajhhB,EAAOuhhB,EAAOtyb,GACzB,MAAMuyb,EAAgBvyb,EAAO+E,aACvB09J,EA8BZ,WAGkC,IAFhC+vR,EAAe/wnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmC,CAAC,EACnD8wnB,EAAa9wnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmC,CAAC,EAEjD,MAAO,CACLgxnB,UAAW,IAAKD,EAAgBC,WAAa,MAASF,EAAcE,WAAa,IACjFC,SAAU,IAAKF,EAAgBE,UAAY,MAASH,EAAcG,UAAY,IAC9E5vN,aAAc,IACR0vN,EAAgB1vN,cAAgB,MAChCyvN,EAAczvN,cAAgB,MAC9B0vN,EAAgBG,qBAAuB,GAAKT,IAElDU,mBAAoB,IACdJ,EAAgBI,oBAAsB,MACtCL,EAAcK,oBAAsB,MACpCJ,EAAgBK,2BAA6B,GAAKV,IAExDW,oBAAmDj6nB,IAAnC25nB,EAAgBM,gBAA+BN,EAAgBM,eAEnF,CAjD4BC,CAAc5kjB,EAASokjB,GAC7C,OAkDN,SAA0BxhhB,EAAc5iC,GACtC,GAAIA,EAAQ2kjB,gBA4G4F,SAAA/hhB,GACA,IAGA,sBAAAA,EAAAiyF,UAAArgI,OAAA,GAAAjzD,IACA,OAAAvX,IACA,CAEA,QACA,CArH1E66nB,CAAejihB,GAG2D,OAFtGgoF,IACE2C,GAAOj2J,KAAK,6DAA6D4llB,GAAoBt6gB,OACO,EAEA,GAmCA,SAAAA,EAAA+xT,GAEA,GAAA/xT,EAAArhG,OAAAozZ,IAAAA,EAAApha,OACA,SAGA,OA8BA,SAAAqvG,GACA,MAAAkihB,EAAA,GAEAlihB,EAAAhuE,SACAkwlB,EAAAr9jB,KAAAm7C,EAAAhuE,SAGA,IAAAmwlB,EACA,IAGAA,EAAAnihB,EAAAiyF,UAAArgI,OAAAouC,EAAAiyF,UAAArgI,OAAAjhE,OAAA,EACA,OAAAvJ,IACA,CAGA+6nB,GACAA,EAAAzqmB,QACAwqmB,EAAAr9jB,KAAAs9jB,EAAAzqmB,OACAyqmB,EAAAxjnB,MACAujnB,EAAAr9jB,KAAA,GAAAs9jB,EAAAxjnB,SAAAwjnB,EAAAzqmB,UAKAswK,IAAA,IAAAk6b,EAAAvxnB,QACAg6L,GAAAn2J,MAAA,uCAAA8llB,GAAAt6gB,MAGA,OAAAkihB,CACA,CA5DAE,CAAApihB,GAAAptC,MAAA5gC,GAAA4nlB,GAAA5nlB,EAAA+/X,IACA,CA1CAswN,CAAArihB,EAAA5iC,EAAA20V,cAKA,OAJA/pO,IACA2C,GAAAj2J,KACA,0EAAA4llB,GAAAt6gB,OAEA,EAEA,GAqCA,SAAAA,EAAA6hhB,GACA,mBAAA7hhB,EAAArhG,OAAAkjnB,IAAAA,EAAAlxnB,OACA,SAGA,MAAAwe,EAAA6wF,EAAA4sF,YACA,QAAAz9K,GAAAyqmB,GAAAzqmB,EAAA0ymB,EACA,CA5CAS,CAAAtihB,EAAA5iC,EAAAykjB,oBAKA,OAJA75b,IACA2C,GAAAj2J,KACA,gFAAA4llB,GAAAt6gB,OAEA,EAEA,GAuCA,SAAAA,EAAA2hhB,GAEA,IAAAA,IAAAA,EAAAhxnB,OACA,SAEA,MAAAohC,EAAAwwlB,GAAAvihB,GACA,QAAAjuE,GAAA6nlB,GAAA7nlB,EAAA4vlB,EACA,CA9CAa,CAAAxihB,EAAA5iC,EAAAukjB,UAOA,OANA35b,IACA2C,GAAAj2J,KACA,sEAAA4llB,GACAt6gB,aACAuihB,GAAAvihB,OAEA,EAEA,IAuCA,SAAAA,EAAA0hhB,GAEA,IAAAA,IAAAA,EAAA/wnB,OACA,SAEA,MAAAohC,EAAAwwlB,GAAAvihB,GACA,OAAAjuE,GAAA6nlB,GAAA7nlB,EAAA2vlB,EACA,CA9CAe,CAAAzihB,EAAA5iC,EAAAskjB,WAOA,OANA15b,IACA2C,GAAAj2J,KACA,2EAAA4llB,GACAt6gB,aACAuihB,GAAAvihB,OAEA,EAEA,QACA,CAzF7F0ihB,CAAiB1ihB,EAAO0xP,GAAiB,KAAO1xP,CAC7D,EAEA,EAS8BkhhB,GAC5BG,GACAC,IAwKwG,SAAAiB,GAAAvihB,GACA,IACA,IAAAw7gB,EACA,IAEAA,EAAAx7gB,EAAAiyF,UAAArgI,OAAA,GAAAwsjB,WAAA5C,MACA,OAAAp0nB,IACA,CAEA,OAAAo0nB,EArBA,eAAAA,EAAA9qnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,MACA,QAAA09C,EAAAotkB,EAAA7qnB,OAAA,EAAAy9C,GAAA,EAAAA,IAAA,CACA,MAAAstkB,EAAAF,EAAAptkB,GAEA,GAAAstkB,GAAA,gBAAAA,EAAAG,UAAA,kBAAAH,EAAAG,SACA,OAAAH,EAAAG,UAAA,IAEA,CAEA,WACA,CAWA8G,CAAAnH,GAAA,IACA,OAAAoH,GAEA,OADA56b,IAAA2C,GAAAn2J,MAAA,gCAAA8llB,GAAAt6gB,MACA,IACA,CACA,CC5O1G,IAAI6ihB,GAEJ,MAAMxB,GAAmB,mBAEnByB,GAAgB,IAAIhxX,QAwCbixX,GAtCyBC,KAC7B,CACL7zmB,KAAMkymB,GACNP,SAAAA,GAEE+B,GAA2BzqY,SAAStwF,UAAUh5G,SAI9C,IAEEspM,SAAStwF,UAAUh5G,SAAW,WAC5B,MAAM22W,EAAmBq0N,GAAoB3znB,MACvC2kM,EACJg4b,GAAct9jB,IAAIgjI,YAA+C1gM,IAArB29Z,EAAiCA,EAAmBt/Z,KAAI,QAAAq4I,EAAA9tI,UAAAC,OAHtC8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAIpE,OAAOmkf,GAAyB70kB,MAAM88I,EAASrsD,EACzD,CACA,CAAQ,MAAMr3I,IACd,CAEA,EACI25nB,KAAAA,CAAM9xb,GACJ6zb,GAAc14jB,IAAI6kI,GAAQ,EAChC,IAuBgCiyb,GAC9BG,GACA0B,IC1CK,SAASE,GACdC,EACA9ljB,IAEsB,IAAlBA,EAAQ9W,QACN0hI,GACF2C,GAAOyb,SAGPlS,IAAe,KAEbz/J,QAAQC,KAAK,+EAA+E,KAIpF+zJ,KACR1rG,OAAO3f,EAAQ+ljB,cAErB,MAAMl0b,EAAS,IAAIi0b,EAAY9ljB,IAQ1B,SAA0B6xH,GAE/B,MAEMqE,EAFMlL,KAEIG,cAChB+K,EAAIrE,OAASA,EACbqE,EAAIhL,MAAM0G,UAAUC,EACtB,CAdEm0b,CAAiBn0b,GAoBnB,SAA0BA,GACpBA,EAAOh8J,KACTg8J,EAAOh8J,OAGEg8J,EAAOsE,mBAEhBtE,EAAOsE,mBAEX,CA5BE8vb,CAAiBp0b,EACnB,CCjCA,MAAMypb,GAASlva,KA4DR,SAAS85a,KACd,KAAM,UAAW5K,IACf,OAAO,EAGT,IAIE,OAHA,IAAIl4jB,QACJ,IAAItc,QAAQ,0BACZ,IAAIq/kB,UACG,CACX,CAAI,MAAOn8nB,IACP,OAAO,CACX,CACA,CAKO,SAASo8nB,GAAc3mY,GAC5B,OAAOA,GAAQ,mDAAmDpxK,KAAKoxK,EAAK/tM,WAC9E,CC3DA,MAAM4pkB,GAASlva,KCjBf,MAAMrE,GAA6E,CAAC,EAC9EC,GAA6D,CAAC,EAG7D,SAAS5M,GAAW75L,EAA6ByrL,GACtD+a,GAASxmM,GAAQwmM,GAASxmM,IAAS,GAClCwmM,GAASxmM,GAAsCkmD,KAAKulI,EACvD,CAaO,SAASqO,GAAgB95L,EAA6B0mM,GACtDD,GAAazmM,KAChB0mM,IACAD,GAAazmM,IAAQ,EAEzB,CAGO,SAASq5L,GAAgBr5L,EAA6B+yB,GAC3D,MAAM4zK,EAAe3mM,GAAQwmM,GAASxmM,GACtC,GAAK2mM,EAIL,IAAK,MAAMlb,KAAWkb,EACpB,IACElb,EAAQ14J,EACd,CAAM,MAAOtqC,IACP4gM,IACE2C,GAAOn2J,MACL,0DAA0D71B,YAAe4mM,GAAgBnb,aACzFhjM,GAEV,CAEA,CC3CA,MAAMsxnB,GAAStjb,GAEf,IAAIqub,GAUG,SAASC,GAAiCt5b,GAC/C,MAAMzrL,EAAO,UACb65L,GAAW75L,EAAMyrL,GACjBqO,GAAgB95L,EAAMglnB,GACxB,CAEA,SAASA,KACP,IFIK,WAML,MAAMC,EAAalL,GAAemL,OAC5BC,EAAsBF,GAAaA,EAAUG,KAAOH,EAAUG,IAAIroS,QAElEsoS,EAAgB,YAAatL,MAAYA,GAAOh6Q,QAAQW,aAAeq5Q,GAAOh6Q,QAAQM,aAE5F,OAAQ8kR,GAAuBE,CACjC,CEhBOC,GACH,OAGF,MAAMC,EAAgBxL,GAAOyL,WAoB7B,SAASC,EAA2BC,GAClC,OAAO,WAA+C,QAAAllf,EAAAzuI,UAAAC,OAAnB8tI,EAAI,IAAApxH,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJX,EAAIW,GAAA1uI,UAAA0uI,GACrC,MAAMrtG,EAAM0sG,EAAK9tI,OAAS,EAAI8tI,EAAK,QAAK32I,EACxC,GAAIiqC,EAAK,CAEP,MAAMh/B,EAAO0wnB,GACPzwnB,EAAKlK,OAAOipC,GAElB0xlB,GAAWzwnB,EAEXglM,GAAgB,UADwB,CAAEjlM,OAAMC,MAExD,CACM,OAAOqxnB,EAAwBr2kB,MAAM7nD,KAAMs4I,EACjD,CACA,CAjCEi6e,GAAOyL,WAAa,WAClB,MAAMnxnB,EAAK0lnB,GAAOx5gB,SAASC,KAErBpsG,EAAO0wnB,GACbA,GAAWzwnB,EAGX,GADAglM,GAAgB,UADwB,CAAEjlM,OAAMC,OAE5CkxnB,EAIF,IAAI,QAAA1lf,EAAA9tI,UAAAC,OAXoD8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAY1D,OAAOwlf,EAAcl2kB,MAAM7nD,KAAMs4I,EACzC,CAAQ,MAAOi2D,GACf,CAGA,EAkBEoS,GAAK4xa,GAAOh6Q,QAAS,YAAa0lR,GAClCt9a,GAAK4xa,GAAOh6Q,QAAS,eAAgB0lR,EACvC,CClEA,MAAME,GAAY,kEAeX,SAASC,GAAYC,GAA2D,IAAvC3yd,EAAYnhK,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAC1D,MAAM,KAAEpK,EAAI,KAAE0H,EAAI,KAAE04a,EAAI,KAAElrC,EAAI,UAAEipP,EAAS,SAAEh4Q,EAAQ,UAAE/rU,GAAc8jlB,EACnE,MACE,GAAC/3Q,OAAA/rU,IAAAmxH,GAAA60Q,EAAA,IAAAA,IAAA,MACApgb,IAAAk1Y,EAAA,IAAAA,IAAA,MAAAxtY,EAAA,GAAAA,KAAAA,IAAAy2nB,GAEA,CAwCA,SAAAC,GAAAz6e,GACA,OACAwiO,SAAAxiO,EAAAwiO,SACA/rU,UAAAupG,EAAAvpG,WAAA,GACAgmY,KAAAz8R,EAAAy8R,MAAA,GACApgb,KAAA2jJ,EAAA3jJ,KACAk1Y,KAAAvxP,EAAAuxP,MAAA,GACAxtY,KAAAi8I,EAAAj8I,MAAA,GACAy2nB,UAAAx6e,EAAAw6e,UAEA,CA4CA,SAAAE,GAAA5xnB,GACA,MAAAk3I,EAAA,kBAAAl3I,EAvFA,SAAAs6C,GACA,MAAA+U,EAAAkikB,GAAA1iZ,KAAAv0L,GAEA,IAAA+U,EAMA,YAJA8xI,IAAA,KAEAz/J,QAAAD,MAAA,uBAAA6Y,IAAA,IAKA,MAAAo/T,EAAA/rU,EAAAgmY,EAAA,GAAApgb,EAAAk1Y,EAAA,GAAAopP,GAAAxikB,EAAA3T,MAAA,GACA,IAAAzgD,EAAA,GACAy2nB,EAAAG,EAEA,MAAAnkkB,EAAAgkkB,EAAAhkkB,MAAA,KAMA,GALAA,EAAA9vD,OAAA,IACA3C,EAAAyyD,EAAAhS,MAAA,MAAA1lC,KAAA,KACA07mB,EAAAhkkB,EAAAi9D,OAGA+mgB,EAAA,CACA,MAAAI,EAAAJ,EAAArikB,MAAA,QACAyikB,IACAJ,EAAAI,EAAA,GAEA,CAEA,OAAAH,GAAA,CAAAp+nB,OAAAogb,OAAA14a,OAAAy2nB,YAAAjpP,OAAA/uB,SAAAA,EAAA/rU,aACA,CAyDAoklB,CAAA/xnB,GAAA2xnB,GAAA3xnB,GACA,GAAAk3I,GA5CA,SAAAu6e,GACA,IAAAx8b,GACA,SAGA,WAAAwzM,EAAA,UAAAipP,EAAA,SAAAh4Q,GAAA+3Q,EAWA,OATA,4CACA5xlB,MAAA+3G,IACA65e,EAAA75e,KACAggD,GAAAn2J,MAAA,uBAAAm2G,cACA,OASA85e,EAAArikB,MAAC,SA3FN,SAAyBqqT,GACvB,MAAoB,SAAbA,GAAoC,UAAbA,CAChC,CA8FKs4Q,CAAAt4Q,IAKA+uB,IAAA5tS,MAAAr5D,SAAAinW,EAAA,OACA7wM,GAAAn2J,MAAA,oCAAAgnW,MACA,IANA7wM,GAAAn2J,MAAA,wCAAAi4U,MACA,IANA9hL,GAAAn2J,MAAA,yCAAAiwlB,MACA,GAcA,CAQAO,CAAA/6e,GAGA,OAAAA,CACA,CCtGE,SAASg7e,GAAmCj/nB,GACjD,MAAO,CAACA,EAD6D0K,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAS,GAEhF,CAOO,SAASw0nB,GAAsCC,EAAaC,GACjE,MAAOp/nB,EAASi8G,GAASkjhB,EACzB,MAAO,CAACn/nB,EAAS,IAAIi8G,EAAOmjhB,GAC9B,CAQO,SAASC,GACdF,EACA/llB,GAEA,MAAMkmlB,EAAgBH,EAAS,GAE/B,IAAK,MAAMI,KAAgBD,EAAe,CAIxC,GAFelmlB,EAASmmlB,EADCA,EAAa,GAAG5mnB,MAIvC,OAAO,CAEb,CAEE,OAAO,CACT,CAYA,SAAS6mnB,GAAWhue,EAAe9W,GAEjC,OADaA,GAAe,IAAIC,aACpBG,OAAO0W,EACrB,CAKO,SAASiue,GAAkBN,EAAoBzkf,GACpD,MAAOglf,EAAYzjhB,GAASkjhB,EAG5B,IAAI/3mB,EAA+B7jB,KAAKE,UAAUi8nB,GAElD,SAASh4mB,EAAOgxC,GACO,kBAAVtxC,EACTA,EAAwB,kBAATsxC,EAAoBtxC,EAAQsxC,EAAO,CAAC8mkB,GAAWp4mB,EAAOszH,GAAchiF,GAEnFtxC,EAAMy3C,KAAqB,kBAATnG,EAAoB8mkB,GAAW9mkB,EAAMgiF,GAAehiF,EAE5E,CAEE,IAAK,MAAM2jB,KAAQ4/B,EAAO,CACxB,MAAO0jhB,EAAajlkB,GAAW2hB,EAI/B,GAFA30D,EAAO,KAAKnkB,KAAKE,UAAUk8nB,QAEJ,kBAAZjlkB,GAAwBA,aAAmB1sB,WACpDtmB,EAAOgzC,OACF,CACL,IAAIklkB,EACJ,IACEA,EAAqBr8nB,KAAKE,UAAUi3D,EAC5C,CAAQ,MAAOt5D,IAIPw+nB,EAAqBr8nB,KAAKE,UAAUy7G,GAAUxkD,GACtD,CACMhzC,EAAOk4mB,EACb,CACA,CAEE,MAAwB,kBAAVx4mB,EAAqBA,EAGrC,SAAuBy4mB,GACrB,MAAMC,EAAcD,EAAQjylB,QAAO,CAACC,EAAKgsG,IAAQhsG,EAAMgsG,EAAIlvI,QAAQ,GAE7D26E,EAAS,IAAIt3C,WAAW8xlB,GAC9B,IAAIn4kB,EAAS,EACb,IAAK,MAAMY,KAAUs3kB,EACnBv6iB,EAAOlhB,IAAI7b,EAAQZ,GACnBA,GAAUY,EAAO59C,OAGnB,OAAO26E,CACT,CAd6Cy6iB,CAAc34mB,EAC3D,CA+DO,SAAS44mB,GACd78mB,EACAu3H,GAEA,MAAMnyF,EAAoC,kBAApBplC,EAAWuoB,KAAoB8zlB,GAAWr8mB,EAAWuoB,KAAMgvG,GAAev3H,EAAWuoB,KAE3G,MAAO,CACL45J,GAAkB,CAChB3sL,KAAM,aACNhO,OAAQ49C,EAAO59C,OACfkrnB,SAAU1ymB,EAAW0ymB,SACrBoK,aAAc98mB,EAAWyoB,YACzBs0lB,gBAAiB/8mB,EAAWg9mB,iBAE9B53kB,EAEJ,CAEA,MAAM63kB,GAAyE,CAC7ExnkB,QAAS,UACTynkB,SAAU,UACVl9mB,WAAY,aACZyjL,YAAa,cACb5sF,MAAO,QACPsmhB,cAAe,WACfC,YAAa,UACb3lI,QAAS,UACT4lI,aAAc,SACdC,iBAAkB,SAClBC,SAAU,UACV9lE,SAAU,WACV10X,KAAM,OACNy6b,OAAQ,iBAMH,SAASC,GAA+BjonB,GAC7C,OAAOynnB,GAA+BznnB,EACxC,CAGO,SAASkonB,GAAgCC,GAC9C,IAAKA,IAAoBA,EAAgBvJ,IACvC,OAEF,MAAM,KAAEpumB,EAAI,QAAE1e,GAAYq2nB,EAAgBvJ,IAC1C,MAAO,CAAEpumB,OAAM1e,UACjB,CClOO,MAAMs2nB,WAAoBv4nB,MAMxBnI,WAAAA,CAAmB2rC,GAAkD,IAAjCg1lB,EAAQt2nB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAiB,OAClEwhC,MAAMF,GAAQ,KAAAA,QAAAA,EAEd7rC,KAAKgpB,gBAAkB24I,UAAUzhK,YAAY8oB,KAI7CzoB,OAAOqsP,eAAe5sP,gBAAiB2hK,WACvC3hK,KAAK6goB,SAAWA,CACpB,ECZA,SAASC,GAAmBzC,GAC1B,MAAM/3Q,EAAW+3Q,EAAI/3Q,SAAW,GAAC+3Q,EAAA/3Q,YAAA,GACA+uB,EAAAgpP,EAAAhpP,KAAA,IAAAgpP,EAAAhpP,OAAA,GACA,SAAA/uB,MAAA+3Q,EAAAl+nB,OAAAk1Y,IAAAgpP,EAAAx2nB,KAAA,IAAAw2nB,EAAAx2nB,OAAA,SACA,CAQA,SAAAk5nB,GAAA1C,EAAA2C,GACA,O9BuET3ib,E8BvES,CAGA4ib,WAAA5C,EAAA9jlB,UACA2mlB,eApBR,OAqBQF,GAAA,CAAAG,cAAA,GAAAH,EAAAh4mB,QAAAg4mB,EAAA12nB,Y9BmE1B/J,OAAOC,KAAK69M,GAChB59M,KAAIyiB,GAAO,GAAC1gB,mBAAA0gB,MAAA1gB,mBAAA67M,EAAAn7L,QACAN,KAAA,KAHV,IAAmBy7L,C8BhES,CAOA,SAAA+ib,GACA/C,GAIA,IADAgD,EAAA92nB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,MAMA,MAAA+2nB,EAAA,kBAAAD,EAAAA,EAAAA,EAAAC,OACAN,EACA,kBAAAK,GAAAA,EAAAtlb,UAAAslb,EAAAtlb,UAAAq7a,SAAAz1nB,EAEA,OAAA2/nB,GAAA,GAlCA,SAAAjD,GACA,SAAAyC,GAAAzC,KAAAA,EAAAC,qBACA,CAgCAiD,CAAAlD,MAAA0C,GAAA1C,EAAA2C,IACA,CFU5B,SAASQ,GACd3nhB,EACAwkhB,EACAltb,EACAmwb,GAEA,MAAMN,EAAUN,GAAgCvvb,GAS1Cswb,EAAY5nhB,EAAMrhG,MAAuB,iBAAfqhG,EAAMrhG,KAA0BqhG,EAAMrhG,KAAO,SAlD/E,SAAiCqhG,EAAcmnhB,GACxCA,IAGLnnhB,EAAMu9gB,IAAMv9gB,EAAMu9gB,KAAO,GACzBv9gB,EAAMu9gB,IAAIpumB,KAAO6wF,EAAMu9gB,IAAIpumB,MAAQg4mB,EAAQh4mB,KAC3C6wF,EAAMu9gB,IAAI9snB,QAAUuvG,EAAMu9gB,IAAI9snB,SAAW02nB,EAAQ12nB,QACjDuvG,EAAMu9gB,IAAI11b,aAAe,IAAK7nF,EAAMu9gB,IAAI11b,cAAgB,MAASs/b,EAAQt/b,cAAgB,IACzF7nF,EAAMu9gB,IAAIxif,SAAW,IAAK/6B,EAAMu9gB,IAAIxif,UAAY,MAASosf,EAAQpsf,UAAY,IAE/E,CA0CE8sf,CAAwB7nhB,EAAOs3F,GAAYA,EAASimb,KAEpD,MAAMuK,EA8JD,SACL9nhB,EACAmnhB,EACAM,EACAjD,GAEA,MAAMt3b,EAAyBltF,EAAMosF,uBAAyBpsF,EAAMosF,sBAAsBc,uBAC1F,MAAO,CACLiF,SAAUnyF,EAAMmyF,SAChB41b,SAAS,IAAIvgoB,MAAO+jM,iBAChB47b,GAAW,CAAE5J,IAAK4J,QAChBM,GAAUjD,GAAO,CAAEA,IAAKD,GAAYC,OACtCt3b,GAA0B,CAC5BJ,MAAOxB,GAAkB,IAAK4B,KAGpC,CA9K0B86b,CAA2BhohB,EAAOmnhB,EAASM,EAAQjD,UAMpExkhB,EAAMosF,sBAGb,OAAO64b,GAA8B6C,EAAiB,CADzB,CAAC,CAAEnpnB,KAAMipnB,GAAa5nhB,IAErD,CGhFO,SAASiohB,GACdC,EACA1D,EACAltb,EACAmwb,GAEA,MAAMzhoB,EAA6B,CACjC+hoB,SAAS,IAAIvgoB,MAAO+jM,eAGlB+L,GAAYA,EAASimb,MACvBv3nB,EAAQu3nB,IAAM,CACZpumB,KAAMmoL,EAASimb,IAAIpumB,KACnB1e,QAAS6mM,EAASimb,IAAI9snB,UAIpBg3nB,GAAUjD,IACdx+nB,EAAQw+nB,IAAMD,GAAYC,IAG5B,MAAMnijB,EAIR,SAAkC6ljB,GAChC,MAAMxnkB,ECYE,SAAAwnkB,GACA,IAAAjnf,EAAA,GACA,UAAA5+D,KAAA6ljB,EAAA,CACA,MAAAC,EAAAzhoB,OAAAgwD,QAAA2rB,EAAA1hC,MACAynlB,EAAAD,EAAAx3nB,OAAA,OAAAw3nB,EAAAvhoB,KAAA+vD,IAAA,IAAAttC,EAAAqO,GAAAi/B,EAAA,SAAAttC,KAAAqO,GAAA,IAAA3O,KAAA,UACAk4H,GAAA,GAAA5+D,EAAAlzD,QAAAkzD,EAAAsnC,QAAAtnC,EAAAgmjB,UAAAhmjB,EAAAimjB,aAAAF,MAAA/ljB,EAAA8qE,aACA,CACA,OAAAlM,CACA,CDpBQsnf,CAAuBL,GAKvC,MAAO,CAJ8B,CACnCvpnB,KAAM,SACNhO,OAAQ+vD,EAAQ/vD,QAEK+vD,EACzB,CAXe8nkB,CAAyBN,GACtC,OAAOjD,GAA+Bj/nB,EAAS,CAACq8E,GAClD,CEiCA,MAAMomjB,GAAqB,8DAiCX,MAAMC,GAsCVrioB,WAAAA,CAAY+2E,GAepB,GAdAj3E,KAAKwmO,SAAWvvJ,EAChBj3E,KAAKwioB,cAAgB,CAAC,EACtBxioB,KAAKyioB,0BAA2B,EAChCzioB,KAAK0ioB,eAAiB,EACtB1ioB,KAAK2ioB,UAAY,CAAC,EAClB3ioB,KAAK4ioB,OAAS,CAAC,EACf5ioB,KAAK2nM,iBAAmB,GAEpB1wH,EAAQonjB,IACVr+nB,KAAK6ioB,KAAOrE,GAAQvnjB,EAAQonjB,KAE5Bx8b,IAAe2C,GAAOj2J,KAAK,iDAGzBvuC,KAAK6ioB,KAAM,CACb,MAAMj3lB,EAAMw1lB,GAAsCphoB,KAAK6ioB,KAAM5rjB,GAC7Dj3E,KAAK8ioB,WAAa7rjB,EAAQ8rjB,UAAU,CAClCzB,OAAQthoB,KAAKwmO,SAAS86Z,OACtBzkb,mBAAoB78M,KAAK68M,mBAAmBn0H,KAAK1oF,SAC9Ci3E,EAAQ+rjB,iBACXp3lB,OAER,CACA,CAMSigK,gBAAAA,CAAiBC,EAAgBxH,EAAkBnC,GAExD,GAAIwyb,GAAwB7ob,GAE1B,YADAjK,IAAe2C,GAAOlnI,IAAIglkB,KAI5B,IAAIv2b,EAA8BzH,GAAQA,EAAK0H,SAU/C,OARAhsM,KAAKijoB,SACHjjoB,KAAKkjoB,mBAAmBp3b,EAAWxH,GAChCziM,MAAKg4G,GAAS75G,KAAKmjoB,cAActphB,EAAOyqF,EAAMnC,KAC9CtgM,MAAK88D,IACJotI,EAAUptI,CAAM,KAIfotI,CACX,CAKSI,cAAAA,CACLtgK,EAEA0oC,EACA+vH,EACAnC,GAEA,IAAI4J,EAA8BzH,GAAQA,EAAK0H,SAE/C,MAAMo3b,EAAepR,GAAsBnmlB,GAAWA,EAAUlpC,OAAOkpC,GAEjEw3lB,EAAgBpR,GAAYpmlB,GAC9B7rC,KAAKsjoB,iBAAiBF,EAAc7ujB,EAAO+vH,GAC3CtkM,KAAKkjoB,mBAAmBr3lB,EAASy4J,GAUrC,OARAtkM,KAAKijoB,SACHI,EACGxhoB,MAAKg4G,GAAS75G,KAAKmjoB,cAActphB,EAAOyqF,EAAMnC,KAC9CtgM,MAAK88D,IACJotI,EAAUptI,CAAM,KAIfotI,CACX,CAKSK,YAAAA,CAAavyF,EAAcyqF,EAAkBnC,GAElD,GAAImC,GAAQA,EAAK4H,mBAAqByob,GAAwBrwb,EAAK4H,mBAEjE,YADArK,IAAe2C,GAAOlnI,IAAIglkB,KAI5B,IAAIv2b,EAA8BzH,GAAQA,EAAK0H,SAE/C,MACMgR,GADwBnjG,EAAMosF,uBAAyB,CAAC,GACK+W,kBAQnE,OANAh9M,KAAKijoB,SACHjjoB,KAAKmjoB,cAActphB,EAAOyqF,EAAM0Y,GAAqB7a,GAAOtgM,MAAK88D,IAC/DotI,EAAUptI,CAAM,KAIbotI,CACX,CAKS6C,cAAAA,CAAen2I,GACa,kBAApBA,EAAQmhB,QACnBioH,IAAe2C,GAAOj2J,KAAK,+DAE3BvuC,KAAKujoB,YAAY9qkB,GAEjBotI,GAAcptI,EAAS,CAAE3rB,MAAM,IAErC,CAKS6jK,MAAAA,GACL,OAAO3wM,KAAK6ioB,IAChB,CAKSh1b,UAAAA,GACL,OAAO7tM,KAAKwmO,QAChB,CAOSg9Z,cAAAA,GACL,OAAOxjoB,KAAKwmO,SAASzqB,SACzB,CAKS0nb,YAAAA,GACL,OAAOzjoB,KAAK8ioB,UAChB,CAKS57W,KAAAA,CAAMt6O,GACX,MAAMm2lB,EAAY/ioB,KAAK8ioB,WACvB,OAAIC,GACE/ioB,KAAK0joB,mBACP1joB,KAAK0joB,kBAAkBx8W,QAElBlnR,KAAK2joB,wBAAwB/2lB,GAAS/qC,MAAK+hoB,GACzCb,EAAU77W,MAAMt6O,GAAS/qC,MAAKgioB,GAAoBD,GAAkBC,OAGtEhP,IAAoB,EAEjC,CAKS97kB,KAAAA,CAAMnM,GACX,OAAO5sC,KAAKknR,MAAMt6O,GAAS/qC,MAAK88D,IAC9B3+D,KAAK6tM,aAAamS,SAAU,EACxBhgN,KAAK0joB,mBACP1joB,KAAK0joB,kBAAkB3qlB,QAElB4lB,IAEb,CAGS45jB,kBAAAA,GACL,OAAOv4nB,KAAK2nM,gBAChB,CAGSqB,iBAAAA,CAAkB86b,GACvB9joB,KAAK2nM,iBAAiBjpI,KAAKolkB,EAC/B,CAMS12b,iBAAAA,CAAkB22b,IAClBA,IAAoB/joB,KAAKyioB,0BAA8BzioB,KAAKgkoB,eAAiBhkoB,KAAKyioB,2BACrFzioB,KAAKikoB,oBAEX,CAGSn3lB,IAAAA,GACD9sC,KAAKgkoB,cACPhkoB,KAAKikoB,oBAEX,CAQSC,kBAAAA,CAAmBC,GACxB,OAAOnkoB,KAAKokoB,qBAAqBD,EACrC,CAOSC,oBAAAA,CAA0DC,GAC/D,OAAOrkoB,KAAKwioB,cAAc6B,EAC9B,CAMSh2b,cAAAA,CAAsCC,GAC3C,IACE,OAAQtuM,KAAKwioB,cAAcl0b,EAAY7kM,KAAa,IAC1D,CAAM,MAAO8kM,GAEP,OADA1M,IAAe2C,GAAOj2J,KAAK,+BAA+B+/J,EAAY7kM,8BAC/D,IACb,CACA,CAKS66nB,cAAAA,CAAeh2b,GACpB,MAAMi2b,EAAqBvkoB,KAAKwioB,cAAcl0b,EAAYtlL,MAG1DyxmB,GAAiBz6nB,KAAMsuM,EAAatuM,KAAKwioB,eAEpC+B,GACHhK,GAAuBv6nB,KAAM,CAACsuM,GAEpC,CAKSk2b,SAAAA,CAAU3qhB,GAA0C,IAA5ByqF,EAAI/5L,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAc,CAAC,EAChDvK,KAAKguM,KAAK,kBAAmBn0F,EAAOyqF,GAEpC,IAAIguJ,EAAMkvS,GAAoB3nhB,EAAO75G,KAAK6ioB,KAAM7ioB,KAAKwmO,SAASzqB,UAAW/7M,KAAKwmO,SAAS86Z,QAEvF,IAAK,MAAMt+mB,KAAcshL,EAAK+G,aAAe,GAC3CinJ,EAAMysS,GACJzsS,EACAutS,GACE78mB,EACAhjB,KAAKwmO,SAASw8Z,kBAAoBhjoB,KAAKwmO,SAASw8Z,iBAAiBzof,cAKvE,MAAMy6M,EAAUh1V,KAAKykoB,cAAcnyS,GAC/B0C,GACFA,EAAQnzV,MAAK6ioB,GAAgB1koB,KAAKguM,KAAK,iBAAkBn0F,EAAO6qhB,IAAe,KAErF,CAKSnB,WAAAA,CAAY9qkB,GACjB,MAAM65R,ELvXH,SACL75R,EACA4lkB,EACAltb,EACAmwb,GAEA,MAAMN,EAAUN,GAAgCvvb,GAUhD,OAAO2tb,GATiB,CACtB8C,SAAS,IAAIvgoB,MAAO+jM,iBAChB47b,GAAW,CAAE5J,IAAK4J,QAChBM,GAAUjD,GAAO,CAAEA,IAAKD,GAAYC,KAMY,CAFtD,eAAgB5lkB,EAAU,CAAC,CAAEjgD,KAAM,YAAcigD,GAAW,CAAC,CAAEjgD,KAAM,WAAaigD,EAAQ41B,WAG9F,CKsWgBs2iB,CAAsBlskB,EAASz4D,KAAK6ioB,KAAM7ioB,KAAKwmO,SAASzqB,UAAW/7M,KAAKwmO,SAAS86Z,QAI7FthoB,KAAKykoB,cAAcnyS,EACvB,CAKSz1I,kBAAAA,CAAmBnjJ,EAAyBkrkB,EAAwBC,GACzE,GAAI7koB,KAAKwmO,SAASs+Z,kBAAmB,CAGnC,MAAMzgf,EAAgC,kBAAjBwgf,EAA4BA,EAAe,EAQ1D3hnB,EAAM,GAACw2C,KAAAkrkB,IACA/ic,IAAA2C,GAAAlnI,IAAA,uBAAAp6C,KAAAmhI,EAAA,OAAAA,WAAA,MACA,KAAAs+e,UAAAz/mB,IAAA,KAAAy/mB,UAAAz/mB,IAAA,GAAAmhI,CACA,CACA,CAKA0gf,uBAAAA,CAAAhD,GACAlgc,IAAA2C,GAAAlnI,IAAA,mDAAAykkB,EAAAv3nB,UACA,MAAAw6nB,EAAAlD,GACAC,EACA,KAAAc,KACA,KAAAr8Z,SAAAzqB,UACA,KAAAyqB,SAAA86Z,QAKA,KAAAmD,cAAAO,EACA,CAgDAn7gB,EAAAA,CAAAo7gB,EAAAhslB,GACA,KAAA2plB,OAAAqC,KACA,KAAArC,OAAAqC,GAAA,IAIA,KAAArC,OAAAqC,GAAAvmkB,KAAAzlB,EACA,CAuCA+0J,IAAAA,CAAAi3b,GAAA,QAAA5sf,EAAA9tI,UAAAC,OAAA03L,EAAA,IAAAh7K,MAAAmxH,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAA2pD,EAAA3pD,EAAA,GAAAhuI,UAAAguI,GACA,KAAAqqf,OAAAqC,IACA,KAAArC,OAAAqC,GAAA9tjB,SAAAl+B,GAAAA,KAAAipJ,IAEA,CAKA+hc,kBAAAA,GACA,mBAAAvic,GAAA,KAAA8kC,SACA,KAAAg8Z,cd9cZ,SAA2B15b,EAAgBpH,GAChD,MAAMg5b,EAAqC,CAAC,EAS5C,OAPAh5b,EAAavqH,SAAQm3H,IAEfA,GACFmsb,GAAiB3xb,EAAQwF,EAAaosb,EAC5C,IAGSA,CACT,CcmcmBttb,CAAA,KAAA1L,GACA64b,GAAA,KAAA74b,GAGA,KAAA+gc,0BAAA,CACA,CAGAyC,uBAAAA,CAAAzskB,EAAAohD,GACA,IAAAsrhB,GAAA,EACAC,GAAA,EACA,MAAAC,EAAAxrhB,EAAAiyF,WAAAjyF,EAAAiyF,UAAArgI,OAEA,GAAA45jB,EAAA,CACAD,GAAA,EAEA,UAAAn+iB,KAAAo+iB,EAAA,CACA,MAAA5Q,EAAAxtiB,EAAAwtiB,UACA,GAAAA,IAAA,IAAAA,EAAAC,QAAA,CACAyQ,GAAA,EACA,KACA,CACA,CACA,CAKA,MAAAG,EAAA,OAAA7skB,EAAAxkC,QACAqxmB,GAAA,IAAA7skB,EAAAwsI,QAAAqgc,GAAAH,KAGAt/b,GAAAptI,EAAA,IACA0skB,GAAI,CAAJlxmB,OAAA,WACAgxK,OAAAxsI,EAAAwsI,QAAAp4J,OAAAu4lB,GAAAD,KAEA,KAAAv2b,eAAAn2I,GAEA,CAYAkrkB,uBAAAA,CAAA/2lB,GACA,WAAA61J,IAAA1iM,IACA,IAAAwloB,EAAA,EACA,MAEA5pa,EAAA4wI,aAAA,KACA,QAAAm2R,gBACA90B,cAAAjyY,GACA57N,GAAA,KAEAwloB,GAPA,EAQA34lB,GAAA24lB,GAAA34lB,IACAghkB,cAAAjyY,GACA57N,GAAC,IAED,GAZA,EAaA,GAEA,CAGAikoB,UAAAA,GACA,gBAAAn2b,aAAAmS,cAAAr+M,IAAA,KAAAmhoB,UACA,CAgBA0C,aAAAA,CACA3rhB,EACAyqF,EACAnC,GAEA,IADAwK,EAAApiM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAAkjM,KAEA,MAAAx2H,EAAA,KAAA42H,aACAnM,EAAAnhM,OAAAC,KAAA,KAAAgioB,eAOA,OANAl+b,EAAA5C,cAAAA,EAAAl3L,OAAA,IACA85L,EAAA5C,aAAAA,GAGA,KAAAsM,KAAA,kBAAAn0F,EAAAyqF,GAEAuyb,GAAA5/iB,EAAA4iC,EAAAyqF,EAAAnC,EAAA,KAAAwK,GAAA9qM,MAAA82nB,IACA,UAAAA,EACA,OAAAA,EAGA,MAAAnub,EAAA,IACAmC,EAAAf,2BACAzJ,EAAAA,EAAAyJ,6BAAAjqM,GAIA,KADAg3nB,EAAAxyb,UAAAwyb,EAAAxyb,SAAAQ,QACA6D,EAAA,CACA,MAAA6B,QAAAoE,EAAA,OAAAnE,EAAA,aAAA8L,EAAA,IAAAvH,GAAArG,EACAmub,EAAAxyb,SAAA,CACAQ,MAAA,CACA8J,WACA0J,QAAA7N,EACA4N,eAAA9B,MAEAugb,EAAAxyb,UAGA,MAAAY,EAAA8J,GAAAL,GAAAC,EAAA,KAAAtO,GAEAw2b,EAAA1yb,sBAAA,CACAc,4BACA4xb,EAAA1yb,sBAEA,CACA,OAAA0yb,CAAA,GAEA,CAQAwK,aAAAA,CAAAtphB,GAAA,IAAAyqF,EAAA/5L,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,MAAA43L,EAAA53L,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EACA,YAAA8joB,cAAA5rhB,EAAAyqF,EAAAnC,GAAAtgM,MACA6joB,GACAA,EAAA15b,WAEAtyI,IACA,GAAAmoI,GAAA,CAGA,MAAA8jc,EAAAjskB,EACA,QAAAiskB,EAAA9E,SACAr8b,GAAAlnI,IAAAqokB,EAAA95lB,SAEA24J,GAAAj2J,KAAAo3lB,EAEA,CACA,GAGA,CAeAF,aAAAA,CAAA5rhB,EAAAyqF,EAAAnC,GACA,MAAAlrH,EAAA,KAAA42H,cACA,WAAAoD,GAAAh6H,EAEA2ujB,EAAAC,GAAAhshB,GACAiuK,EAAAgqW,GAAAj4gB,GACA4nhB,EAAA5nhB,EAAArhG,MAAA,QACAstnB,EAAA,0BAAArE,MAKA,GAAA35W,GAAA,kBAAA72E,GAAA3pJ,KAAA+lC,SAAA4jH,EAEA,OADA,KAAA4L,mBAAA,sBAAAhjG,GACAi7gB,GACA,IAAA8L,GACA,oFAAA3vb,KACA,QAKA,MAAA80b,EAAA,iBAAAtE,EAAA,SAAAA,EAGAxkb,GADApjG,EAAAosF,uBAAA,IACAgX,2BAEA,YAAAuob,cAAA3rhB,EAAAyqF,EAAAnC,EAAA8a,GACAp7M,MAAAswX,IACA,UAAAA,EAEA,MADA,KAAAt1K,mBAAA,kBAAAkpb,EAAAlshB,GACA,IAAA+mhB,GAAA,kEAIA,GADAt8b,EAAA/4J,OAAA,IAAA+4J,EAAA/4J,KAAAy6lB,WAEA,OAAA7zQ,EAGA,MAAAxzT,EA8JA,SACAsY,EACA4iC,EACAyqF,GAEA,iBAAA2hc,EAAA,sBAAAC,GAAAjvjB,EAEA,GAAA66iB,GAAAj4gB,IAAAoshB,EACA,OAAAA,EAAApshB,EAAAyqF,GAGA,GAAAuhc,GAAAhshB,IAAAqshB,EAAA,CACA,GAAArshB,EAAAm8F,MAAE,CAGF,MAAAmwb,EAAAtshB,EAAAm8F,MAAAxrM,OACAqvG,EAAAosF,sBAAA,IACApsF,EAAAosF,sBACAmgc,0BAAAD,EAEA,CACA,OAAAD,EAAArshB,EAAAyqF,EACA,CAEA,OAAAzqF,CACA,CAvLAwshB,CAAApvjB,EAAAk7S,EAAA7tL,GACA,OAmIA,SACAgic,EACAR,GAEA,MAAAS,EAAA,GAAAT,2CACA,GAAAhic,GAAAwic,GACA,OAAAA,EAAAzkoB,MACAg4G,IACA,IAAA4wF,GAAA5wF,IAAA,OAAAA,EACA,UAAA+mhB,GAAA2F,GAEA,OAAA1shB,CAAA,IAEA54G,IACA,UAAA2/nB,GAAA,GAAAkF,mBAAA7koB,IAAA,IAGA,IAAAwpM,GAAA67b,IAAA,OAAAA,EACA,UAAA1F,GAAA2F,GAEA,OAAAD,CACA,CAxJAE,CAAA7nkB,EAAAmnkB,EAAA,IAEAjkoB,MAAA4koB,IACA,UAAAA,EAAA,CAEA,GADA,KAAA5pb,mBAAA,cAAAkpb,EAAAlshB,GACA+rhB,EAAA,CACA,MAEAc,EAAA,GAFA7shB,EAAAm8F,OAAA,IAEAxrM,OACA,KAAAqyM,mBAAA,qBAAA6pb,EACA,CACA,UAAA9F,GAAA,GAAAkF,4CAAA,MACA,CAEA,MAAArtkB,EAAA0pI,GAAAA,EAAAgI,aAKA,IAJAy7b,GAAAntkB,GACA,KAAAyskB,wBAAAzskB,EAAAgukB,GAGAb,EAAA,CACA,MAKAe,GAJAF,EAAAxgc,uBAAAwgc,EAAAxgc,sBAAAmgc,2BACA,IACAK,EAAAzwb,MAAAywb,EAAAzwb,MAAAxrM,OAAA,GAGAm8nB,EAAA,GACA,KAAA9pb,mBAAA,qBAAA8pb,EAEA,CAKA,MAAAC,EAAAH,EAAAvpb,iBACA,GAAA0ob,GAAAgB,GAAAH,EAAAhgc,cAAA5sF,EAAA4sF,YAAA,CACA,MAAAnnG,EAAA,SACAmniB,EAAAvpb,iBAAA,IACA0pb,EACAtniB,SAEA,CAGA,OADA,KAAAkliB,UAAAiC,EAAAnic,GACAmic,CAAA,IAEA5koB,KAAA,MAAA63D,IACA,GAAAA,aAAAknkB,GACA,MAAAlnkB,EASA,MANA,KAAAmyI,iBAAAnyI,EAAA,CACAnuB,KAAA,CACAy6lB,YAAA,GAEA95b,kBAAAxyI,IAEA,IAAAknkB,GACA,8HAAAlnkB,IACA,GAEA,CAKAupkB,QAAAA,CAAAjuS,GACA,KAAA0tS,iBACA1tS,EAAAnzV,MACA0vB,IACA,KAAAmxmB,iBACAnxmB,KAEAmoC,IACA,KAAAgpkB,iBACAhpkB,IAGA,CAKA+qkB,aAAAA,CAAAzF,GAGA,GAFA,KAAAhxb,KAAA,iBAAAgxb,GAEA,KAAAgF,cAAA,KAAAlB,WACA,YAAAA,WAAAtphB,KAAAwlhB,GAAAn9nB,KAAA,MAAA63D,IACAmoI,IAAA2C,GAAAn2J,MAAA,6BAAAqrB,EAAA,IAGAmoI,IAAA2C,GAAAn2J,MAAA,qBAEA,CAKAw4lB,cAAAA,GACA,MAAAC,EAAA,KAAAnE,UAEA,OADA,KAAAA,UAAA,GACApioB,OAAAC,KAAAsmoB,GAAArmoB,KAAAyiB,IACA,MAAAw2C,EAAAkrkB,GAAA1hnB,EAAAo3C,MAAA,KACA,OACAZ,SACAkrkB,WACAn8gB,SAAAq+gB,EAAA5jnB,GACA,GAEA,EA2EA,SAAA4umB,GAAAj4gB,GACA,YAAAl4G,IAAAk4G,EAAArhG,IACA,CAEA,SAAAqtnB,GAAAhshB,GACA,MAAK,gBAALA,EAAArhG,IACA,CCr7BZ,SAASuunB,GAAiB9vjB,EAAkBjuD,GAAoD,IAAtC2/H,EAAAp+I,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAQ,CAACye,GAAOs2E,EAAA/0F,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAS,MACxF,MAAM4mM,EAAWl6H,EAAQ8kI,WAAa,CAAC,EAElC5K,EAASimb,MACZjmb,EAASimb,IAAM,CACbpumB,KAAM,qBAAqBA,IACK4rH,SAAA+T,EAAAloJ,KAAAuoB,IAAA,CACAA,KAAA,GAAAs2E,aAAAt2E,IACA1e,QAAAovnB,OAEApvnB,QAAAovnB,KAIAzijB,EAAA8kI,UAAA5K,CACA,CCxB/B,MAAMtP,GAAc,qBAAAC,kBAAAA,iBCwBpB,SAASklc,GAAmB1P,EAA0BrwiB,GAE3D,MAAMouiB,EAAS4R,GAAiB3P,EAAarwiB,GAEvC6kH,EAAuB,CAC3BtzL,KAAMyuE,GAAMA,EAAGj+D,KACfuI,MAAO21mB,GAAejgjB,IAWxB,OARIouiB,EAAO7qnB,SACTshM,EAAUmsb,WAAa,CAAE5C,gBAGJ1znB,IAAnBmqM,EAAUtzL,MAA0C,KAApBszL,EAAUv6K,QAC5Cu6K,EAAUv6K,MAAQ,8BAGbu6K,CACT,CA0CO,SAASq7b,GAAe7P,EAA0BrwiB,GACvD,MAAO,CACL6kH,UAAW,CACTrgI,OAAQ,CAACu7jB,GAAmB1P,EAAarwiB,KAG/C,CAGO,SAASggjB,GACd3P,EACArwiB,GAKA,MAAMgxiB,EAAahxiB,EAAGgxiB,YAAchxiB,EAAGmqI,OAAS,GAE1Cg2a,EAcR,SAAoBngjB,GAClB,GAAIA,EAAI,CACN,GAA8B,kBAAnBA,EAAGyxT,YACZ,OAAOzxT,EAAGyxT,YAGZ,GAAI2uP,GAAoB/hjB,KAAK2B,EAAGp7C,SAC9B,OAAO,CAEb,CAEE,OAAO,CACT,CA1BkBy7lB,CAAWrgjB,GAE3B,IACE,OAAOqwiB,EAAYW,EAAYmP,EACnC,CAAI,MAAOnmoB,IACX,CAGE,MAAO,EACT,CAGA,MAAMomoB,GAAsB,8BAqB5B,SAASH,GAAejgjB,GACtB,MAAMp7C,EAAUo7C,GAAMA,EAAGp7C,QACzB,OAAKA,EAGDA,EAAQwC,OAA0C,kBAA1BxC,EAAQwC,MAAMxC,QACjCA,EAAQwC,MAAMxC,QAEhBA,EALE,kBAMX,CA8CO,SAAS07lB,GACdjQ,EACAxrb,EACAG,EACAu7b,EACAC,GAEA,IAAI5thB,EAEJ,GAAIi4gB,GAAahmb,IAA6BA,EAAyBz9J,MAAO,CAG5E,OAAO84lB,GAAe7P,EADHxrb,EAC2Bz9J,MAClD,CASE,GAAI0jlB,GAAWjmb,IvCzJRwT,GuCyJqCxT,EvCzJtB,gBuCyJkD,CACtE,MAAM47b,EAAe57b,EAErB,GAAI,UAAYA,EACdjyF,EAAQsthB,GAAe7P,EAAaxrb,OAC/B,CACL,MAAM9iL,EAAO0+mB,EAAa1+mB,OAAS+omB,GAAW2V,GAAgB,WAAa,gBACrE77lB,EAAU67lB,EAAa77lB,QAAU,GAAC7iB,MAAA0+mB,EAAA77lB,UAAA7iB,EACA6wF,EAAA8thB,GAAArQ,EAAAzrlB,EAAAogK,EAAAu7b,GACAnT,GAAAx6gB,EAAAhuE,EACA,CAMA,MALA,SAAA67lB,IAEA7thB,EAAAr/D,KAAA,IAAAq/D,EAAAr/D,KAAA,uBAAAktlB,EAAAhvnB,SAGAmhG,CACA,CACA,GAAAiuK,GAAAh8E,GAEA,OAAAq7b,GAAA7P,EAAAxrb,GAEA,GAAArB,GAAAqB,IAAAomb,GAAApmb,GAAA,CASA,OAJAjyF,EAhMvC,SACLy9gB,EACAxrb,EACAG,EACAw7b,GAEA,MAAM3+b,EAASzG,KACTy0b,EAAiBhub,GAAUA,EAAO+E,aAAaipb,eAE/Cj9gB,EAAe,CACnBiyF,UAAW,CACTrgI,OAAQ,CACN,CACEjzD,KAAM05mB,GAAQpmb,GAAaA,EAAU5rM,YAAY8oB,KAAOy+mB,EAAuB,qBAAuB,QACtGl2mB,MAAOq2mB,GAAgC97b,EAAW,CAAE27b,4BAI1Dvhc,MAAO,CACL2hc,eAAgBhS,GAAgB/pb,EAAWgrb,KAI/C,GAAI7qb,EAAoB,CACtB,MAAMopb,EAAS4R,GAAiB3P,EAAarrb,GACzCopb,EAAO7qnB,SAERqvG,EAAMiyF,UAAsCrgI,OAAO,GAAGwsjB,WAAa,CAAE5C,UAE5E,CAEE,OAAOx7gB,CACT,CAgK8CiuhB,CAAAxQ,EADAxrb,EACAG,EAAAw7b,GACAnT,GAAAz6gB,EAAA,CACAkuhB,WAAA,IAEAluhB,CACA,CAiBA,OANAA,EAAA8thB,GAAArQ,EAAAxrb,EAAAG,EAAAu7b,GACAnT,GAAAx6gB,EAAA,GAAAiyF,SAAAnqM,GACA2ynB,GAAAz6gB,EAAA,CACAkuhB,WAAA,IAGAluhB,CACA,CAKA,SAAA8thB,GACArQ,EACAzrlB,EACAogK,EACAu7b,GAEA,MAAA3thB,EAAA,GAEA,GAAA2thB,GAAAv7b,EAAA,CACA,MAAAopb,EAAA4R,GAAA3P,EAAArrb,GACAopb,EAAA7qnB,SACAqvG,EAAAiyF,UAAA,CACArgI,OAAA,EAAAl6C,MAAAsa,EAAAoslB,WAAA,CAAA5C,aAGA,CAEA,GAAArD,GAAAnmlB,GAAA,CACA,iCAAAm8lB,EAAA,2BAAAC,GAAAp8lB,EAMA,OAJAguE,EAAAquhB,SAAA,CACAr8lB,QAAAm8lB,EACApzkB,OAAAqzkB,GAEApuhB,CACA,CAGA,OADAA,EAAAhuE,QAAAA,EACAguE,CACA,CAEA,SAAA+thB,GACA97b,EAAAt7I,GAEA,IADA,qBAAAi3kB,GAAAj3kB,EAEA,MAAAhwD,EpChI7B,SAAAsrM,GAAA,IAAA5mD,EAAA36I,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,MACA,MAAA/J,EAAAD,OAAAC,KAAAqznB,GAAA/nb,IAGA,GAFAtrM,EAAA2X,QAEA3X,EAAAgK,OACA,6BAGA,GAAAhK,EAAA,GAAAgK,QAAA06I,EACA,OAAA2iE,GAAArnN,EAAA,GAAA0kJ,GAGA,QAAAijf,EAAA3noB,EAAAgK,OAAA29nB,EAAA,EAAAA,IAAA,CACA,MAAAv8O,EAAAprZ,EAAA8nD,MAAA,EAAA6/kB,GAAAvlnB,KAAA,MACA,KAAAgpY,EAAAphZ,OAAA06I,GAGA,OAAAijf,IAAA3noB,EAAAgK,OACAohZ,EAEA/jM,GAAA+jM,EAAA1mQ,EACA,CAEA,QACA,CoCwG6Bkjf,CAAAt8b,GACAu8b,EAAAZ,EAAA,gCAIA,GAAA3V,GAAAhmb,GACA,0CAAAu8b,oBAAAv8b,EAAAjgK,YAGA,GAAAqmlB,GAAApmb,GAAA,CAEA,iBAMA,SAAA/iI,GACA,IACA,MAAA44F,EAAAphK,OAAAghN,eAAAx4I,GACA,OAAA44F,EAAAA,EAAAzhK,YAAA8oB,UAAArnB,CACA,OAAAV,IACA,CAEA,CAdAqnoB,CAAAx8b,cACAA,EAAAtzL,qBAAA6vnB,GACA,CAEA,4BAAAA,gBAAA7noB,GACA,CCvTvC,MAAM+xnB,GAAStjb,GAEtB,IAAIs5b,GAAwB,EAKrB,SAASC,KACd,OAAOD,GAAgB,CACzB,CAsBO,SAASj6W,GACdhnI,GAMK,IALLrwE,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAEH,CAAC,EACLq6G,EACFr6G,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EASE,GAAkB,oBAAP2lJ,EACT,OAAOA,EAGT,IAGE,MAAM23H,EAAU33H,EAAGmhf,mBACnB,GAAIxpX,EACF,MAAuB,oBAAZA,EACFA,EAIA33H,EAKX,GAAIqse,GAAoBrse,GACtB,OAAOA,CAEb,CAAI,MAAOrmJ,IAIP,OAAOqmJ,CACX,CAIE,MAAMohf,EAAiC,WACrC,MAAMpwf,EAAOpxH,MAAMy6I,UAAUr5G,MAAMqrD,KAAKppG,WAExC,IACMq6G,GAA4B,oBAAXA,GACnBA,EAAO/8D,MAAM7nD,KAAMuK,WAIrB,MAAMo+nB,EAAmBrwf,EAAK73I,KAAKsmF,GAAaunM,GAAKvnM,EAAK9P,KAM1D,OAAOqwE,EAAGz/F,MAAM7nD,KAAM2ooB,EAC5B,CAAM,MAAO1hjB,GAqBP,MAlGJshjB,KACAt7lB,YAAW,KACTs7lB,IAAe,IA8Ebxmc,IAAUI,IxBnET,IAEL2J,EACAxH,EwBiEMnC,EAAM6G,mBAAkBnvF,IAClB5iC,EAAQw9iB,YACVJ,GAAsBx6gB,OAAOl4G,OAAWA,GACxC2ynB,GAAsBz6gB,EAAO5iC,EAAQw9iB,YAGvC56gB,EAAMqsF,MAAQ,IACTrsF,EAAMqsF,MACT37L,UAAW+tI,GAGNz+B,KxB7EfiyF,EwBgFuB7kH,ExB5EhBg7G,KAAgB4J,iBAAiBC,EAAWqtb,GAA+B70b,GwB4ExD,IAGhBr9G,CACZ,CACA,EAKE,IACE,IAAK,MAAMx1D,KAAY61H,EACjB/mJ,OAAOohK,UAAU95C,eAAelU,KAAK2zC,EAAI71H,KAC3Ci3mB,EAAcj3mB,GAAY61H,EAAG71H,GAGrC,CAAI,MAAO88K,GAAM,CAIf0S,GAAoBynb,EAAephf,GAEnCk0D,GAAyBl0D,EAAI,qBAAsBohf,GAGnD,IACqBnooB,OAAO2vN,yBAAyBw4a,EAAe,QACnDvnb,cACb5gN,OAAOgiK,eAAemme,EAAe,OAAQ,CAC3Cv6lB,IAAGA,IACMm5G,EAAGt+H,MAKpB,CAAI,MAAOulL,GAAM,CAEf,OAAOm6b,CACT,CCrHO,MAAME,WAAsBrG,GAM1BrioB,WAAAA,CAAY+2E,GAEjB8vjB,GAAiB9vjB,EAAS,UAAW,CAAC,WADpBs7iB,GAAOsW,mBCnBpB,ODsBL98lB,MAAMkrC,GAEFA,EAAQ6tjB,mBAAqBvS,GAAO7jgB,UACtC6jgB,GAAO7jgB,SAAS1T,iBAAiB,oBAAoB,KACX,WAApCu3gB,GAAO7jgB,SAASq4U,iBAClB/mc,KAAK8ooB,gBACf,GAGA,CAKS5F,kBAAAA,CAAmBp3b,EAAoBxH,GAC5C,OFuFG,SACLgzb,EACAxrb,EACAxH,EACAkjc,GAEA,MACM3thB,EAAQ0thB,GAAsBjQ,EAAaxrb,EADrBxH,GAAQA,EAAK2H,yBAAuBtqM,EACgB6loB,GAMhF,OALAlT,GAAsBz6gB,GACtBA,EAAMtlC,MAAQ,QACV+vH,GAAQA,EAAK0H,WACfnyF,EAAMmyF,SAAW1H,EAAK0H,UAEjB6ob,GAAoBh7gB,EAC7B,CErGWqphB,CAAmBljoB,KAAKwmO,SAAS8wZ,YAAaxrb,EAAWxH,EAAMtkM,KAAKwmO,SAASgha,iBACxF,CAKSlE,gBAAAA,CACLz3lB,GAIoB,IAFpB0oC,EAAKhqE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAA6B,OAClC+5L,EAAI/5L,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EAEJ,OF+FG,SACL21nB,EACAzrlB,GAKoB,IAHpB0oC,EAAKhqE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAA6B,OAClC+5L,EAAI/5L,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EACJ6loB,EAAgBj9nB,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EAEhB,MACMk4G,EAAQ8thB,GAAgBrQ,EAAazrlB,EADfy4J,GAAQA,EAAK2H,yBAAuBtqM,EACQ6loB,GAKxE,OAJA3thB,EAAMtlC,MAAQA,EACV+vH,GAAQA,EAAK0H,WACfnyF,EAAMmyF,SAAW1H,EAAK0H,UAEjB6ob,GAAoBh7gB,EAC7B,CE9GWyphB,CAAiBtjoB,KAAKwmO,SAAS8wZ,YAAazrlB,EAAS0oC,EAAO+vH,EAAMtkM,KAAKwmO,SAASgha,iBAC3F,CAKSuB,mBAAAA,CAAoBtuE,GACzB,IAAKz6jB,KAAKgkoB,aAER,YADAnic,IAAe2C,GAAOj2J,KAAK,qDAI7B,MAAMywlB,EExFH,SACLvkE,EAAQjqgB,GAUO,IATf,SACE2gJ,EAAQ,OACRmwb,EAAM,IACNjD,GACD7tkB,EAMD,MAAM3wD,EAA4B,CAChCmsM,SAAUyuX,EAASzuX,SACnB41b,SAAS,IAAIvgoB,MAAO+jM,iBAChB+L,GACFA,EAASimb,KAAO,CACdA,IAAK,CACHpumB,KAAMmoL,EAASimb,IAAIpumB,KACnB1e,QAAS6mM,EAASimb,IAAI9snB,eAGtBg3nB,KAAYjD,GAAO,CAAEA,IAAKD,GAAYC,KAExCnijB,EAKR,SAAwCu+e,GAItC,MAAO,CAHsC,CAC3CjijB,KAAM,eAEiBiijB,EAC3B,CAVeuuE,CAA+BvuE,GAE5C,OAAOqkE,GAAej/nB,EAAS,CAACq8E,GAClC,CF6DqB+sjB,CAA2BxuE,EAAU,CACpDtpX,SAAUnxM,KAAKwjoB,iBACfnF,IAAKr+nB,KAAK2wM,SACV2wb,OAAQthoB,KAAK6tM,aAAayzb,SAK5BthoB,KAAKykoB,cAAczF,EACvB,CAKYwG,aAAAA,CAAc3rhB,EAAcyqF,EAAiBnC,GAErD,OADAtoF,EAAMw0P,SAAWx0P,EAAMw0P,UAAY,aAC5BtiU,MAAMy5lB,cAAc3rhB,EAAOyqF,EAAMnC,EAC5C,CAKU2mc,cAAAA,GACN,MAAMhC,EAAW9moB,KAAK6moB,iBAEtB,GAAwB,IAApBC,EAASt8nB,OAEX,YADAq3L,IAAe2C,GAAOlnI,IAAI,wBAK5B,IAAKt9D,KAAK6ioB,KAER,YADAhhc,IAAe2C,GAAOlnI,IAAI,4CAI5BukI,IAAe2C,GAAOlnI,IAAI,oBAAqBwpkB,GAE/C,MAAM9H,GGzHRkK,EHyH8CpC,EG9GvChI,IAVPT,EHwHwDr+nB,KAAKwmO,SAAS86Z,QAAUlD,GAAYp+nB,KAAK6ioB,OG9G/C,CAAExE,OAAQ,CAAC,EAAG,CAPrB,CACzC,CAAE7lnB,KAAM,iBACR,CACEwuI,UAAWA,GAAagkD,KACxBk+b,wBATC,IACLA,EACA7K,EACAr3e,EH2HEhnJ,KAAKykoB,cAAczF,EACvB,EIpHA,SAASmK,KACD,gBAINxpb,GAAexoI,SAAQ,SAAU5C,GACzBA,KAAS06H,GAAW3gK,SAI1BqyK,GAAK1R,GAAW3gK,QAASimC,GAAO,SAAUwrI,GAGxC,OAFAH,GAAuBrrI,GAASwrI,EAEzB,WAAgC,QAAA1nE,EAAA9tI,UAAAC,OAAnB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAEtBs5D,GAAgB,UADwB,CAAEv5D,OAAM/jE,UAGhD,MAAMjX,EAAMsiJ,GAAuBrrI,GACnCjX,GAAOA,EAAIzV,MAAMonJ,GAAW3gK,QAASgqG,EAC7C,CACA,GACA,GACA,CCTA,MAAMi6e,GAAStjb,GAGf,IAAIm6b,GACAC,GACAC,GAeG,SAASC,KACd,IAAKhX,GAAO7jgB,SACV,OAMF,MAAM86gB,EAAoB33b,GAAgBnpH,KAAK,KAAM,OAC/C+gjB,EAAwBC,GAAoBF,GAAmB,GACrEjX,GAAO7jgB,SAAS1T,iBAAiB,QAASyuhB,GAAuB,GACjElX,GAAO7jgB,SAAS1T,iBAAiB,WAAYyuhB,GAAuB,GAOpE,CAAC,cAAe,QAAQtyjB,SAASknB,IAE/B,MAAM0iH,EAASwxa,GAAel0hB,IAAYk0hB,GAAel0hB,GAAQsjE,UAE5Do/C,GAAUA,EAAMl5F,gBAAmBk5F,EAAMl5F,eAAe,sBAI7D84F,GAAKI,EAAO,oBAAoB,SAAU4ob,GACxC,OAAO,SAELnxnB,EACAqmT,EACA5nP,GAEA,GAAa,UAATz+D,GAA4B,YAARA,EACtB,IACE,MAAMqhU,EAAK75U,KACLg/M,EAAY66H,EAAG+vT,oCAAsC/vT,EAAG+vT,qCAAuC,CAAC,EAChGC,EAAkB7qb,EAASxmM,GAAQwmM,EAASxmM,IAAS,CAAEsxnB,SAAU,GAEvE,IAAKD,EAAe5lc,QAAS,CAC3B,MAAMA,EAAUylc,GAAoBF,GACpCK,EAAe5lc,QAAUA,EACzB0lc,EAAyBh2hB,KAAK3zG,KAAMwY,EAAMyrL,EAAShtH,EACjE,CAEY4yjB,EAAeC,UAC3B,CAAY,MAAO7ooB,IAEnB,CAIQ,OAAO0ooB,EAAyBh2hB,KAAK3zG,KAAMwY,EAAMqmT,EAAU5nP,EACnE,CACA,IAEI0pI,GACEI,EACA,uBACA,SAAUgpb,GACR,OAAO,SAELvxnB,EACAqmT,EACA5nP,GAEA,GAAa,UAATz+D,GAA4B,YAARA,EACtB,IACE,MAAMqhU,EAAK75U,KACLg/M,EAAW66H,EAAG+vT,qCAAuC,CAAC,EACtDC,EAAiB7qb,EAASxmM,GAE5BqxnB,IACFA,EAAeC,WAEXD,EAAeC,UAAY,IAC7BC,EAA4Bp2hB,KAAK3zG,KAAMwY,EAAMqxnB,EAAe5lc,QAAShtH,GACrE4yjB,EAAe5lc,aAAUtiM,SAClBq9M,EAASxmM,IAImB,IAAjCjY,OAAOC,KAAKw+M,GAAUx0M,eACjBqvU,EAAG+vT,oCAG5B,CAAc,MAAO3ooB,IAErB,CAIU,OAAO8ooB,EAA4Bp2hB,KAAK3zG,KAAMwY,EAAMqmT,EAAU5nP,EACxE,CACA,IACK,GAEL,CAsDA,SAASyyjB,GACPzlc,GAEwB,IADxB+lc,EAAcz/nB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEd,OAAQsvG,IAIN,IAAKA,GAASA,EAAuB,gBACnC,OAGF,MAAMxb,EAoCV,SAAwBwb,GACtB,IACE,OAAOA,EAAMxb,MACjB,CAAI,MAAOp9F,IAGP,OAAO,IACX,CACA,CA5CmBgpoB,CAAepwhB,GAG9B,GArCJ,SAA4B4nhB,EAAmBpjiB,GAE7C,MAAkB,aAAdojiB,KAICpjiB,IAAWA,EAAO8pO,SAMA,UAAnB9pO,EAAO8pO,SAA0C,aAAnB9pO,EAAO8pO,UAA0B9pO,EAAO6riB,kBAK5E,CAoBQC,CAAmBtwhB,EAAMrhG,KAAM6lF,GACjC,OAIFm9G,GAAyB3hG,EAAO,mBAAmB,GAE/Cxb,IAAWA,EAAO+riB,WAEpB5ub,GAAyBn9G,EAAQ,YAAa0mG,MAGhD,MAAM/7K,EAAsB,aAAf6wF,EAAMrhG,KAAsB,QAAUqhG,EAAMrhG,KAKzD,IAjFJ,SAAsCqhG,GAEpC,GAAIA,EAAMrhG,OAAS6wnB,GACjB,OAAO,EAGT,IAGE,IAAKxvhB,EAAMxb,QAAWwb,EAAMxb,OAA+B+riB,YAAcd,GACvE,OAAO,CAEb,CAAI,MAAOrooB,IAEX,CAME,OAAO,CACT,CA4DSopoB,CAA6BxwhB,GAAQ,CAExCoqF,EADoC,CAAEpqF,QAAO7wF,OAAMo6L,OAAQ4mb,IAE3DX,GAAwBxvhB,EAAMrhG,KAC9B8wnB,GAA4BjriB,EAASA,EAAO+riB,eAAYzooB,CAC9D,CAGIwrC,aAAai8lB,IACbA,GAAkB7W,GAAOtllB,YAAW,KAClCq8lB,QAA4B3noB,EAC5B0noB,QAAwB1noB,CAAS,GArNb,IAsND,CAEzB,CChPA,MAAM4wnB,GAAStjb,GAEFq7b,GAAsB,oBAiB5B,SAASC,KAEd,IAAMhY,GAAeplR,eACnB,OAGF,MAAMq9R,EAAWr9R,eAAexrM,UAEhCg/C,GAAK6pb,EAAU,QAAQ,SAAUC,GAC/B,OAAO,WACL,MAAM1yb,EAAiB12M,KAAKoyF,MAGlC,QAAA4kD,EAAA9tI,UAAAC,OAJ4E8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAK1E,MAAM3wI,EAASo2M,GAAS1lE,EAAK,IAAMA,EAAK,GAAG3rG,mBAAgBhrC,EACrDiqC,EAoGZ,SAAkBA,GAChB,GAAIoyK,GAASpyK,GACX,OAAOA,EAGT,IAKE,OAAQA,EAAY+c,UACxB,CAAI,MAAA+hlB,GAAO,CAET,MACF,CAlHkBC,CAASryf,EAAK,IAE1B,IAAK1wI,IAAWgkC,EACd,OAAO6+lB,EAAa5ilB,MAAM7nD,KAAMs4I,GAGlCt4I,KAAKsqoB,IAAuB,CAC1B1ioB,SACAgkC,MACAg/lB,gBAAiB,CAAC,GAIL,SAAXhjoB,GAAqBgkC,EAAIqwB,MAAM,gBACjCj8D,KAAK6qoB,wBAAyB,GAGhC,MAAMC,EAAwCA,KAE5C,MAAMC,EAAU/qoB,KAAKsqoB,IAErB,GAAKS,GAImB,IAApB/qoB,KAAKuqJ,WAAkB,CACzB,IAGEwgf,EAAQC,YAAchroB,KAAKi0B,MACvC,CAAY,MAAOhzB,IACnB,CASU4wM,GAAgB,MANoB,CAClCv5D,KAAM,CAAC1wI,EAAQgkC,GACf8pK,aAAcr0M,KAAKoyF,MACnBskH,iBACAkzb,IAAKjroB,MAGjB,GA+BM,MA5BI,uBAAwBA,MAA2C,oBAA5BA,KAAKgvW,mBAC9CruJ,GAAK3gN,KAAM,sBAAsB,SAAU6gN,GACzC,OAAO,WACLiqb,IAA2B,QAAA9xf,EAAAzuI,UAAAC,OAD0B0goB,EAAc,IAAAhknB,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAdiyf,EAAcjyf,GAAA1uI,UAAA0uI,GAEnE,OAAO4nE,EAASh5J,MAAM7nD,KAAMkroB,EACxC,CACA,IAEQlroB,KAAKg7G,iBAAiB,mBAAoB8vhB,GAM5Cnqb,GAAK3gN,KAAM,oBAAoB,SAAU6gN,GACvC,OAAO,WAAuF,QAAAhoE,EAAAtuI,UAAAC,OAAvC2goB,EAAoB,IAAAjknB,MAAA2xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAApBqyf,EAAoBryf,GAAAvuI,UAAAuuI,GACzE,MAAOt3I,EAAQ+vB,GAAS45mB,EAElBJ,EAAU/qoB,KAAKsqoB,IAMrB,OAJIS,GAAW/sb,GAASx8M,IAAWw8M,GAASzsL,KAC1Cw5mB,EAAQH,gBAAgBppoB,EAAO2F,eAAiBoqB,GAG3CsvL,EAASh5J,MAAM7nD,KAAMmroB,EACtC,CACA,IAEaV,EAAa5ilB,MAAM7nD,KAAMs4I,EACtC,CACA,IAEEqoE,GAAK6pb,EAAU,QAAQ,SAAUY,GAC/B,OAAO,WACL,MAAMC,EAAgBrroB,KAAKsqoB,IAAoB,QAAAn0S,EAAA5rV,UAAAC,OADuB8tI,EAAI,IAAApxH,MAAAivU,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ99M,EAAI89M,GAAA7rV,UAAA6rV,GAG1E,IAAKi1S,EACH,OAAOD,EAAavjlB,MAAM7nD,KAAMs4I,QAGlB32I,IAAZ22I,EAAK,KACP+yf,EAAclqoB,KAAOm3I,EAAK,IAU5B,OAFAu5D,GAAgB,MALoB,CAClCv5D,KAAM,CAAC+yf,EAAczjoB,OAAQyjoB,EAAcz/lB,KAC3CmsK,eAAgB12M,KAAKoyF,MACrBw3iB,IAAKjroB,OAIAoroB,EAAavjlB,MAAM7nD,KAAMs4I,EACtC,CACA,GACA,CCtHA,SAASgzf,MtBoEF,WACL,GAA2B,kBAAhBC,YACT,OAAO,EAGT,IAAKpO,KACH,OAAO,EAKT,GAAIE,GAAc9K,GAAOtmlB,OACvB,OAAO,EAKT,IAAI0yB,GAAS,EACb,MAAM78D,EAAMywnB,GAAO7jgB,SAEnB,GAAI5sH,GAAiD,oBAAlCA,EAAIk2P,cACrB,IACE,MAAMwzY,EAAU1poB,EAAIk2P,cAAc,UAClCwzY,EAAQC,QAAS,EACjB3poB,EAAIy1G,KAAKilJ,YAAYgvY,GACjBA,EAAQ/vU,eAAiB+vU,EAAQ/vU,cAAcxvR,QAEjD0yB,EAAS0+jB,GAAcmO,EAAQ/vU,cAAcxvR,QAE/CnqC,EAAIy1G,KAAK2kJ,YAAYsvY,EAC3B,CAAM,MAAOvpoB,GACP4/L,IACE2C,GAAOj2J,KAAK,kFAAmFtsC,EACvG,CAGE,OAAO08D,CACT,EsBxGO+skB,IAIL/qb,GAAK1R,GAAY,SAAS,SAAU08b,GAClC,OAAO,WAAgC,QAAAtzf,EAAA9tI,UAAAC,OAAnB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GACtB,MAAM,OAAE3wI,EAAM,IAAEgkC,GAyEf,SAAwBggmB,GAC7B,GAAyB,IAArBA,EAAUphoB,OACZ,MAAO,CAAE5C,OAAQ,MAAOgkC,IAAK,IAG/B,GAAyB,IAArBggmB,EAAUphoB,OAAc,CAC1B,MAAOohC,EAAKqrC,GAAW20jB,EAEvB,MAAO,CACLhgmB,IAAKigmB,GAAmBjgmB,GACxBhkC,OAAQkkoB,GAAQ70jB,EAAS,UAAYt0E,OAAOs0E,EAAQrvE,QAAQ+kC,cAAgB,MAElF,CAEE,MAAMo6C,EAAM6kjB,EAAU,GACtB,MAAO,CACLhgmB,IAAKigmB,GAAmB9kjB,GACxBn/E,OAAQkkoB,GAAQ/kjB,EAAK,UAAYpkF,OAAOokF,EAAIn/E,QAAQ+kC,cAAgB,MAExE,CA5F8Bo/lB,CAAezzf,GAEjCs5D,EAAgC,CACpCt5D,OACA0zf,UAAW,CACTpkoB,SACAgkC,OAEFmsK,eAAgB12M,KAAKoyF,OAQvB,OALAo+G,GAAgB,QAAS,IACpBD,IAIE+5b,EAAc9jlB,MAAMonJ,GAAY32D,GAAMz2I,MAC1CqrC,IAOC2kK,GAAgB,QAN8B,IACzCD,EACH8D,aAAcr0M,KAAKoyF,MACnBvmD,aAIKA,KAERmB,IAWC,MAJAwjK,GAAgB,QAN6B,IACxCD,EACH8D,aAAcr0M,KAAKoyF,MACnBplD,UAOIA,CAAK,GAGrB,CACA,GACA,CAEA,SAASy9lB,GAA0B/ikB,EAAcsrE,GAC/C,QAAStrE,GAAsB,kBAARA,KAAuBA,EAA+BsrE,EAC/E,CAEA,SAASw3f,GAAmBnkQ,GAC1B,MAAwB,kBAAbA,EACFA,EAGJA,EAIDokQ,GAAQpkQ,EAAU,OACbA,EAAS97V,IAGd87V,EAAS/+U,SACJ++U,EAAS/+U,WAGX,GAXE,EAYX,CCtFa,MAAAsjlB,GAAsB,CAAC,QAAS,QAAS,UAAW,MAAO,OAAQ,SAoBzE,SAASC,GAAwB33jB,GACtC,MAAkB,SAAVA,EAAmB,UAAY03jB,GAAoB9rmB,SAASo0C,GAASA,EAAQ,KACvF,CCnBO,SAASo2jB,GAAS/+lB,GACvB,IAAKA,EACH,MAAO,CAAC,EAGV,MAAMqwB,EAAQrwB,EAAIqwB,MAAM,gEAExB,IAAKA,EACH,MAAO,CAAC,EAIV,MAAMmuV,EAAQnuV,EAAM,IAAM,GACpB0lV,EAAW1lV,EAAM,IAAM,GAC7B,MAAO,CACL97D,KAAM87D,EAAM,GACZp0D,KAAMo0D,EAAM,GACZqqT,SAAUrqT,EAAM,GAChB00L,OAAQy5J,EACR7wU,KAAMooU,EACN3hC,SAAU/jT,EAAM,GAAKmuV,EAAQzI,EAEjC,CCiBA,MAAMwqP,GAA4B,KAE5BjR,GAAmB,cAwCZkR,GAtCoB,WAC/B,MAAM5la,EAAW,CACfl4L,SAAS,EACT+9lB,KAAK,EACLpgmB,OAAO,EACPssU,SAAS,EACTjpK,QAAQ,EACR27b,KAAK,KAPgC1goB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAgC,CAAC,GAWxE,MAAO,CACLye,KAAMkymB,GAENP,SAAAA,GAAa,EACbC,KAAAA,CAAM9xb,GL3BH,IAAgD7E,EK4B7CuiC,EAASl4L,SN5DZ,SAA0C21J,GAC/C,MAAMzrL,EAAO,UACb65L,GAAW75L,EAAMyrL,GACjBqO,GAAgB95L,EAAM2wnB,GACxB,CMyDQmD,CA0I2E,SAAAxjc,GACA,gBAAA8I,GACA,GAAAvP,OAAAyG,EACA,OAGA,MAAA8B,EAAA,CACAg6b,SAAA,UACAr5lB,KAAA,CACAhhC,UAAAqnM,EAAAt5D,KACAksD,OAAA,WAEAjwH,MAAA23jB,GAAAt6b,EAAAr9H,OACA1oC,QAAAynlB,GAAA1hb,EAAAt5D,KAAA,MAGA,cAAAs5D,EAAAr9H,MAAA,CACA,QAAAq9H,EAAAt5D,KAAA,GAKA,OAJAsyD,EAAA/+J,QAAA,qBAAAynlB,GAAA1hb,EAAAt5D,KAAAhwF,MAAA,4BACAsiJ,EAAAr/J,KAAAhhC,UAAAqnM,EAAAt5D,KAAAhwF,MAAA,EAKA,CAEAqiJ,GAAAC,EAAA,CACAv5C,MAAAugD,EAAAt5D,KACA/jE,MAAAq9H,EAAAr9H,OAEA,CACA,CAzK1Cg4jB,CAA6Bzjc,IAE5D09B,EAAS6la,ML/BoCpoc,EKyG4B,SACA6E,EACAujc,GAEA,gBAAAz6b,GACA,GAAAvP,OAAAyG,EACA,OAGA,IAAAzqG,EACAugN,EACAi0U,EAAA,kBAAAwZ,EAAAA,EAAAG,wBAAA7qoB,EAEAmxnB,EACA,kBAAAuZ,GAAA,kBAAAA,EAAAvZ,gBAAAuZ,EAAAvZ,qBAAAnxnB,EACAmxnB,GAAAA,EAAAqZ,KACAtqc,IACA2C,GAAAj2J,KACA,8DAAAuklB,mDAEAA,EAAAqZ,IAGA,kBAAAtZ,IACAA,EAAA,CAAAA,IAIA,IACA,MAAAh5gB,EAAA+3F,EAAA/3F,MACAsnC,EAmNA,SAAAtnC,GACA,QAAAA,KAAAA,EAAAxb,MACA,CArNAouiB,CAAA5yhB,GAAAA,EAAAxb,OAAAwb,EAEAxb,EAAAm0hB,GAAArxe,EAAA,CAAA0xe,WAAAC,oBACAl0U,ElDVxD,SAAA1/G,GAEA,IAAAqzb,GAAArvS,YACA,YAGA,IAAAuvS,EAAAvzb,EAEA,QAAAj3I,EAAA,EAAAA,EADG,EACHA,IAAA,CACA,IAAAwqkB,EACA,YAGA,GAAAA,aAAAvvS,aAAAuvS,EAAAzgT,QAAA,gBACA,OAAAygT,EAAAzgT,QAAA,gBAGAygT,EAAAA,EAAA7nU,UACA,CAEA,WACA,CkDXwD8hV,CAAAvrf,EACA,OAAAlgJ,IACAo9F,EAAA,WACA,CAEA,OAAAA,EAAA7zF,OACA,OAGA,MAAAogM,EAAA,CACAg6b,SAAA,MAAAhzb,EAAA5oL,OACA6iB,QAAAwyD,GAGAugN,IACAh0G,EAAAr/J,KAAA,qBAAAqzQ,IAGAj0G,GAAAC,EAAA,CACA/wF,MAAA+3F,EAAA/3F,MACA7wF,KAAA4oL,EAAA5oL,KACAo6L,OAAAxR,EAAAwR,QAEA,CACA,CAlIpCupb,CAAyB7jc,EAAQ09B,EAAS6la,KL9BvFh6b,GADa,MACIpO,GACjBqO,GAFa,MAESi3b,KK+Bd/ia,EAASyka,KJ1DZ,SAAsChnc,GAE3CoO,GADa,MACIpO,GACjBqO,GAFa,MAESi4b,GACxB,CIuDQqC,CAwK2E,SAAA9jc,GACA,gBAAA8I,GACA,GAAAvP,OAAAyG,EACA,OAGA,qBAAAiP,EAAA,aAAArC,GAAA9D,EAEAy5b,EAAAz5b,EAAAq5b,IAAAX,IAGA,IAAAvyb,IAAArC,IAAA21b,EACA,OAGA,aAAAzjoB,EAAA,IAAAgkC,EAAA,YAAAo/lB,EAAA,KAAA7poB,GAAAkqoB,EAeA1gc,GACA,CACAi6b,SAAA,MACAr5lB,KAhBA,CACA3jC,SACAgkC,MACAo/lB,eAcAxynB,KAAA,QAXA,CACAyynB,IAAAr5b,EAAAq5b,IACA55e,MAAAlwJ,EACA42M,iBACArC,gBAWA,CACA,CA/M9Cm3b,CAAyB/jc,IAEpD09B,EAASv6L,OHjEZ,SAAwCg4J,GAC7C,MAAMzrL,EAAO,QACb65L,GAAW75L,EAAMyrL,GACjBqO,GAAgB95L,EAAM8ynB,GACxB,CG8DQwB,CAiN2E,SAAAhkc,GACA,gBAAA8I,GACA,GAAAvP,OAAAyG,EACA,OAGA,qBAAAiP,EAAA,aAAArC,GAAA9D,EAGA,GAAA8D,KAIA9D,EAAAo6b,UAAApgmB,IAAAqwB,MAAA,wBAAA21I,EAAAo6b,UAAApkoB,QAKA,GAAAgqM,EAAAvjK,MAAA,CASAs8J,GACA,CACAi6b,SAAA,QACAr5lB,KAXAqmK,EAAAo6b,UAYAz3jB,MAAA,QACA/7D,KAAA,QAZA,CACA+yB,KAAAqmK,EAAAvjK,MACAgjH,MAAAugD,EAAAt5D,KACAy/D,iBACArC,gBAYA,MACA,MAAAxoK,EAAA0kK,EAAA1kK,SAWAy9J,GACA,CACAi6b,SAAA,QACAr5lB,KAbA,IACAqmK,EAAAo6b,UACAhB,YAAA99lB,GAAAA,EAAAjZ,QAYAzb,KAAA,QAVA,CACA64I,MAAAugD,EAAAt5D,KACAprG,WACA6qK,iBACArC,gBAUA,CACA,CACA,CA3Q5Cq3b,CAA2Bjkc,IAExD09B,EAAS+xI,SACXglR,GA6Q2E,SAAAz0b,GACA,gBAAA8I,GACA,GAAAvP,OAAAyG,EACA,OAGA,IAAAl8L,EAAAglM,EAAAhlM,KACAC,EAAA+kM,EAAA/kM,GACA,MAAAmgoB,EAAArC,GAAApY,GAAAx5gB,SAAAC,MACA,IAAAi0hB,EAAArgoB,EAAA+9nB,GAAA/9nB,QAAAjL,EACA,MAAAuroB,EAAAvC,GAAA99nB,GAGAogoB,GAAAA,EAAAploB,OACAoloB,EAAAD,GAKAA,EAAA1mR,WAAA4mR,EAAA5mR,UAAA0mR,EAAA7soB,OAAA+soB,EAAA/soB,OACA0M,EAAAqgoB,EAAAltR,UAEAgtR,EAAA1mR,WAAA2mR,EAAA3mR,UAAA0mR,EAAA7soB,OAAA8soB,EAAA9soB,OACAyM,EAAAqgoB,EAAAjtR,UAGAr1K,GAAA,CACAi6b,SAAA,aACAr5lB,KAAA,CACA3+B,OACAC,OAGA,CACA,CA/S1CsgoB,CAA6Brkc,IAE5D09B,EAASl3B,QAAUxG,EAAOj/E,IAC5Bi/E,EAAOj/E,GAAG,kBAqClB,SAAqCi/E,GACnC,OAAO,SAA6BjvF,GAC9BwoF,OAAgByG,GAIpB6B,GACE,CACEi6b,SAAU,WAAyB,gBAAf/qhB,EAAMrhG,KAAyB,cAAgB,SACQwzL,SAAAnyF,EAAAmyF,SACAz3H,MAAAslC,EAAAtlC,MACA1oC,QAAAsolB,GAAAt6gB,IAEA,CACAA,SAGA,CACA,CAvD9CuzhB,CAA4Btkc,GAEjE,EAEA,EAU2Biyb,GAA4BG,GAAkBkR,ICnGzE,MAAMlR,GAAmB,SA6BZmS,GA3BeC,KAC1B,IAAIC,EAEJ,MAAO,CACLvknB,KAAMkymB,GAENP,SAAAA,GAAa,EACbG,YAAAA,CAAa0S,GAGX,GAAIA,EAAah1nB,KACf,OAAOg1nB,EAIT,IACE,GAsBR,SAA0BA,EAAqBD,GAC7C,IAAKA,EACH,OAAO,EAGT,GAWF,SAA6BC,EAAqBD,GAChD,MAAME,EAAiBD,EAAa3hmB,QAC9B6hmB,EAAkBH,EAAc1hmB,QAGtC,IAAK4hmB,IAAmBC,EACtB,OAAO,EAIT,GAAKD,IAAmBC,IAAsBD,GAAkBC,EAC9D,OAAO,EAGT,GAAID,IAAmBC,EACrB,OAAO,EAGT,IAAKC,GAAmBH,EAAcD,GACpC,OAAO,EAGT,IAAKK,GAAkBJ,EAAcD,GACnC,OAAO,EAGT,OAAO,CACT,CAtCMM,CAAoBL,EAAcD,GACpC,OAAO,EAGT,GAoCF,SAA+BC,EAAqBD,GAClD,MAAMO,EAAoBC,GAAuBR,GAC3CS,EAAmBD,GAAuBP,GAEhD,IAAKM,IAAsBE,EACzB,OAAO,EAGT,GAAIF,EAAkBt1nB,OAASw1nB,EAAiBx1nB,MAAQs1nB,EAAkBv8mB,QAAUy8mB,EAAiBz8mB,MACnG,OAAO,EAGT,IAAKo8mB,GAAmBH,EAAcD,GACpC,OAAO,EAGT,IAAKK,GAAkBJ,EAAcD,GACnC,OAAO,EAGT,OAAO,CACT,CAzDMU,CAAsBT,EAAcD,GACtC,OAAO,EAGT,OAAO,CACT,CApCYhR,CAAiBiR,EAAcD,GAEjC,OADA1rc,IAAe2C,GAAOj2J,KAAK,wEACpB,IAEjB,CAAQ,MAAOggK,GAAM,CAEf,OAAQg/b,EAAgBC,CAC9B,EACG,EAUmBzS,GAA4BG,GAAkBmS,IAwEpE,SAASO,GAAkBJ,EAAqBD,GAC9C,IAAIW,EAAgBC,GAAoBX,GACpCY,EAAiBD,GAAoBZ,GAGzC,IAAKW,IAAkBE,EACrB,OAAO,EAIT,GAAKF,IAAkBE,IAAqBF,GAAiBE,EAC3D,OAAO,EAOT,GAAIA,EAAe5joB,SAAW0joB,EAAc1joB,OAC1C,OAAO,EAIT,IAAK,IAAIy9C,EAAI,EAAGA,EAAImmlB,EAAe5joB,OAAQy9C,IAAK,CAC9C,MAAMomlB,EAASD,EAAenmlB,GACxBqmlB,EAASJ,EAAcjmlB,GAE7B,GACEomlB,EAAO3Y,WAAa4Y,EAAO5Y,UAC3B2Y,EAAOE,SAAWD,EAAOC,QACzBF,EAAOG,QAAUF,EAAOE,OACxBH,EAAO5Y,WAAa6Y,EAAO7Y,SAE3B,OAAO,CAEb,CAEE,OAAO,CACT,CAEA,SAASkY,GAAmBH,EAAqBD,GAC/C,IAAIzniB,EAAqB0niB,EAAa32jB,YAClC43jB,EAAsBlB,EAAc12jB,YAGxC,IAAKivB,IAAuB2oiB,EAC1B,OAAO,EAIT,GAAK3oiB,IAAuB2oiB,IAA0B3oiB,GAAsB2oiB,EAC1E,OAAO,EAOT,IACE,QAAU3oiB,EAAmBljF,KAAK,MAAQ6rnB,EAAoB7rnB,KAAK,IACvE,CAAI,MAAO2rL,GACP,OAAO,CACX,CACA,CAEA,SAASw/b,GAAuBl0hB,GAC9B,OAAOA,EAAMiyF,WAAajyF,EAAMiyF,UAAUrgI,QAAUouC,EAAMiyF,UAAUrgI,OAAO,EAC7E,CAEA,SAAS0ikB,GAAoBt0hB,GAC3B,MAAMiyF,EAAYjyF,EAAMiyF,UAExB,GAAIA,EACF,IAEE,OAAOA,EAAUrgI,OAAO,GAAGwsjB,WAAW5C,MAC5C,CAAM,MAAO9mb,GACP,MACN,CAGA,CC9LA,IAAIiD,GAA4D,KAchE,SAASC,KACPD,GAAqBvC,GAAW1zC,QAEhC0zC,GAAW1zC,QAAU,SACnB3hD,EACAhuE,EACA8lK,EACAC,EACAtjK,GAWA,OAFAwjK,GAAgB,QAPsB,CACpCF,SACAtjK,QACAqjK,OACA93F,MACAhuE,WAIE4lK,IAAuBA,GAAmBM,oBAErCN,GAAmB3pJ,MAAM7nD,KAAMuK,UAI5C,EAEE0kM,GAAW1zC,QAAQw2C,yBAA0B,CAC/C,CCxCA,IAAIC,GAAsF,KAgB1F,SAASC,KACPD,GAAkC/C,GAAWiD,qBAE7CjD,GAAWiD,qBAAuB,SAAUjxM,GAI1C,OAFA4wM,GAAgB,qBADmC5wM,KAG/C+wM,KAAoCA,GAAgCF,oBAE/DE,GAAgCnqJ,MAAM7nD,KAAMuK,UAIzD,EAEE0kM,GAAWiD,qBAAqBH,yBAA0B,CAC5D,CCTA,MAAMmpb,GAAmB,iBA2BZwT,GAzBuB,WAClC,MAAMloa,EAAW,CACfjrE,SAAS,EACT22C,sBAAsB,KAHkB3nM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAwC,CAAC,GAOnF,MAAO,CACLye,KAAMkymB,GACNP,SAAAA,GACEtynB,MAAMsmoB,gBAAkB,EAC9B,EACI/T,KAAAA,CAAM9xb,GACA09B,EAASjrE,WA0BnB,SAAsCutC,IF1D/B,SAA8C7E,GACnD,MAAMzrL,EAAO,QACb65L,GAAW75L,EAAMyrL,GACjBqO,GAAgB95L,EAAMi5L,GACxB,CEuDEc,EAAqChnK,IACnC,MAAM,YAAE+rlB,EAAW,iBAAEkQ,GAAqB35b,KAE1C,GAAIxL,OAAgByG,GAAU0/b,KAC5B,OAGF,MAAM,IAAE5uhB,EAAG,IAAEhuE,EAAG,KAAE8lK,EAAI,OAAEC,EAAM,MAAEtjK,GAAU9C,EAEpCsuE,OACMl4G,IAAV0sC,GAAuB2vK,GAASpkG,GAoG8C,SAAAA,EAAAhuE,EAAA8lK,EAAAC,GACA,MAAAi9b,EACA,2GAGA,IAAA/imB,EAAAimlB,GAAAl4gB,GAAAA,EAAA/tE,QAAA+tE,EACA5wF,EAAA,QAEA,MAAA0gH,EAAA79F,EAAAowB,MAAA2ykB,GACAllgB,IACA1gH,EAAA0gH,EAAA,GACA79F,EAAA69F,EAAA,IAGA,MAAA7vB,EAAA,CACAiyF,UAAA,CACArgI,OAAA,CACA,CACAjzD,KAAAwQ,EACAuI,MAAAsa,MAMA,OAAAgjmB,GAAAh1hB,EAAAjuE,EAAA8lK,EAAAC,EACA,CA7H1Em9b,CAA4Bl1hB,EAAKhuE,EAAK8lK,EAAMC,GAC5Ck9b,GACEtH,GAAsBjQ,EAAajplB,GAASurE,OAAKj4G,EAAW6loB,GAAkB,GAC9E57lB,EACA8lK,EACAC,GAGR93F,EAAMtlC,MAAQ,QAEd63H,GAAavyF,EAAO,CAClBqyF,kBAAmB79J,EACnBomlB,UAAW,CACTC,SAAS,EACTl8mB,KAAM,YAER,GAEN,CAvDQu2nB,CAA6Bjmc,GAC7Bkmc,GAAiB,YAEfxoa,EAASt0B,wBAsDnB,SAAmDpJ,IDxF5C,SACL7E,GAEA,MAAMzrL,EAAO,qBACb65L,GAAW75L,EAAMyrL,GACjBqO,GAAgB95L,EAAMy5L,GACxB,CCmFEQ,EAAkDxxM,IAChD,MAAM,YAAEq2nB,EAAW,iBAAEkQ,GAAqB35b,KAE1C,GAAIxL,OAAgByG,GAAU0/b,KAC5B,OAGF,MAAMn6lB,EAkBV,SAAqCA,GACnC,GAAI4jlB,GAAY5jlB,GACd,OAAOA,EAIT,MAAMptC,EAAIotC,EAGV,IAGE,GAAI,WAAYptC,EACd,OAAOA,EAAEy4D,OAQN,GAAI,WAAYz4D,GAAK,WAAYA,EAAEgzT,OACtC,OAAOhzT,EAAEgzT,OAAOv6P,MAEtB,CAAI,MAAAgxkB,GAAO,CAET,OAAOr8lB,CACT,CA7CkB4gmB,CAA4BhuoB,GAEpC44G,EAAQo4gB,GAAY5jlB,GAoDrB,CACLy9J,UAAW,CACTrgI,OAAQ,CACN,CACEjzD,KAAM,qBAEN+Y,MAAO,oDAAoD5uB,OAzD5B0rC,SACjCk5lB,GAAsBjQ,EAAajplB,OAAO1sC,EAAW6loB,GAAkB,GAE3E3thB,EAAMtlC,MAAQ,QAEd63H,GAAavyF,EAAO,CAClBqyF,kBAAmB79J,EACnBomlB,UAAW,CACTC,SAAS,EACTl8mB,KAAM,yBAER,GAEN,CA7EQ02nB,CAA0Cpmc,GAC1Ckmc,GAAiB,wBAEzB,EAEA,EAS8BjU,GAC5BG,GACAwT,IAiJkF,SAAAG,GAAAh1hB,EAAAjuE,EAAA8lK,EAAAC,GAEA,MAAA1wM,EAAA44G,EAAAiyF,UAAAjyF,EAAAiyF,WAAA,GAEAqjc,EAAAluoB,EAAAwqE,OAAAxqE,EAAAwqE,QAAA,GAEA2jkB,EAAAD,EAAA,GAAAA,EAAA,OAEAE,EAAAD,EAAAnX,WAAAmX,EAAAnX,YAAA,GAEAqX,EAAAD,EAAAha,OAAAga,EAAAha,QAAA,GAEAmZ,EAAA/miB,MAAAr5D,SAAAujK,EAAA,UAAAhwM,EAAAgwM,EACA48b,EAAA9miB,MAAAr5D,SAAAsjK,EAAA,UAAA/vM,EAAA+vM,EACAgkb,EAAA13a,GAAApyK,IAAAA,EAAAphC,OAAA,EAAAohC,EtDzFzD,WACA,IACA,OAAA2mlB,GAAA7jgB,SAAA3V,SAAAC,IACA,OAAAyjhB,GACA,QACA,CACA,CsDmFyD8S,GAaA,OAVA,IAAAD,EAAA9koB,QACA8koB,EAAA5wkB,KAAA,CACA8vkB,QACA9Y,WACAD,SAAA,IACA+Z,QAAA,EACAjB,WAIA10hB,CACA,CAEA,SAAAm1hB,GAAAx2nB,GACAqpL,IAAA2C,GAAAlnI,IAAA,4BAAA9kD,IACA,CAEA,SAAAq1L,KACA,MAAA/E,EAAAzG,KAKA,OAJAyG,GAAAA,EAAA+E,cAAA,CACAypb,YAAAA,IAAA,GACAkQ,kBAAA,EAGA,CCvPpF,MAAMtM,GAAmB,cA8BZuU,GA5BoBC,KACxB,CACL1mnB,KAAMkymB,GAENP,SAAAA,GAAa,EACbE,eAAAA,CAAgBhhhB,GAEd,IAAK04gB,GAAOvvd,YAAcuvd,GAAOx5gB,WAAaw5gB,GAAO7jgB,SACnD,OAIF,MAAM9iF,EAAOiuE,EAAMr1G,SAAWq1G,EAAMr1G,QAAQonC,KAAS2mlB,GAAOx5gB,UAAYw5gB,GAAOx5gB,SAASC,MAClF,SAAE22hB,GAAapd,GAAO7jgB,UAAY,CAAC,GACnC,UAAEu0C,GAAcsvd,GAAOvvd,WAAa,CAAC,EAErCnjK,EAAU,IACVg6G,EAAMr1G,SAAWq1G,EAAMr1G,QAAQ3E,WAC/B8voB,GAAY,CAAEC,QAASD,MACvB1se,GAAa,CAAE,aAAcA,IAE7Bz+J,EAAU,IAAKq1G,EAAMr1G,WAAaonC,GAAO,CAAEA,OAAQ/rC,WAEzDg6G,EAAMr1G,QAAUA,CACtB,IAW2Bu2nB,GAA4BG,GAAkBuU,IClClE,SAASI,GACdC,EACA35Z,GAMM,IALN45Z,EAAaxloB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,IACxB2Y,EAAG3Y,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EACHkC,EAAK0G,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EACLk4G,EAAKtvG,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EACL2iM,EAAI/5L,UAAAC,OAAA,EAAAD,UAAA,QAAA5I,EAEJ,IAAKk4G,EAAMiyF,YAAcjyF,EAAMiyF,UAAUrgI,SAAW64H,IAASob,GAAapb,EAAK4H,kBAAmB7jM,OAChG,OAIF,MAAM6jM,EACJryF,EAAMiyF,UAAUrgI,OAAOjhE,OAAS,EAAIqvG,EAAMiyF,UAAUrgI,OAAOouC,EAAMiyF,UAAUrgI,OAAOjhE,OAAS,QAAK7I,EAkHpG,IAAqC0joB,EAAyBpO,EA/GxD/qb,IACFryF,EAAMiyF,UAAUrgI,QA8GiB45jB,EA7G/B2K,GACEF,EACA35Z,EACAtyO,EACAygM,EAAK4H,kBACLhpL,EACA22F,EAAMiyF,UAAUrgI,OAChBygI,EACA,GAqGsD+qb,EAnGxD8Y,EAoGG1K,EAAW5koB,KAAIqrM,IAChBA,EAAUv6K,QACZu6K,EAAUv6K,MAAQs2L,GAAS/b,EAAUv6K,MAAO0lmB,IAEvCnrb,MArGX,CAEA,SAASkkc,GACPF,EACA35Z,EACAtyO,EACAwqC,EACAnrB,EACA+snB,EACAnkc,EACAokc,GAEA,GAAID,EAAezloB,QAAU3G,EAAQ,EACnC,OAAOosoB,EAGT,IAAIE,EAAgB,IAAIF,GAGxB,GAAIvwb,GAAarxK,EAAMnrB,GAAM7a,OAAQ,CACnC+noB,GAA4Ctkc,EAAWokc,GACvD,MAAMG,EAAeP,EAAiC35Z,EAAQ9nM,EAAMnrB,IAC9DotnB,EAAiBH,EAAc3loB,OACrC+loB,GAA2CF,EAAcntnB,EAAKotnB,EAAgBJ,GAC9EC,EAAgBH,GACdF,EACA35Z,EACAtyO,EACAwqC,EAAMnrB,GACNA,EACA,CAACmtnB,KAAiBF,GAClBE,EACAC,EAEN,CAyBE,OArBIppnB,MAAMC,QAAQknB,EAAM42J,SACtB52J,EAAM42J,OAAO9tH,SAAQ,CAACq5jB,EAAYvolB,KAChC,GAAIy3J,GAAa8wb,EAAYnooB,OAAQ,CACnC+noB,GAA4Ctkc,EAAWokc,GACvD,MAAMG,EAAeP,EAAiC35Z,EAAQq6Z,GACxDF,EAAiBH,EAAc3loB,OACrC+loB,GAA2CF,EAAc,UAAUpolB,KAAMqolB,EAAgBJ,GACzFC,EAAgBH,GACdF,EACA35Z,EACAtyO,EACA2soB,EACAttnB,EACA,CAACmtnB,KAAiBF,GAClBE,EACAC,EAEV,KAISH,CACT,CAEA,SAASC,GAA4Ctkc,EAAsBokc,GAEzEpkc,EAAU2ob,UAAY3ob,EAAU2ob,WAAa,CAAEj8mB,KAAM,UAAWk8mB,SAAS,GAEzE5ob,EAAU2ob,UAAY,IACjB3ob,EAAU2ob,aACU,mBAAnB3ob,EAAUtzL,MAA6B,CAAEi4nB,oBAAoB,GACjEC,aAAcR,EAElB,CAEA,SAASK,GACPzkc,EACAxsG,EACA4wiB,EACA/inB,GAGA2+K,EAAU2ob,UAAY3ob,EAAU2ob,WAAa,CAAEj8mB,KAAM,UAAWk8mB,SAAS,GAEzE5ob,EAAU2ob,UAAY,IACjB3ob,EAAU2ob,UACbj8mB,KAAM,UACN8mF,SACAoxiB,aAAcR,EACdS,UAAWxjnB,EAEf,CCxHA,MAGM+tmB,GAAmB,eA2BZ0V,GAzBqB,WAAuC,IAAtC35jB,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAwB,CAAC,EACjE,MAAM1G,EAAQozE,EAAQpzE,OALF,EAMdqf,EAAM+zD,EAAQ/zD,KAPF,QASlB,MAAO,CACL8F,KAAMkymB,GAENP,SAAAA,GAAa,EACbE,eAAAA,CAAgBhhhB,EAAOyqF,EAAMwE,GAC3B,MAAM7xH,EAAU6xH,EAAO+E,aAEvBgic,GAEE7I,GACA/vjB,EAAQqgjB,YACRrgjB,EAAQggjB,eACR/zmB,EACArf,EACAg2G,EACAyqF,EAER,EAEA,EChCMusc,IDyCsB9V,GAA4BG,GAAkB0V,ICzC7C,CAC3B,cACA,SACA,OACA,mBACA,iBACA,mBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,eACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,yBAGI1V,GAAmB,WAoDZ4V,GAxCyB,WACpC,MAAMtqa,EAAW,CACf2mI,gBAAgB,EAChB4jS,aAAa,EACbprT,uBAAuB,EACvB4mB,aAAa,EACbt/T,YAAY,KAN8B1iC,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAA6B,CAAC,GAU1E,MAAO,CACLye,KAAMkymB,GAGNP,SAAAA,GACMn0Z,EAASv5L,YACX0zK,GAAK4xa,GAAQ,aAAcye,IAGzBxqa,EAAS+lI,aACX5rJ,GAAK4xa,GAAQ,cAAeye,IAG1Bxqa,EAASm/G,uBACXhlI,GAAK4xa,GAAQ,wBAAyB0e,IAGpCzqa,EAAS2mI,gBAAkB,uBAC7BxsJ,GAAKwsJ,eAAexrM,UAAW,OAAQuve,IAGzC,MAAMC,EAAoB3qa,EAASuqa,YACnC,GAAII,EAAmB,EACDjqnB,MAAMC,QAAQgqnB,GAAqBA,EAAoBN,IAC/D15jB,QAAQi6jB,GAC5B,CACA,EAEA,EASwBrW,GACtBG,GACA4V,IAWF,SAASE,GAAkBnwb,GAEzB,OAAO,WAA6C,QAAAxoE,EAAA9tI,UAAAC,OAArB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GACjC,MAAM84f,EAAmB/4f,EAAK,GAQ9B,OAPAA,EAAK,GAAKg2I,GAAK+iX,EAAkB,CAC/B5c,UAAW,CACTlplB,KAAM,CAAEkqlB,SAAUr2a,GAAgByB,IAClC6za,SAAS,EACTl8mB,KAAM,gBAGHqoM,EAASh5J,MAAM7nD,KAAMs4I,EAChC,CACA,CAGA,SAAS24f,GAASpwb,GAEhB,OAAO,SAAqB5nK,GAE1B,OAAO4nK,EAASh5J,MAAM7nD,KAAM,CAC1BsuR,GAAKr1O,EAAU,CACbw7kB,UAAW,CACTlplB,KAAM,CACJkqlB,SAAU,wBACVxxb,QAASmb,GAAgByB,IAE3B6za,SAAS,EACTl8mB,KAAM,iBAIhB,CACA,CAEA,SAAS04nB,GAAS9F,GAEhB,OAAO,WAEL,MAAMH,EAAMjroB,KACsC,CAAC,SAAU,UAAW,aAAc,sBAElEm3E,SAAQk9D,IACtBA,KAAQ42f,GAA4B,oBAAdA,EAAI52f,IAE5BssE,GAAKsqb,EAAK52f,GAAM,SAAUwsE,GACxB,MAAMywb,EAAc,CAClB7c,UAAW,CACTlplB,KAAM,CACJkqlB,SAAUphf,EACV4vD,QAASmb,GAAgByB,IAE3B6za,SAAS,EACTl8mB,KAAM,eAKJ8mZ,EAAmBq0N,GAAoB9ya,GAM7C,OALIy+M,IACFgyO,EAAY7c,UAAUlplB,KAAK04J,QAAUmb,GAAgBkgN,IAIhDhxI,GAAKztE,EAAUywb,EAChC,GACA,IACM,QAAAt4f,EAAAzuI,UAAAC,OA9BsC8tI,EAAI,IAAApxH,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJX,EAAIW,GAAA1uI,UAAA0uI,GAgC5C,OAAOmyf,EAAavjlB,MAAM7nD,KAAMs4I,EACpC,CACA,CAEA,SAAS84f,GAAiB/yiB,GAExB,MAAMkziB,EAAehf,GAEfxxa,EAAQwwb,EAAalziB,IAAWkziB,EAAalziB,GAAQsjE,UAGtDo/C,GAAUA,EAAMl5F,gBAAmBk5F,EAAMl5F,eAAe,sBAI7D84F,GAAKI,EAAO,oBAAoB,SAAUF,GAKxC,OAAO,SAGLypK,EACAhjO,EACArwE,GAEA,IACgC,oBAAnBqwE,EAAGkqf,cAOZlqf,EAAGkqf,YAAcljX,GAAKhnI,EAAGkqf,YAAa,CACpC/c,UAAW,CACTlplB,KAAM,CACJkqlB,SAAU,cACVxxb,QAASmb,GAAgB93D,GACzBjpD,UAEFq2hB,SAAS,EACTl8mB,KAAM,gBAIpB,CAAQ,MAAOvW,GACf,CAGM,OAAO4+M,EAASh5J,MAAM7nD,KAAM,CAC1BsqX,EAEAh8F,GAAKhnI,EAA8B,CACjCmte,UAAW,CACTlplB,KAAM,CACJkqlB,SAAU,mBACVxxb,QAASmb,GAAgB93D,GACzBjpD,UAEFq2hB,SAAS,EACTl8mB,KAAM,gBAGVy+D,GAER,CACA,IAEE0pI,GACEI,EACA,uBACA,SACEgpb,GAGA,OAAO,SAGLz/Q,EACAhjO,EACArwE,GAmBA,MAAMw6jB,EAAsBnqf,EAC5B,IACE,MAAMoqf,EAAuBD,GAAuBA,EAAoBhJ,mBACpEiJ,GACF3H,EAA4Bp2hB,KAAK3zG,KAAMsqX,EAAWonR,EAAsBz6jB,EAEpF,CAAU,MAAOh2E,IACjB,CAEQ,OAAO8ooB,EAA4Bp2hB,KAAK3zG,KAAMsqX,EAAWmnR,EAAqBx6jB,EACtF,CACA,IAEA,CC1QA,MAAM06jB,GAAmB,IAQzB,SAASC,GAAYlc,EAAkBh/X,EAAc63Y,EAAiBC,GACpE,MAAMjZ,EAAoB,CACxBG,WACAD,SAAU/+X,EACV84Y,QAAQ,GAWV,YARe7toB,IAAX4soB,IACFhZ,EAAMgZ,OAASA,QAGH5soB,IAAV6soB,IACFjZ,EAAMiZ,MAAQA,GAGTjZ,CACT,CAGA,MAAMsc,GACJ,6IACIC,GAAkB,gCAoClBC,GACJ,uIACIC,GAAiB,gDA+BjBC,GAAa,uFAiCNC,GAAqBhd,MAFK,CArEe,CAxD9B,GA6BuBxjb,IAC7C,MAAMzqL,EAAQ4qnB,GAAYp2Z,KAAK/pC,GAE/B,GAAIzqL,EAAO,CAGT,GAFeA,EAAM,IAAmC,IAA7BA,EAAM,GAAGsiF,QAAQ,QAEhC,CACV,MAAM4oiB,EAAWL,GAAgBr2Z,KAAKx0N,EAAM,IAExCkrnB,IAEFlrnB,EAAM,GAAKkrnB,EAAS,GACpBlrnB,EAAM,GAAKkrnB,EAAS,GACpBlrnB,EAAM,GAAKkrnB,EAAS,GAE5B,CAII,MAAOz7Y,EAAMg/X,GAAY0c,GAA8BnrnB,EAAM,IAAM0qnB,GAAkB1qnB,EAAM,IAE3F,OAAO2qnB,GAAYlc,EAAUh/X,EAAMzvO,EAAM,IAAMA,EAAM,QAAKtlB,EAAWslB,EAAM,IAAMA,EAAM,QAAKtlB,EAChG,CAEQ,GAuC6C,CA1F9B,GA+DU+vM,IAC/B,MAAMzqL,EAAQ8qnB,GAAWt2Z,KAAK/pC,GAE9B,GAAIzqL,EAAO,CAET,GADeA,EAAM,IAAMA,EAAM,GAAGsiF,QAAQ,YAAc,EAC9C,CACV,MAAM4oiB,EAAWH,GAAev2Z,KAAKx0N,EAAM,IAEvCkrnB,IAEFlrnB,EAAM,GAAKA,EAAM,IAAM,OACvBA,EAAM,GAAKkrnB,EAAS,GACpBlrnB,EAAM,GAAKkrnB,EAAS,GACpBlrnB,EAAM,GAAK,GAEnB,CAEI,IAAIyumB,EAAWzumB,EAAM,GACjByvO,EAAOzvO,EAAM,IAAM0qnB,GAGvB,OAFCj7Y,EAAMg/X,GAAY0c,GAA8B17Y,EAAMg/X,GAEhDkc,GAAYlc,EAAUh/X,EAAMzvO,EAAM,IAAMA,EAAM,QAAKtlB,EAAWslB,EAAM,IAAMA,EAAM,QAAKtlB,EAChG,CAEQ,GAe6C,CAvG9B,GA+FU+vM,IAC/B,MAAMzqL,EAAQgrnB,GAAWx2Z,KAAK/pC,GAE9B,OAAOzqL,EACH2qnB,GAAY3qnB,EAAM,GAAIA,EAAM,IAAM0qnB,IAAmB1qnB,EAAM,GAAIA,EAAM,IAAMA,EAAM,QAAKtlB,QACtFA,CAAS,KAgDTywoB,GAAgCA,CAAC17Y,EAAcg/X,KACnD,MAAM2c,GAA0D,IAAtC37Y,EAAKntJ,QAAQ,oBACjC+oiB,GAAiE,IAA1C57Y,EAAKntJ,QAAQ,wBAE1C,OAAO8oiB,GAAqBC,EACxB,EACyB,IAAvB57Y,EAAKntJ,QAAQ,KAAcmtJ,EAAKp8L,MAAM,KAAK,GAAKq3kB,GAChDU,EAAoB,oBAAoB3c,IAAS,wBAAAA,KAEA,CAAAh/X,EAAAg/X,EAAA,EChLlD,SAAS6c,GAAqB1uoB,GACnC,MAAMukD,EAAgC,GAYtC,SAAS6kO,EAAO13J,GACd,OAAOntE,EAAOo9D,OAAOp9D,EAAOmhD,QAAQgsB,GAAO,GAAG,EAClD,CAuEE,MAAO,CACLyrH,EAAG54L,EACH4kB,IA7DF,SAAawlkB,GACX,UAxBiB7woB,IAAVkC,GAAuBukD,EAAO59C,OAAS3G,GAyB5C,OAAOixnB,GAAoB,IAAI8L,GAAY,yDAI7C,MAAMrrgB,EAAOi9gB,IAcb,OAb8B,IAA1BpqlB,EAAOmhD,QAAQgsB,IACjBntE,EAAOsW,KAAK62D,GAETA,EACF1zH,MAAK,IAAMorR,EAAO13J,KAIlB1zH,KAAK,MAAM,IACVorR,EAAO13J,GAAM1zH,KAAK,MAAM,WAIrB0zH,CACX,EAyCIk9gB,MA9BF,SAAe7lmB,GACb,OAAO,IAAI61J,IAAqB,CAAC1iM,EAASgtC,KACxC,IAAI2lmB,EAAUtqlB,EAAO59C,OAErB,IAAKkooB,EACH,OAAO3yoB,GAAQ,GAIjB,MAAM4yoB,EAAqB1lmB,YAAW,KAChCL,GAAWA,EAAU,GACvB7sC,GAAQ,EAClB,GACS6sC,GAGHwb,EAAO+uB,SAAQ+E,IACR24iB,GAAoB34iB,GAAMr6E,MAAK,OAC3B6woB,IACLvlmB,aAAawlmB,GACb5yoB,GAAQ,GACpB,GACWgtC,EAAO,GACV,GAER,EAOA,CCxDgC,SAAA6lmB,GACA7uP,EAAAvzV,GAGA,IAFA,WAAA9kB,EAAA,QAAA7rC,GAAA2wD,EACAijC,EAAAlpF,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAAlJ,KAAAoyF,MAEA,MAAAo/iB,EAAA,IACA9uP,GAKA+uP,EAAAjzoB,GAAAA,EAAA,wBACAkzoB,EAAAlzoB,GAAAA,EAAA,eAEA,GAAAizoB,EAeA,UAAAjvoB,KAAAivoB,EAAA/wf,OAAAznF,MAAA,MACA,MAAA04kB,EAAAC,EAAA,EAAA/4S,GAAAr2V,EAAAy2D,MAAA,OACA44kB,EAAA9kmB,SAAA4kmB,EAAA,IACA5rX,EAAA,KAAA3/K,MAAAyriB,GAAA,GAAAA,GACA,GAAAD,EAGA,UAAArO,KAAAqO,EAAA34kB,MAAA,KACA,kBAAAsqkB,GAEA1qS,IAAAA,EAAA5/R,MAAA,KAAAn6B,SAAA,YAIA0ymB,EAAAjO,GAAAnxiB,EAAA2zL,QATAyrX,EAAApglB,IAAAghC,EAAA2zL,CAaA,MACA2rX,EACAF,EAAApglB,IAAAghC,EAtFzB,SAA+BjyF,GAAkD,IAAlCiyF,EAAGlpF,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAWlJ,KAAKoyF,MACvE,MAAMy/iB,EAAc9kmB,SAAS,GAAC5sC,IAAA,IACA,IAAAimG,MAAAyriB,GACA,WAAAA,EAGA,MAAAC,EAAA9xoB,KAAAgC,MAAA,GAAA7B,KACA,OAAAimG,MAAA0riB,GAfG,IAgBHA,EAAA1/iB,CAIA,CA0EA2/iB,CAAAL,EAAAt/iB,GACA,MAAA/nD,IACAmnmB,EAAApglB,IAAAghC,EAAA,KAGA,OAAAo/iB,CACA,CCrEzB,SAASQ,GACdp8jB,EACAq8jB,GAIW,IAHXlrlB,EAAM79C,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAuDgooB,GAC3Dt7jB,EAAQs8jB,YAZiC,IAevCC,EAAyB,CAAC,EAG9B,SAASh6hB,EAAKwlhB,GACZ,MAAMyU,EAAwC,GAc9C,GAXAvU,GAAoBF,GAAU,CAAC9ijB,EAAM1jE,KACnC,MAAMutnB,EAAetF,GAA+BjonB,GACpD,GDX0B,SAAAurY,EAAAgiP,GAAA,IAAAtyiB,EAAAlpF,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAAlJ,KAAAoyF,MACA,OARA,SAAAswT,EAAAgiP,GACA,OAAAhiP,EAAAgiP,IAAAhiP,EAAAtxV,KAAA,CACA,CAMAihlB,CAAA3vP,EAAAgiP,GAAAtyiB,CACA,CCStBkgjB,CAAcH,EAAYzN,GAAe,CAC3C,MAAMlshB,EAA2B+5hB,GAAwB13jB,EAAM1jE,GAC/Dy+D,EAAQ4lI,mBAAmB,oBAAqBkpb,EAAclshB,EACtE,MACQ45hB,EAAsB/0kB,KAAKwd,EACnC,IAIyC,IAAjCu3jB,EAAsBjpoB,OACxB,OAAOqqnB,KAIT,MAAMgf,EAA6B/U,GAAeE,EAAS,GAAIyU,GAGzDK,EAAsBp6kB,IAC1BwlkB,GAAoB2U,GAAkB,CAAC33jB,EAAM1jE,KAC3C,MAAMqhG,EAA2B+5hB,GAAwB13jB,EAAM1jE,GAC/Dy+D,EAAQ4lI,mBAAmBnjJ,EAAQ+mkB,GAA+BjonB,GAAOqhG,EAAM,GAC/E,EAoBJ,OAAOzxD,EAAO4kB,KAjBM+mkB,IAClBT,EAAY,CAAEnyoB,KAAMm+nB,GAAkBuU,EAAkB58jB,EAAQsjE,eAAgB14I,MAC9EqrC,SAE8BvrC,IAAxBurC,EAASxB,aAA6BwB,EAASxB,WAAa,KAAOwB,EAASxB,YAAc,MAC5Fm2J,IAAe2C,GAAOj2J,KAAK,qCAAqCrB,EAASxB,6BAG3E8nmB,EAAaZ,GAAiBY,EAAYtmmB,GACnCA,KAETmB,IAEE,MADAylmB,EAAmB,iBACbzlmB,CAAK,MAIcxsC,MAC7B88D,GAAUA,IACVtwB,IACE,GAAIA,aAAiBuylB,GAGnB,OAFA/+b,IAAe2C,GAAOn2J,MAAM,iDAC5BylmB,EAAmB,kBACZjf,KAEP,MAAMxmlB,CAChB,GAGA,CAME,OAFAmrE,EAAKw6hB,2BAA4B,EAE1B,CACLx6hB,OACA0tK,MArEat6O,GAA2Cwb,EAAOqqlB,MAAM7lmB,GAuEzE,CAEA,SAASgnmB,GAAwB13jB,EAA2B1jE,GAC1D,GAAa,UAATA,GAA6B,gBAATA,EAIxB,OAAO0O,MAAMC,QAAQ+0D,GAASA,EAAmB,QAAKv6E,CACxD,CCtHA,IAAIsyoB,GCMG,SAASC,GACdj9jB,GAEW,IADXk9jB,EAAW5poB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GDkCN,WACL,GAAI0poB,GACF,OAAOA,GAMT,GAAI5W,GAAc9K,GAAOtmlB,OACvB,OAAQgomB,GAAkB1hB,GAAOtmlB,MAAMy8C,KAAK6piB,IAG9C,MAAM7jgB,EAAW6jgB,GAAO7jgB,SACxB,IAAIruH,EAAYkynB,GAAOtmlB,MAEvB,GAAIyiF,GAA8C,oBAA3BA,EAASspI,cAC9B,IACE,MAAMwzY,EAAU98gB,EAASspI,cAAc,UACvCwzY,EAAQC,QAAS,EACjB/8gB,EAASnX,KAAKilJ,YAAYgvY,GAC1B,MAAM/vU,EAAgB+vU,EAAQ/vU,cAC1BA,GAAiBA,EAAcxvR,QACjC5rC,EAAYo7T,EAAcxvR,OAE5ByiF,EAASnX,KAAK2kJ,YAAYsvY,EAChC,CAAM,MAAOvqoB,IACP4gM,IAAe2C,GAAOj2J,KAAK,kFAAmFttC,GACpH,CAGE,OAAQgzoB,GAAkB5zoB,EAAUqoF,KAAK6piB,GAE3C,CClE2B6hB,GAErBC,EAAkB,EAClB/sS,EAAe,EA+CnB,OAAO+rS,GAAgBp8jB,GA7CvB,SAAqBzyE,GACnB,MAAM8voB,EAAc9voB,EAAQrD,KAAKqJ,OACjC6poB,GAAmBC,EACnBhtS,IAEA,MAAMkH,EAA8B,CAClCrtW,KAAMqD,EAAQrD,KACdyG,OAAQ,OACR2soB,eAAgB,SAChB10oB,QAASo3E,EAAQp3E,QAYjB20oB,UAAWH,GAAmB,KAAU/sS,EAAe,MACpDrwR,EAAQ82R,cAGb,IACE,OAAOomS,EAAYl9jB,EAAQrrC,IAAK4iU,GAAgB3sW,MAAKqrC,IACnDmnmB,GAAmBC,EACnBhtS,IACO,CACL57T,WAAYwB,EAASjZ,OACrBp0B,QAAS,CACP,uBAAwBqtC,EAASrtC,QAAQsuC,IAAI,wBAC7C,cAAejB,EAASrtC,QAAQsuC,IAAI,mBAIhD,CAAM,MAAOltC,IAIP,ODwBJgzoB,QAAkBtyoB,EC1Bd0yoB,GAAmBC,EACnBhtS,IACOwtR,GAAoB7znB,GACjC,CACA,GAGA,CC7CO,SAASwzoB,GAAiBx9jB,GA+B/B,OAAOo8jB,GAAgBp8jB,GA9BvB,SAAqBzyE,GACnB,OAAO,IAAIi+L,IAAY,CAAC1iM,EAASgtC,KAC/B,MAAMk+lB,EAAM,IAAI99R,eAEhB89R,EAAI1ve,QAAUxuH,EAEdk+lB,EAAIj8R,mBAAqB,KAZH,IAahBi8R,EAAI1gf,YACNxqJ,EAAQ,CACN2rC,WAAYu/lB,EAAIh3mB,OAChBp0B,QAAS,CACP,uBAAwBoroB,EAAIyJ,kBAAkB,wBAC9C,cAAezJ,EAAIyJ,kBAAkB,iBAGnD,EAGMzJ,EAAIt8R,KAAK,OAAQ13R,EAAQrrC,KAEzB,IAAK,MAAMpqC,KAAUy1E,EAAQp3E,QACvBU,OAAOohK,UAAU95C,eAAelU,KAAK18B,EAAQp3E,QAAS2B,IACxDypoB,EAAIp8R,iBAAiBrtW,EAAQy1E,EAAQp3E,QAAQ2B,IAIjDypoB,EAAIzxhB,KAAKh1G,EAAQrD,KAAK,GAE5B,GAGA,CCjBO,MAAM04nB,GAAsB,CACjCsB,KACAyB,KACAkU,KACA1E,KACAsC,KACAkC,KACAvD,KACAoC,MA0EK,SAAS3imB,KAAyC,IAApCmqC,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmB,CAAC,OACV5I,IAAhCs1E,EAAQ4ijB,sBACV5ijB,EAAQ4ijB,oBAtEH,IAEFA,UAsEmBl4nB,IAApBs1E,EAAQ2C,UAEwB,kBAAvB+6jB,qBACT19jB,EAAQ2C,QAAU+6jB,oBAIhBpiB,GAAOqiB,gBAAkBriB,GAAOqiB,eAAenroB,KACjDwtE,EAAQ2C,QAAU24iB,GAAOqiB,eAAenroB,UAGR9H,IAAhCs1E,EAAQ49jB,sBACV59jB,EAAQ49jB,qBAAsB,QAEElzoB,IAA9Bs1E,EAAQ6tjB,oBACV7tjB,EAAQ6tjB,mBAAoB,GAG9B,MAAMzJ,EAAsC,IACvCpkjB,EACHqgjB,azDtE8CA,EyDsECrgjB,EAAQqgjB,aAAe4a,GzDrEpEhrnB,MAAMC,QAAQmwmB,GACTpC,MAAqBoC,GAEvBA,GyDmEL51b,aAAck4b,GAAuB3ijB,GACrC8rjB,UAAW9rjB,EAAQ8rjB,YAAc5F,KAAkB+W,GAAqBO,KzDxErE,IAA2Cnd,EyD2EhDwF,GAAY8L,GAAevN,GAEvBpkjB,EAAQ49jB,qBA6Hd,WACE,GAA+B,qBAApBtiB,GAAO7jgB,SAEhB,YADAmzE,IAAe2C,GAAOj2J,KAAK,uFAQ7BygK,GAAa,CAAE9J,gBAAgB,IAC/B0J,KAGA2ub,IAAiC/skB,IAAkB,IAAjB,KAAE5jD,EAAI,GAAEC,GAAI2jD,OAE/B7uD,IAATiL,GAAsBA,IAASC,IACjCmiM,GAAa,CAAE9J,gBAAgB,IAC/B0J,KACN,GAEA,CAjJIkmc,EAEJ,iHClJA,MAAMviB,IAASlva,EAAAA,GAAAA,MAcR,SAASmva,GACdtzb,GAEQ,IADRjoH,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAiE,CAAC,EAEzE,IAAK20L,EACH,MAAO,YAOT,IACE,IAAIuzb,EAAcvzb,EAClB,MAAMwzb,EAAsB,EACtB53e,EAAM,GACZ,IAAIo2G,EAAS,EACTzpM,EAAM,EACV,MAAMq7F,EAAY,MACZ6ve,EAAY7ve,EAAUt4I,OAC5B,IAAIoonB,EACJ,MAAMC,EAAW3rmB,MAAMC,QAAQ8vD,GAAWA,EAAUA,EAAQ47iB,SACtDC,GAAoB5rmB,MAAMC,QAAQ8vD,IAAYA,EAAQ67iB,iBAlC9B,GAoC9B,KAAOL,GAAevhY,IAAWwhY,IAC/BE,EAAUG,GAAqBN,EAAaI,KAK5B,SAAZD,GAAuB1hY,EAAS,GAAKzpM,EAAMqzF,EAAItwI,OAASmonB,EAAYC,EAAQponB,QAAUsonB,KAI1Fh4e,EAAIp8E,KAAKk0jB,GAETnrkB,GAAOmrkB,EAAQponB,OACfionB,EAAcA,EAAY7nU,WAG5B,OAAO9vK,EAAI5hH,UAAUtW,KAAKkgI,EAC9B,CAAI,MAAOyrD,GACP,MAAO,WACX,CACA,CAOA,SAASwkb,GAAqBl5S,EAAag5S,GACzC,MAAM3zb,EAAO26I,EAOP/+L,EAAM,GACZ,IAAI0kE,EACAwza,EACA9vmB,EACA+vmB,EACAhrkB,EAEJ,IAAKi3I,IAASA,EAAKipI,QACjB,MAAO,GAIT,GAAIoqT,GAAOrvS,aAELhkJ,aAAgBgkJ,aAAehkJ,EAAK8yI,SAAW9yI,EAAK8yI,QAAyB,gBAC/E,OAAO9yI,EAAK8yI,QAAyB,gBAIzCl3L,EAAIp8E,KAAKwgI,EAAKipI,QAAQhhU,eAGtB,MAAM+rnB,EACJL,GAAYA,EAASronB,OACjBqonB,EAAStxnB,QAAO4xnB,GAAWj0b,EAAKm4D,aAAa87X,KAAU1ynB,KAAI0ynB,GAAW,CAACA,EAASj0b,EAAKm4D,aAAa87X,MAClG,KAEN,GAAID,GAAgBA,EAAa1onB,OAC/B0onB,EAAa/7iB,SAAQi8iB,IACnBt4e,EAAIp8E,KAAK,IAAI00jB,EAAY,OAAOA,EAAY,OAAO,SAS9B,GANnBl0b,EAAKz1L,IACPqxI,EAAIp8E,KAAK,IAAIwgI,EAAKz1L,MAIG+1M,EAAAtgB,EAAAsgB,UACAA,IAAAxB,EAAAA,GAAAA,IAAAwB,GAEA,IADAwza,EAAAxza,EAAAllJ,MAAA,OACArS,EAAA,EAAAA,EAAA+qkB,EAAAxonB,OAAAy9C,IACA6yF,EAAAp8E,KAAA,IAAAs0jB,EAAA/qkB,MAIA,MAAAorkB,EAAA,2CACA,IAAAprkB,EAAA,EAAAA,EAAAorkB,EAAA7onB,OAAAy9C,IACA/kC,EAAAmwmB,EAAAprkB,GACAgrkB,EAAA/zb,EAAAm4D,aAAAn0O,GACA+vmB,GACAn4e,EAAAp8E,KAAA,IAAAx7C,MAAA+vmB,OAGA,OAAAn4e,EAAAl4H,KAAA,GACA,CA4CA,SAAA8pnB,GAAAxtc,GAEA,IAAAqzb,GAAArvS,YACA,YAGA,IAAAuvS,EAAAvzb,EAEA,QAAAj3I,EAAA,EAAAA,EADG,EACHA,IAAA,CACA,IAAAwqkB,EACA,YAGA,GAAAA,aAAAvvS,aAAAuvS,EAAAzgT,QAAA,gBACA,OAAAygT,EAAAzgT,QAAA,gBAGAygT,EAAAA,EAAA7nU,UACA,CAEA,WACA,CC7LpB,MAAM/oH,GAAc,qBAAAC,kBAAAA,iCCLpB,MAAMywb,GAAStjb,GAAAA,mBCgBf,MAAM8lc,GAAeA,CAC1B97lB,EACAiplB,EACA8S,KAEA,IAAIC,EACAx6Z,EACJ,OAAQy6Z,IACFhT,EAAO3wmB,OAAS,IACd2jnB,GAAeF,KACjBv6Z,EAAQynZ,EAAO3wmB,OAAS0jnB,GAAa,IAMjCx6Z,QAAuB94O,IAAdszoB,KACXA,EAAY/S,EAAO3wmB,MACnB2wmB,EAAOznZ,MAAQA,EACfxhM,EAASiplB,IAGnB,CACG,ECDUiT,GAAqBA,IAC5B5iB,GAAO6iB,wBAEP7iB,GAAO3wa,cACLA,YAAYyzb,kBAAoBzzb,YAAYyzb,iBAAiB,cAAc,IAzBnCC,MAE9C,MAAM9yb,EAAS+va,GAAO3wa,YAAYY,OAE5BhqM,EAAO+5mB,GAAO3wa,YAAYimK,WAAWrvW,KAErC+8nB,EAAsD,CAC1DC,UAAW,aACXt/b,UAAW,EACX19L,KAAc,GAARA,EAAY,eAA0B,IAATA,EAAa,SAAW,YAG7D,IAAK,MAAM0K,KAAOs/L,EACJ,oBAARt/L,GAAqC,WAARA,IAE/BqynB,EAAgBrynB,GAAOokC,KAAK5B,IAAK88J,EAAOt/L,GAA6Cs/L,EAAOD,gBAAiB,IAGjH,OAAOgzb,CAAgB,EAQjBD,IAGG/iB,GAAO3wa,aAAeA,YAAYyzb,kBAAoBzzb,YAAYyzb,iBAAiB,cAAc,GC9B/FI,GAAqBA,KAChC,MAAMC,EAAWP,KACjB,OAAQO,GAAYA,EAASC,iBAAoB,CAAC,ECEvCC,GAAaA,CAAC5snB,EAAsBuI,KAC/C,MAAMmknB,EAAWP,KACjB,IAAIl0R,EAA2C,WAU/C,OARIy0R,IAEAz0R,EADGsxQ,GAAO7jgB,UAAY6jgB,GAAO7jgB,SAASmnhB,cAAiBJ,KAAuB,EAC7D,YAEAC,EAASl9nB,KAAKswC,QAAQ,KAAM,MAI1C,CACL9/B,OACAuI,MAAwB,qBAAVA,GAAyB,EAAIA,EAC3CuknB,OAAQ,OACRr7Z,MAAO,EACPlqL,QAAS,GACT9mD,GClBK,MAAMpI,KAAKoyF,SAASnsC,KAAKyiE,MAAkB,cAAZziE,KAAK+lC,UAAyB,ODmBlE4zR,iBACD,EEDU6lD,GAAUA,CACrBtuZ,EACAygC,EACAgjH,KAEA,IACE,GAAI85e,oBAAoBC,oBAAoB71mB,SAAS3nB,GAAO,CAC1D,MAAMy9nB,EAAK,IAAIF,qBAAoBtwS,IACjCxsT,EAASwsT,EAAKi6F,aAAuC,IAWvD,OATAu2M,EAAGnvO,QACDvma,OAAO8sC,OACL,CACE70B,OACA09nB,UAAU,GAEZj6e,GAAQ,CAAC,IAGNg6e,CACb,CACA,CAAI,MAAOh1oB,IACX,CAEQ,EC3CKk1oB,GAAWA,CAACjxV,EAAsBt4B,KAC7C,MAAMwpX,EAAsBv8hB,IACP,aAAfA,EAAMrhG,MAA4D,WAArC+5mB,GAAO7jgB,SAAUq4U,kBAChD7hJ,EAAGrrM,GACC+yK,IACFi/B,oBAAoB,mBAAoBuqV,GAAoB,GAC5DvqV,oBAAoB,WAAYuqV,GAAoB,IAE5D,EAGM7jB,GAAO7jgB,WACT1T,iBAAiB,mBAAoBo7hB,GAAoB,GAGzDp7hB,iBAAiB,WAAYo7hB,GAAoB,GACrD,ECnBA,IAAIC,IAAmB,EAEvB,MAeaC,GAAuBA,KAG9BD,GAAkB,IAflB9jB,GAAO7jgB,UAAY6jgB,GAAO7jgB,SAASq4U,kBACrCsvM,GAAsD,WAApC9jB,GAAO7jgB,SAASq4U,iBAAiCwrL,GAAO7jgB,SAASmnhB,aAAmB9pb,IAAJ,GAMpGoqb,IAAS3llB,IAAmB,IAAlB,UAAEqjQ,GAAWrjQ,EACrB6llB,GAAkBxiV,CAAS,IAC1B,IAcI,CACL,mBAAIwiV,GACF,OAAOA,EACb,ICzBA,IAAIE,GAA2B,EAC3BC,GAAwBzqb,IACxB0qb,GAAwB,EAE5B,MAAMC,GAAkBnmlB,IACrBA,EAAqC4mB,SAAQl2E,IACxCA,EAAE01oB,gBACJH,GAAwBlvlB,KAAK7B,IAAI+wlB,GAAuBv1oB,EAAE01oB,eAC1DF,GAAwBnvlB,KAAK5B,IAAI+wlB,GAAuBx1oB,EAAE01oB,eAE1DJ,GAA2BE,IAAyBA,GAAwBD,IAAyB,EAAI,EAAI,EACnH,GACI,EAGJ,IAAIP,GAMS,MCZPW,GAAmCA,IDahCX,GAAKM,GAA2B30b,YAAYi1b,kBAAoB,ECHnEC,GAAwC,GAIxCC,GAAkE,CAAC,EAQnEC,GAAgB/6jB,IAEpB,MAAMg7jB,EAAwBH,GAAuBA,GAAuBtsoB,OAAS,GAG/E0soB,EAAsBH,GAAsB96jB,EAAM06jB,eAIxD,GACEO,GACAJ,GAAuBtsoB,OA3BU,IA4BjCyxE,EAAM30E,SAAW2voB,EAAsBE,QACvC,CAEA,GAAID,EACFA,EAAoB3mlB,QAAQmO,KAAKud,GACjCi7jB,EAAoBC,QAAU7vlB,KAAK5B,IAAIwxlB,EAAoBC,QAASl7jB,EAAM30E,cACrE,CACL,MAAM8voB,EAAc,CAElB3toB,GAAIwyE,EAAM06jB,cACVQ,QAASl7jB,EAAM30E,SACfipD,QAAS,CAAC0rB,IAEZ86jB,GAAsBK,EAAY3toB,IAAM2toB,EACxCN,GAAuBp4kB,KAAK04kB,EAClC,CAGIN,GAAuB3+nB,MAAK,CAACqwC,EAAGyjB,IAAMA,EAAEkrkB,QAAU3ulB,EAAE2ulB,UACpDL,GAAuBtxhB,OA/CU,IA+C2BruC,SAAQlvB,WAE3D8ulB,GAAsB9ulB,EAAEx+C,GAAG,GAExC,GA2Ca4toB,GAAQA,CAACC,EAA0Br7e,KAG9CA,EAAOA,GAAQ,CAAC,EDnFZ,qBAAsB2lD,aAAeq0b,KAEzCA,GAAKnvO,GAAQ,QAAS4vO,GAAgB,CACpCl+nB,KAAM,QACN09nB,UAAU,EACVqB,kBAAmB,KCsFrB,MAAMrV,EAAS0T,GAAW,OAE1B,IAAItvG,EAEJ,MAAMkxG,EAAiBjnlB,IACrBA,EAAQ4mB,SAAQ8E,IAad,GAZIA,EAAM06jB,eACRK,GAAa/6jB,GAWS,gBAApBA,EAAMu5jB,UAA6B,EACZsB,GAAuBrqkB,MAAK2qkB,GAC5CA,EAAY7mlB,QAAQkc,MAAKgrkB,GACvBx7jB,EAAM30E,WAAamwoB,EAAUnwoB,UAAY20E,EAAMi6H,YAAcuhc,EAAUvhc,eAIhF8gc,GAAa/6jB,EAEvB,KAGI,MAAMk3N,EA7E4BukW,MACpC,MAAMC,EAA4BrwlB,KAAK7B,IACrCqxlB,GAAuBtsoB,OAAS,EAChC88C,KAAKyiE,MAAM6shB,KAAqC,KAGlD,OAAOE,GAAuBa,EAA0B,EAuE1CD,GAERvkW,GAAOA,EAAIgkW,UAAYjV,EAAO3wmB,QAChC2wmB,EAAO3wmB,MAAQ4hR,EAAIgkW,QACnBjV,EAAO3xkB,QAAU4iP,EAAI5iP,QACrB+1e,IACN,EAGQ2vG,EAAKnvO,GAAQ,QAAS0wO,EAAe,CAOzCD,kBAAmBt7e,EAAKs7e,mBAAqB,KAG/CjxG,EAASyuG,GAAauC,EAAUpV,EAAQjme,EAAK+4e,kBAEzCiB,IAGFA,EAAGnvO,QAAQ,CAAEtuZ,KAAM,cAAe09nB,UAAU,IAE5CC,IAAS,KACPqB,EAAcvB,EAAG2B,eAIb1V,EAAO3wmB,MAAQ,GAAKqlnB,KAAqC,IAC3D1U,EAAO3wmB,MAAQ,EACf2wmB,EAAO3xkB,QAAU,IAGnB+1e,GAAO,EAAK,IAElB,EC5LMuxG,GAA6C,CAAC,ECG9CC,GAAa7+lB,IACZs5kB,GAAO7jgB,WAIR6jgB,GAAO7jgB,SAASmnhB,aAClB76hB,iBAAiB,sBAAsB,IAAM88hB,GAAU7+lB,KAAW,GAC1B,aAA/Bs5kB,GAAO7jgB,SAAS67B,WACzBvvC,iBAAiB,QAAQ,IAAM88hB,GAAU7+lB,KAAW,GAGpDhM,WAAWgM,EAAU,GACzB,EC0DM+lK,GAA6E,CAAC,EAC9EC,GAA6D,CAAC,EAEpE,IAAI84b,GACAC,GACAC,GACAC,GACAC,GAqEG,SAASC,GACd5/nB,EACAygC,GASA,OAPAo5J,GAAW75L,EAAMygC,GAEZgmK,GAAazmM,MAoGpB,SAAuCA,GACrC,MAAMy+D,EAAmC,CAAC,EAG7B,UAATz+D,IACFy+D,EAAQsgkB,kBAAoB,GAG9BzwO,GACEtuZ,GACA+3C,IACEshJ,GAAgBr5L,EAAM,CAAE+3C,WAAU,GAEpC0mB,EAEJ,CAlHIohkB,CAA8B7/nB,GAC9BymM,GAAazmM,IAAQ,GAGhB8/nB,GAAmB9/nB,EAAMygC,EAClC,CAGA,SAAS44J,GAAgBr5L,EAA6B+yB,GACpD,MAAM4zK,EAAeH,GAASxmM,GAE9B,GAAK2mM,GAAiBA,EAAa30M,OAInC,IAAK,MAAMy5L,KAAWkb,EACpB,IACElb,EAAQ14J,EACd,CAAM,MAAOtqC,IACP4gM,IACE2C,GAAAA,GAAOn2J,MACL,0DAA0D71B,aAAe4mM,EAAAA,GAAAA,IAAgBnb,aACzFhjM,GAEV,CAEA,CAEA,SAASs3oB,KACP,OCvKmB,SACnBjB,GAE8B,IAD9BrgkB,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAmC,CAAC,EAE3C,MAAM23nB,EAAS0T,GAAW,MAAO,GACjC,IAAItvG,EAEAkyG,EAAe,EACfC,EAAqC,GAGzC,MAAMjB,EAAiBjnlB,IACrBA,EAAQ4mB,SAAQ8E,IAEd,IAAKA,EAAMy8jB,eAAgB,CACzB,MAAMC,EAAoBF,EAAe,GACnCG,EAAmBH,EAAeA,EAAejuoB,OAAS,GAM9DguoB,GAC0B,IAA1BC,EAAejuoB,QACfyxE,EAAMi6H,UAAY0ic,EAAiB1ic,UAAY,KAC/Cj6H,EAAMi6H,UAAYyic,EAAkBzic,UAAY,KAEhDsic,GAAgBv8jB,EAAM1qD,MACtBknnB,EAAe/5kB,KAAKud,KAEpBu8jB,EAAev8jB,EAAM1qD,MACrBknnB,EAAiB,CAACx8jB,IAKhBu8jB,EAAetW,EAAO3wmB,QACxB2wmB,EAAO3wmB,MAAQinnB,EACftW,EAAO3xkB,QAAUkolB,EACbnyG,GACFA,IAGZ,IACM,EAGE2vG,EAAKnvO,GAAQ,eAAgB0wO,GACnC,GAAIvB,EAAI,CACN3vG,EAASyuG,GAAauC,EAAUpV,EAAQjrjB,EAAQ+9jB,kBAEhD,MAAM6D,EAAgBA,KACpBrB,EAAcvB,EAAG2B,eACjBtxG,GAAO,EAAK,EAKd,OAFA6vG,GAAS0C,GAEFA,CACX,CAGA,CDyGSC,EACL5W,IACErwb,GAAgB,MAAO,CACrBqwb,WAEF6V,GAAe7V,CAAM,GAEvB,CAAE8S,kBAAkB,GAExB,CAEA,SAAS+D,KACP,ME9LoBzB,KACpB,MAAM0B,EAAoB1C,KACpBpU,EAAS0T,GAAW,OAE1B,IAAItvG,EAEJ,MAAM2yG,EAAeh9jB,IAEfA,EAAMi6H,UAAY8ic,EAAkB3C,kBACtCnU,EAAO3wmB,MAAQ0qD,EAAMi9jB,gBAAkBj9jB,EAAMi6H,UAC7Cgsb,EAAO3xkB,QAAQmO,KAAKud,GACpBqqd,GAAO,GACb,EAGQkxG,EAAiBjnlB,IACpBA,EAAqC4mB,QAAQ8hkB,EAAY,EAGtDhD,EAAKnvO,GAAQ,cAAe0wO,GAClClxG,EAASyuG,GAAauC,EAAUpV,GAE5B+T,GACFE,IAAS,KACPqB,EAAcvB,EAAG2B,eACjB3B,EAAGkD,YAAY,IACd,EACP,EFmKSC,EAAMlX,IACXrwb,GAAgB,MAAO,CACrBqwb,WAEF8V,GAAe9V,CAAM,GAEzB,CAEA,SAASmX,KACP,MFtMoB/B,KACpB,MAAM0B,EAAoB1C,KACpBpU,EAAS0T,GAAW,OAC1B,IAAItvG,EAEJ,MAAMkxG,EAAiBjnlB,IACrB,MAAM+olB,EAAY/olB,EAAQA,EAAQ/lD,OAAS,GAC3C,GAAI8uoB,EAAW,CAKb,MAAM/nnB,EAAQ+1B,KAAK5B,IAAI4zlB,EAAUpjc,UAAYu/b,KAAsB,GAG/DlknB,EAAQynnB,EAAkB3C,kBAC5BnU,EAAO3wmB,MAAQA,EACf2wmB,EAAO3xkB,QAAU,CAAC+olB,GAClBhzG,IAER,GAGQ2vG,EAAKnvO,GAAQ,2BAA4B0wO,GAE/C,GAAIvB,EAAI,CACN3vG,EAASyuG,GAAauC,EAAUpV,GAEhC,MAAM2W,EAAgBA,KACfhB,GAAkB3V,EAAOz4nB,MAC5B+toB,EAAcvB,EAAG2B,eACjB3B,EAAGkD,aACHtB,GAAkB3V,EAAOz4nB,KAAM,EAC/B68hB,GAAO,GACf,EAcI,MARA,CAAC,UAAW,SAASnvd,SAAQ3+D,IACvB+5mB,GAAO7jgB,UACT1T,iBAAiBxiG,EAAMqgoB,EAAe,CAAEjsX,MAAM,EAAMsyC,SAAS,GACrE,IAGIi3U,GAAS0C,GAAe,GAEjBA,CACX,CAEQ,EEmJCU,EAAMrX,IACXrwb,GAAgB,MAAO,CACrBqwb,WAEF+V,GAAe/V,CAAM,GAEzB,CAEA,SAASsX,KACP,MDtLoBC,EAACnC,EAA0Br7e,KAG/CA,EAAOA,GAAQ,CAAC,EAKhB,MAAMime,EAAS0T,GAAW,QACpBtvG,EAASyuG,GAAauC,EAAUpV,EAAQjme,EAAK+4e,kBAEnD8C,IAAU,KACR,MAAMpC,EAAWP,KAEjB,GAAIO,EAAU,CAWZ,GANAxT,EAAO3wmB,MAAQ+1B,KAAK5B,IAAIgwlB,EAASgE,cAAgBjE,KAAsB,GAMnEvT,EAAO3wmB,MAAQ,GAAK2wmB,EAAO3wmB,MAAQqwL,YAAYnuH,MAAO,OAE1DyuiB,EAAO3xkB,QAAU,CAACmllB,GAElBpvG,GAAO,EACb,IACI,ECuJKmzG,EAAOvX,IACZrwb,GAAgB,OAAQ,CACtBqwb,WAEFgW,GAAgBhW,CAAM,GAE1B,CAEA,SAASyX,KACP,OAAOtC,IAAMnV,IACXrwb,GAAgB,MAAO,CACrBqwb,WAEFiW,GAAejW,CAAM,GAEzB,CAEA,SAAS0X,GACPphoB,EACAygC,EACAimK,EACAgG,GAEwB,IAGpB2zb,EAJJgB,EAAAtvoB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAeA,OAbA8nM,GAAW75L,EAAMygC,GAIZgmK,GAAazmM,KAChBqgoB,EAAgB35b,IAChBD,GAAazmM,IAAQ,GAGnB0sM,GACFjsK,EAAS,CAAEiplB,OAAQh9a,IAGdozb,GAAmB9/nB,EAAMygC,EAAU4gmB,EAAiBhB,OAAgBl3oB,EAC7E,CAmBA,SAAS0wM,GAAW75L,EAA6ByrL,GAC/C+a,GAASxmM,GAAQwmM,GAASxmM,IAAS,GAClCwmM,GAASxmM,GAAsCkmD,KAAKulI,EACvD,CAGA,SAASq0c,GACP9/nB,EACAygC,EACA4/lB,GAEA,MAAO,KACDA,GACFA,IAGF,MAAM15b,EAAeH,GAASxmM,GAE9B,IAAK2mM,EACH,OAGF,MAAMn4H,EAAQm4H,EAAa51G,QAAQtwD,IACpB,IAAX+tC,GACFm4H,EAAa35F,OAAOx+B,EAAO,EACjC,CAEA,iBGhTA,SAAS8yjB,GAAe/zc,GAItB,MAAO,CAH0B,CAC/BvtL,KAAM,QAEautL,EACvB,uCCTO,SAAS4kc,GAAS/+lB,GACvB,IAAKA,EACH,MAAO,CAAC,EAGV,MAAMqwB,EAAQrwB,EAAIqwB,MAAM,gEAExB,IAAKA,EACH,MAAO,CAAC,EAIV,MAAMmuV,EAAQnuV,EAAM,IAAM,GACpB0lV,EAAW1lV,EAAM,IAAM,GAC7B,MAAO,CACL97D,KAAM87D,EAAM,GACZp0D,KAAMo0D,EAAM,GACZqqT,SAAUrqT,EAAM,GAChB00L,OAAQy5J,EACR7wU,KAAMooU,EACN3hC,SAAU/jT,EAAM,GAAKmuV,EAAQzI,EAEjC,CAQO,SAASo4P,GAAyBC,GAEvC,OAAOA,EAAQ1/kB,MAAM,QAAS,GAAG,EACnC,CAKO,SAAS2/kB,GAAuBrumB,GAErC,OAAOA,EAAI0uB,MAAM,SAAS/4D,QAAOwmD,GAAKA,EAAEv9C,OAAS,GAAW,MAANu9C,IAAWv9C,MACnE,CCnDO,SAAS0voB,GAAmB3onB,GACjC,MAAwB,kBAAVA,GAAsB05O,SAAS15O,EAC/C,CAUO,SAAS4onB,GAAY1zc,EAAWj2I,GAA8D,IAA/C,eAAEunJ,KAAmB6D,GAAKprJ,EAQ9E,OANIunJ,GAAkBtR,EAAYsR,eAAiBA,IAEjDtR,EAAYsR,eAAiBA,GAIxBtR,EAAYyS,WAAW,CAC5BnB,oBACG6D,GAEP,CCWA,SAASw+b,GAAQ53a,GACf,OAAOA,EAAO,GAChB,CAEA,SAAS63a,KAEP,OAAO9nB,IAAUA,GAAOv3gB,kBAAoBu3gB,GAAO3wa,WACrD,CAEA,IAGI04b,GACAC,GAJAC,GAA6B,EAE7B7hc,GAA8B,CAAC,EAU5B,SAAS8hc,KACd,MAAM74b,EAAcy4b,KACpB,GAAIz4b,GAAeK,GAAAA,GAA8B,CAE3CL,EAAY84b,MACdnoB,GAAO3wa,YAAY84b,KAAK,uBAE1B,MAAMC,EA8HiC,WACA,ONlDE1hmB,EMkDFihB,IAAA,WAAAgokB,GAAAhokB,EACA,MAAA+hB,EAAAimjB,EAAA3xkB,QAAA2xkB,EAAA3xkB,QAAA/lD,OAAA,GACA,IAAAyxE,EACA,OAGA,MAAA6lI,EAAAs4b,GAAAn4b,GAAAA,IACA/L,EAAAkkc,GAAAn+jB,EAAAi6H,WACArU,IAAA2C,GAAAA,GAAAlnI,IAAA,6BACAq7I,GAAA,KAAApnL,MAAA2wmB,EAAA3wmB,MAAAiyF,KAAA,eACAm1F,GAAA,aAAApnL,MAAAuwL,EAAA5L,EAAA1yF,KAAA,WN3DlCo2hB,GAAkB,MAAO3gmB,EAAU8/lB,GAAef,IADpD,IAAsC/+lB,CM8DF,CA3InB2hmB,GACdC,EN4CH,SACL5hmB,GAGA,OAAO2gmB,GAAkB,MAAO3gmB,EAAUs/lB,GAAeR,GAFzDxtoB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAGF,CMiD2CuwoB,EAAAnhlB,IAAA,WAAAuokB,GAAAvokB,EACA,MAAAsiB,EAAAimjB,EAAA3xkB,QAAA2xkB,EAAA3xkB,QAAA/lD,OAAA,GACAyxE,IAIA4lH,IAAA2C,GAAAA,GAAAlnI,IAAA,6BACAq7I,GAAA,KAAApnL,MAAA2wmB,EAAA3wmB,MAAAiyF,KAAA,IACA+2hB,GAAAt+jB,EAAA,IACA,GA1GjC8+jB,ENyDH,SACL9hmB,GAGA,OAAO2gmB,GAAkB,MAAO3gmB,EAAUogmB,GAAepB,GAFzD1toB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAGF,CMiD2CywoB,EAAAnhlB,IAAA,WAAAqokB,GAAArokB,EACA,MAAAoiB,EAAAimjB,EAAA3xkB,QAAA2xkB,EAAA3xkB,QAAA/lD,OAAA,GACAyxE,IAIA4lH,IAAA2C,GAAAA,GAAAlnI,IAAA,6BACAq7I,GAAA,KAAApnL,MAAA2wmB,EAAA3wmB,MAAAiyF,KAAA,eACA82hB,GAAAr+jB,EAAA,IACA,GAvHjCg/jB,EA0IiC,WACA,ONzEGhimB,EMyEH61B,IAAA,WAAAozjB,GAAApzjB,EACAozjB,EAAA3xkB,QAAA2xkB,EAAA3xkB,QAAA/lD,OAAA,KAKAq3L,IAAA2C,GAAAA,GAAAlnI,IAAA,8BACAq7I,GAAA,MAAApnL,MAAA2wmB,EAAA3wmB,MAAAiyF,KAAA,iBN/ElCo2hB,GAAkB,OAAQ3gmB,EAAUugmB,GAAgBtB,IADtD,IAAuCj/lB,CMkFH,CApJlBiimB,GAErB,MAAO,KACLP,IACAE,IACAE,IACAE,GAAc,CAEpB,CAEE,MAAO,KAAe,CACxB,CAmE2C,SAAAE,GACAC,EACAC,GAGA,GADAhB,MACAp4b,GAAAA,GAAA,CACA,MAAAq5b,EAgGA,SACAC,EACAF,GAEA,ONrGzCpimB,EMqGyCk7B,IAAA,WAAA+tjB,GAAA/tjB,EACA,QAAAxyE,IAAAugoB,EAAA3wmB,MACA,OAEA,MAAA0qD,EAAAimjB,EAAA3xkB,QAAA9jB,MACAwvC,GAAAA,EAAA30E,WAAA46nB,EAAA3wmB,YAAA5vB,IAAA65oB,GAAAv/jB,EAAAjzD,QAEA8/K,GAAAzG,EAAAA,GAAAA,MACA,IAAApmH,IAAA6sH,EACA,OAEA,MAAA2yc,EAAAD,GAAAv/jB,EAAAjzD,MACAiuD,EAAA6xH,EAAA+E,aAEAqI,EAAAkkc,GAAAn4b,GAAAA,GAAAhmI,EAAAi6H,WACA5uM,EAAA8yoB,GAAAlY,EAAA3wmB,OACA6lnB,OACAz1oB,IAAAs6E,EAAA06jB,cAAA4E,EAAAt/jB,EAAA06jB,oBAAAh1oB,EACA,QAAAA,IAAAy1oB,EACA,OAEA,gBAAAsE,EAAA,cAAA9rB,EAAA,kBAAAl9a,EAAA,KAAAt+F,EAAA,SAAAuniB,GAAAvE,EACAwE,OAAAj6oB,IAAAyyG,EAAAA,EAAA5pE,OAAA4pE,EAAA3qG,IAAA2qG,EAAAqxF,gBAAA9jM,EAEAk6oB,OAAAl6oB,IAAA+wM,EAAAA,EAAAkK,oBAAAj7M,EACAokM,EAAA,IAAA4R,GAAAA,EAAA,CACAI,eAAA7B,EACAR,aAAAQ,EAAA5uM,EACAuuM,GAAA,kBAAA4lc,IACAzynB,KAAAwpmB,GAAAv2iB,EAAAoiB,QACAi1G,WAAA,CACA15H,QAAA3C,EAAA2C,QACA4rH,YAAAvuH,EAAAuuH,YACAiB,YAAAi1c,UACA/5oB,IAAAi6oB,GAAA,KAAAA,EAAA,CAAAxniB,KAAAwniB,GAAA,WACAj6oB,IAAAk6oB,EAAA,CAAAxhc,WAAAwhc,GAAA,WACAl6oB,IAAAg6oB,EAAA,CAAAG,UAAAH,GAAA,IAEAljc,cAAAypb,EAAA3wmB,MACAqnL,aAAA,CACAu6F,IAAA,CAAA5hR,MAAA2wmB,EAAA3wmB,MAAAiyF,KAAA,kBAKAytF,EA8YA,SACA8B,EACA97H,EACAokkB,GAEA,KAAAhkc,EAAAA,GAAAA,GAAApgI,GACA,SAEA,IAAAg6H,EAoBA,OAlBAA,OADAtvM,IAAAoxM,GAAA,oBAAA97H,EAAAqgI,cACArgI,EAAAqgI,cAAA,CACAvE,qBACA/pL,KAAA+pL,EAAA/pL,KACAqqL,cAAAN,EAAAM,cACAC,WAAA,IAEAP,EAAAxnK,QACAwnK,EAAAO,YAEAv6F,SAAAw5gB,GAAAx5gB,gBAEAp3G,IAAAoxM,QAAApxM,IAAAoxM,EAAAzB,QACAyB,EAAAzB,QACA,qBAAAr6H,EAAAsgI,iBACAtgI,EAAAsgI,iBAEA,GAEAC,EAAAA,GAAAA,GAAAvG,IAIA,IAAAA,EACAoqc,GACA,IAAApqc,EACA,EAEAA,EAAAoqc,GARAx5c,IAAA2C,GAAAA,GAAAj2J,KAAA,0EACA,EAQA,CApbAwtmB,CAAAnsB,EAAA34iB,EAAAokkB,GAEA,GAAApqc,GAIA3pJ,KAAA+lC,SAAA4jH,EAAA,CACA,MAAA+tb,EAAAj5b,EH7SpC,SAA4BiQ,EAAeqob,GAChD,MAAMx+nB,EAA2B,CAC/B+hoB,SAAS,IAAIvgoB,MAAO+jM,eAQtB,OALIi5b,IACFx+nB,EAAQw+nB,IIQL,SAAqBA,GAA2D,IAAvC3yd,EAAYnhK,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAC1D,MAAM,KAAEpK,EAAI,KAAE0H,EAAI,KAAE04a,EAAI,KAAElrC,EAAI,UAAEipP,EAAS,SAAEh4Q,EAAQ,UAAE/rU,GAAc8jlB,EACnE,MACE,GAAC/3Q,OAAA/rU,IAAAmxH,GAAA60Q,EAAA,IAAAA,IAAA,MACApgb,IAAAk1Y,EAAA,IAAAA,IAAA,MAAAxtY,EAAA,GAAAA,KAAAA,IAAAy2nB,GAEA,CJdaF,CAAYC,IKYvB,SAA4Cx+nB,GACjD,MAAO,CAACA,EAD6D0K,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAS,GAEhF,CLVSu0nB,CAA6Bj/nB,EADtBm2M,EAAMv1M,IAAIq5oB,IAE1B,CGkS2CkC,CAAA,CAAAj2c,GAAA+C,EAAA6H,eAAAhvM,EACAohoB,EAAAj6b,GAAAA,EAAA26b,eACAV,GAAA/D,GACA+D,EAAAvphB,KAAAwlhB,GAAAn9nB,KAAA,MAAA63D,IACAmoI,IAAA2C,GAAAA,GAAAn2J,MAAA,mCAAAqrB,EAAA,GAIA,GN/JlCkglB,GAAkB,MAAO3gmB,EAAU0gmB,GAAexB,IAHpD,IACLl/lB,CMmKyC,CAlKAgjmB,CAAAb,EAAAC,GAEA,WACAC,GAAA,CAEA,CAEA,YACA,CA0DA,MAAAE,GAAA,CACA5gR,MAAA,QACAshR,YAAA,QACAC,UAAA,QACAC,UAAA,QACAC,QAAA,QACAC,WAAA,QACAC,SAAA,QACAC,UAAA,QACAC,SAAA,QACAC,WAAA,QACAC,WAAA,QACAC,YAAA,QACAC,WAAA,QACAC,aAAA,QACAC,aAAA,QACAC,UAAA,OACAC,QAAA,OACAC,KAAA,OACAC,UAAA,OACAC,UAAA,OACAC,SAAA,OACAzxX,KAAA,OACA0xX,QAAA,QACAC,MAAA,QACAC,SAAA,QACAnsf,MAAA,SAyEA,SAAAosf,GAAAh3c,GACA,MAAAmb,EAAAy4b,KACA,IAAAz4b,IAAA2wa,GAAA3wa,YAAA89O,aAAAz9O,GAAAA,GAEA,OAGApgB,IAAA2C,GAAAA,GAAAlnI,IAAA,4DACA,MAAAwkJ,EAAAs4b,GAAAn4b,GAAAA,IAEAy7b,EAAA97b,EAAA89O,cAEA,GAAA7pP,EAAAI,gBAAA0nc,IAAA12c,EAAAA,GAAAA,IAAAR,GAmDA,GAhDAi3c,EAAAp1lB,MAAAkylB,IAAArjkB,SAAA8E,IACA,MAAAi6H,EAAAkkc,GAAAn+jB,EAAAi6H,WACA5uM,EAAA8yoB,GAAAn+jB,EAAA30E,UAGA,oBAAAm/L,EAAAoP,IAAA8nc,GAAA77b,EAAA5L,EAAAync,GAIA,OAAA1hkB,EAAAu5jB,WACA,kBAqHA,SAAA/uc,EAAAxqH,EAAA6lI,GACA,yEAAA3qI,SAAA0iC,IACA+jiB,GAAAn3c,EAAAxqH,EAAA49B,EAAAioG,EAAA,IAEA87b,GAAAn3c,EAAAxqH,EAAA,mBAAA6lI,EAAA,wBACA87b,GAAAn3c,EAAAxqH,EAAA,QAAA6lI,EAAA,6BACA87b,GAAAn3c,EAAAxqH,EAAA,eAAA6lI,EAAA,OA8BA,SAAArb,EAAAxqH,EAAA6lI,GACA7lI,EAAA4hkB,cAKA1D,GAAA1zc,EAAA,CACAoP,GAAA,UACAqC,OAAA,+BACArsB,YAAA,UACAksB,eAAA+J,EAAAs4b,GAAAn+jB,EAAA6hkB,cACApoc,aAAAoM,EAAAs4b,GAAAn+jB,EAAA4hkB,eAGA1D,GAAA1zc,EAAA,CACAoP,GAAA,UACAqC,OAAA,+BACArsB,YAAA,WACAksB,eAAA+J,EAAAs4b,GAAAn+jB,EAAAy9jB,eACAhkc,aAAAoM,EAAAs4b,GAAAn+jB,EAAA4hkB,eAGA,CAnDAE,CAAAt3c,EAAAxqH,EAAA6lI,EACA,CA5HAk8b,CAAAv3c,EAAAxqH,EAAA6lI,GACA,MAEA,WACA,YACA,gBAuFA,SACArb,EAEAxqH,EACAi6H,EACA5uM,EACAw6M,GAEA,MAAAm8b,EAAAn8b,EAAA5L,EACAgoc,EAAAD,EAAA32oB,EAEA6yoB,GAAA1zc,EAAA,CACA5a,YAAA5vG,EAAAjzD,KACA0sL,aAAAwoc,EACAroc,GAAA55H,EAAAu5jB,UACAt9b,OAAA,gCACAH,eAAAkmc,GAIA,CA1GAE,CAAA13c,EAAAxqH,EAAAi6H,EAAA5uM,EAAAw6M,GAGA,MAAAs8b,EAAA9H,KAEA+H,EAAApikB,EAAAi6H,UAAAkoc,EAAA/H,gBAEA,gBAAAp6jB,EAAAjzD,MAAAq1nB,IACAx8c,IAAA2C,GAAAA,GAAAlnI,IAAA,4BACAq7I,GAAA,IAAApnL,MAAA0qD,EAAAi6H,UAAA1yF,KAAA,gBAEA,2BAAAvnC,EAAAjzD,MAAAq1nB,IACAx8c,IAAA2C,GAAAA,GAAAlnI,IAAA,6BACAq7I,GAAA,KAAApnL,MAAA0qD,EAAAi6H,UAAA1yF,KAAA,gBAEA,KACA,CACA,gBAkKA,SACAijF,EACAxqH,EACAqikB,EACApoc,EACA5uM,EACAw6M,GAIA,sBAAA7lI,EAAAsikB,eAAA,UAAAtikB,EAAAsikB,cACA,OAGA,MAAAC,EAAA7T,GAAA2T,GAGA/ymB,EAAA,GACAkzmB,GAAAlzmB,EAAA0wC,EAAA,8CACAwikB,GAAAlzmB,EAAA0wC,EAAA,kDACAwikB,GAAAlzmB,EAAA0wC,EAAA,0DAEA,yBAAAA,IACA1wC,EAAA,mCAAA0wC,EAAAyikB,sBAEAF,EAAAl4R,WACA/6U,EAAA,cAAAizmB,EAAAl4R,SAAAhsT,MAAA,KAAAi9D,OAGAinhB,EAAAr+oB,OACAorC,EAAA,kBAAAizmB,EAAAr+oB,MAGAorC,EAAA,mBAAA+ymB,EAAAn+mB,SAAAoylB,GAAAx5gB,SAAAm/F,QAEA,MAAAH,EAAA+J,EAAA5L,EACAR,EAAAqC,EAAAzwM,EAEA6yoB,GAAA1zc,EAAA,CACA5a,YAAAyyd,EAAAx1lB,QAAAypkB,GAAAx5gB,SAAAm/F,OAAA,IACAxC,eACAG,GAAA55H,EAAAsikB,cAAA,YAAAtikB,EAAAsikB,gBAAA,iBACArmc,OAAA,gCACAH,iBACAxsK,QAEA,CA/MAozmB,CAAAl4c,EAAAxqH,EAAAA,EAAAjzD,KAAAktL,EAAA5uM,EAAAw6M,GAKA,IAGA04b,GAAAlzlB,KAAA5B,IAAAg4lB,EAAAlzoB,OAAA,KA4MA,SAAAi8L,GACA,MAAAzjC,EAAAuvd,GAAAvvd,UACA,IAAAA,EACA,OAIA,MAAAm6R,EAAAn6R,EAAAm6R,WACAA,IACAA,EAAAyhN,eAGAn4c,EAAA+C,OAAA,0BAAA2zP,EAAAyhN,eAGAzhN,EAAA3kb,MAGAiuL,EAAA+C,OAAA,iBAAA2zP,EAAA3kb,MAGA0hoB,GAAA/8M,EAAA0hN,OACAlmc,GAAA,mBAAApnL,MAAA4ra,EAAA0hN,IAAAr7hB,KAAA,iBAIA02hB,GAAAl3e,EAAA87e,eAGAr4c,EAAA+C,OAAA,kBAAAxmC,EAAA87e,mBAGA5E,GAAAl3e,EAAA+7e,sBAGAt4c,EAAA+C,OAAA,sBAAA7mM,OAAAqgK,EAAA+7e,qBAEA,CA/OAC,CAAAv4c,GAGA,aAAAoP,EAAA,EAySA,SAAA8C,GACA,MAAA+8b,EAAAP,KACA,IAAAO,EACA,OAGA,oBAAAgE,EAAA,aAAAoE,GAAApI,EAEAoI,GAAApE,IACA73c,IAAA2C,GAAAA,GAAAlnI,IAAA,2CACAq7I,EAAA,qBACApnL,MAAAmonB,EAAAoE,EACAt6hB,KAAA,eAGA,CAvTAy7hB,CAAAtmc,IAEA,mBAAAxhI,SAAAnuD,IACA,IAAA2vL,GAAA3vL,KAAA20nB,GAAA77b,GAAA67b,EACA,OAKA,MAAAuB,EAAAvmc,GAAA3vL,GAAAuI,MACA4tnB,EAAAr9b,EAAAs4b,GAAA8E,GAGAE,EAAA93lB,KAAA+6J,IAAA,KAAA88b,EAAAxB,IACAlja,EAAA2ka,EAAAF,EAEAr9c,IAAA2C,GAAAA,GAAAlnI,IAAA,6BAAAt0C,UAAAk2nB,QAAAE,MAAA3ka,MACA9hC,GAAA3vL,GAAAuI,MAAA6tnB,CAAA,IAGA,MAAAC,EAAA1mc,GAAA,YACA0mc,GAAA1mc,GAAA,MAEAwhc,GAAA1zc,EAAA,CACA5a,YAAA,oBACA6pB,aAAA2pc,EAAA9tnB,MAAA6onB,GAAAzhc,GAAA,IAAApnL,OACAskL,GAAA,YACAqC,OAAA,0BACAH,eAAAsnc,EAAA9tnB,eAIAonL,GAAA,aAKA,QAAAA,WACAA,GAAAl7E,IAGAl9H,OAAAC,KAAAm4M,IAAAxhI,SAAAmokB,KGnapC,SAAwBt2nB,EAAcuI,EAAeiyF,GAE1D,MAAMijF,GAAckM,EAAAA,GAAAA,MAChBlM,GAEFA,EAAY4V,eAAerzL,EAAMuI,EAAOiyF,EAE5C,CH6Z2C64F,CAAAijc,EAAA3mc,GAAA2mc,GAAA/tnB,MAAAonL,GAAA2mc,GAAA97hB,KAAA,IAoMA,SAAAijF,GACA6zc,KACAz4c,IAAA2C,GAAAA,GAAAlnI,IAAA,kCAIAg9kB,GAAAn5f,SAGAslD,EAAA+C,OAAA,cAAAgpb,GAAA8nB,GAAAn5f,UAGAm5f,GAAA7woB,IAGAg9L,EAAA+C,OAAA,SAAA8wc,GAAA7woB,IAGA6woB,GAAA1umB,KAIA66J,EAAA+C,OAAA,UAAA8wc,GAAA1umB,IAAAm2G,OAAAz5F,MAAA,QAKAm+I,EAAA+C,OAAA,WAAA8wc,GAAA7ikB,OAIA8ikB,IAAAA,GAAA18iB,UACAgkG,IAAA2C,GAAAA,GAAAlnI,IAAA,kCACAi9kB,GAAA18iB,QAAA1mB,SAAA,CAAAmoB,EAAAtY,IAGAy/G,EAAA+C,OAAA,cAAAxiH,EAAA,IAAAwriB,GAAAlzhB,EAAAkkD,SAGA,CAxOA+7f,CAAA94c,EACA,CAEA6zc,QAAA34oB,EACA44oB,QAAA54oB,EACAg3M,GAAA,EACA,CAsCA,SAAAilc,GACAn3c,EAEAxqH,EACA49B,EACAioG,EACAj2B,EACA2zd,GAEA,MAAAvinB,EAAAuinB,EAAAvjkB,EAAAujkB,GAAAvjkB,EAAA,GAAA49B,QACA78E,EAAAi/C,EAAA,GAAA49B,UACA78E,GAAAC,GAGAk9mB,GAAA1zc,EAAA,CACAoP,GAAA,UACAqC,OAAA,+BACArsB,YAAAA,GAAAhyE,EACAk+F,eAAA+J,EAAAs4b,GAAAp9mB,GACA04K,aAAAoM,EAAAs4b,GAAAn9mB,IAEA,CAyKA,SAAAwhnB,GACAlzmB,EACA0wC,EACA/4D,EACAu8nB,GAEA,MAAAC,EAAAzjkB,EAAA/4D,GACA,MAAAw8nB,GAAAA,EA5nBlB,aA6nBkBn0mB,EAAAk0mB,GAAAC,EAEA,2EI7pB3C,MAAMntB,IAASlva,EAAAA,GAAAA,MA4DR,SAAS85a,KACd,KAAM,UAAW5K,IACf,OAAO,EAGT,IAIE,OAHA,IAAIl4jB,QACJ,IAAItc,QAAQ,0BACZ,IAAIq/kB,UACG,CACX,CAAI,MAAOn8nB,IACP,OAAO,CACX,CACA,CAKO,SAASo8nB,GAAc3mY,GAC5B,OAAOA,GAAQ,mDAAmDpxK,KAAKoxK,EAAK/tM,WAC9E,gBC5DA,SAAS2ilB,MDoEF,WACL,GAA2B,kBAAhBC,YACT,OAAO,EAGT,IAAKpO,KACH,OAAO,EAKT,GAAIE,GAAc9K,GAAOtmlB,OACvB,OAAO,EAKT,IAAI0yB,GAAS,EACb,MAAM78D,EAAMywnB,GAAO7jgB,SAEnB,GAAI5sH,GAAiD,oBAAlCA,EAAIk2P,cACrB,IACE,MAAMwzY,EAAU1poB,EAAIk2P,cAAc,UAClCwzY,EAAQC,QAAS,EACjB3poB,EAAIy1G,KAAKilJ,YAAYgvY,GACjBA,EAAQ/vU,eAAiB+vU,EAAQ/vU,cAAcxvR,QAEjD0yB,EAAS0+jB,GAAcmO,EAAQ/vU,cAAcxvR,QAE/CnqC,EAAIy1G,KAAK2kJ,YAAYsvY,EAC3B,CAAM,MAAOvpoB,GACP4/L,GAAAA,GACE2C,GAAAA,GAAOj2J,KAAK,kFAAmFtsC,EACvG,CAGE,OAAO08D,CACT,ECxGO+skB,KAIL/qb,EAAAA,GAAAA,IAAK1R,GAAAA,GAAY,SAAS,SAAU08b,GAClC,OAAO,WAAgC,QAAAtzf,EAAA9tI,UAAAC,OAAnB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GACtB,MAAM,OAAE3wI,EAAM,IAAEgkC,GAyEf,SAAwBggmB,GAC7B,GAAyB,IAArBA,EAAUphoB,OACZ,MAAO,CAAE5C,OAAQ,MAAOgkC,IAAK,IAG/B,GAAyB,IAArBggmB,EAAUphoB,OAAc,CAC1B,MAAOohC,EAAKqrC,GAAW20jB,EAEvB,MAAO,CACLhgmB,IAAKigmB,GAAmBjgmB,GACxBhkC,OAAQkkoB,GAAQ70jB,EAAS,UAAYt0E,OAAOs0E,EAAQrvE,QAAQ+kC,cAAgB,MAElF,CAEE,MAAMo6C,EAAM6kjB,EAAU,GACtB,MAAO,CACLhgmB,IAAKigmB,GAAmB9kjB,GACxBn/E,OAAQkkoB,GAAQ/kjB,EAAK,UAAYpkF,OAAOokF,EAAIn/E,QAAQ+kC,cAAgB,MAExE,CA5F8Bo/lB,CAAezzf,GAEjCs5D,EAAgC,CACpCt5D,OACA0zf,UAAW,CACTpkoB,SACAgkC,OAEFmsK,eAAgB12M,KAAKoyF,OAQvB,OALAo+G,EAAAA,GAAAA,IAAgB,QAAS,IACpBD,IAIE+5b,EAAc9jlB,MAAMonJ,GAAAA,GAAY32D,GAAMz2I,MAC1CqrC,IACC,MAAMyymB,EAAwC,IACzC/tc,EACH8D,aAAcr0M,KAAKoyF,MACnBvmD,YAIF,OADA2kK,EAAAA,GAAAA,IAAgB,QAAS8tc,GAClBzymB,CAAQ,IAEhBmB,IACC,MAAMuxmB,EAAuC,IACxChuc,EACH8D,aAAcr0M,KAAKoyF,MACnBplD,SAOF,MAJAwjK,EAAAA,GAAAA,IAAgB,QAAS+tc,GAInBvxmB,CAAK,GAGrB,CACA,GACA,CAEA,SAASy9lB,GAA0B/ikB,EAAcsrE,GAC/C,QAAStrE,GAAsB,kBAARA,KAAuBA,EAA+BsrE,EAC/E,CAEA,SAASw3f,GAAmBnkQ,GAC1B,MAAwB,kBAAbA,EACFA,EAGJA,EAIDokQ,GAAQpkQ,EAAU,OACbA,EAAS97V,IAGd87V,EAAS/+U,SACJ++U,EAAS/+U,WAGX,GAXE,EAYX,CCxFA,MAAM4pkB,GAAStjb,GAAAA,GAEFq7b,GAAsB,oBAiB5B,SAASC,KAEd,IAAMhY,GAAeplR,eACnB,OAGF,MAAMq9R,EAAWr9R,eAAexrM,WAEhCg/C,EAAAA,GAAAA,IAAK6pb,EAAU,QAAQ,SAAUC,GAC/B,OAAO,WACL,MAAM1yb,EAAiB12M,KAAKoyF,MAGlC,QAAA4kD,EAAA9tI,UAAAC,OAJ4E8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAK1E,MAAM3wI,GAASo2M,EAAAA,GAAAA,IAAS1lE,EAAK,IAAMA,EAAK,GAAG3rG,mBAAgBhrC,EACrDiqC,EAoGZ,SAAkBA,GAChB,IAAIoyK,EAAAA,GAAAA,IAASpyK,GACX,OAAOA,EAGT,IAKE,OAAQA,EAAY+c,UACxB,CAAI,MAAA+hlB,GAAO,CAET,MACF,CAlHkBC,CAASryf,EAAK,IAE1B,IAAK1wI,IAAWgkC,EACd,OAAO6+lB,EAAa5ilB,MAAM7nD,KAAMs4I,GAGlCt4I,KAAKsqoB,IAAuB,CAC1B1ioB,SACAgkC,MACAg/lB,gBAAiB,CAAC,GAIL,SAAXhjoB,GAAqBgkC,EAAIqwB,MAAM,gBACjCj8D,KAAK6qoB,wBAAyB,GAGhC,MAAMC,EAAwCA,KAE5C,MAAMC,EAAU/qoB,KAAKsqoB,IAErB,GAAKS,GAImB,IAApB/qoB,KAAKuqJ,WAAkB,CACzB,IAGEwgf,EAAQC,YAAchroB,KAAKi0B,MACvC,CAAY,MAAOhzB,IACnB,CAGU,MAAM2wM,EAA8B,CAClCt5D,KAAM,CAAC1wI,EAAQgkC,GACf8pK,aAAcr0M,KAAKoyF,MACnBskH,iBACAkzb,IAAKjroB,OAEP6xM,EAAAA,GAAAA,IAAgB,MAAOD,EACjC,GA+BM,MA5BI,uBAAwB5xM,MAA2C,oBAA5BA,KAAKgvW,oBAC9CruJ,EAAAA,GAAAA,IAAK3gN,KAAM,sBAAsB,SAAU6gN,GACzC,OAAO,WACLiqb,IAA2B,QAAA9xf,EAAAzuI,UAAAC,OAD0B0goB,EAAc,IAAAhknB,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAdiyf,EAAcjyf,GAAA1uI,UAAA0uI,GAEnE,OAAO4nE,EAASh5J,MAAM7nD,KAAMkroB,EACxC,CACA,IAEQlroB,KAAKg7G,iBAAiB,mBAAoB8vhB,IAM5Cnqb,EAAAA,GAAAA,IAAK3gN,KAAM,oBAAoB,SAAU6gN,GACvC,OAAO,WAAuF,QAAAhoE,EAAAtuI,UAAAC,OAAvC2goB,EAAoB,IAAAjknB,MAAA2xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAApBqyf,EAAoBryf,GAAAvuI,UAAAuuI,GACzE,MAAOt3I,EAAQ+vB,GAAS45mB,EAElBJ,EAAU/qoB,KAAKsqoB,IAMrB,OAJIS,IAAW/sb,EAAAA,GAAAA,IAASx8M,KAAWw8M,EAAAA,GAAAA,IAASzsL,KAC1Cw5mB,EAAQH,gBAAgBppoB,EAAO2F,eAAiBoqB,GAG3CsvL,EAASh5J,MAAM7nD,KAAMmroB,EACtC,CACA,IAEaV,EAAa5ilB,MAAM7nD,KAAMs4I,EACtC,CACA,KAEEqoE,EAAAA,GAAAA,IAAK6pb,EAAU,QAAQ,SAAUY,GAC/B,OAAO,WACL,MAAMC,EAAgBrroB,KAAKsqoB,IAAoB,QAAAn0S,EAAA5rV,UAAAC,OADuB8tI,EAAI,IAAApxH,MAAAivU,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ99M,EAAI89M,GAAA7rV,UAAA6rV,GAG1E,IAAKi1S,EACH,OAAOD,EAAavjlB,MAAM7nD,KAAMs4I,QAGlB32I,IAAZ22I,EAAK,KACP+yf,EAAclqoB,KAAOm3I,EAAK,IAG5B,MAAMs5D,EAA8B,CAClCt5D,KAAM,CAAC+yf,EAAczjoB,OAAQyjoB,EAAcz/lB,KAC3CmsK,eAAgB12M,KAAKoyF,MACrBw3iB,IAAKjroB,MAIP,OAFA6xM,EAAAA,GAAAA,IAAgB,MAAOD,GAEhBw5b,EAAavjlB,MAAM7nD,KAAMs4I,EACtC,CACA,GACA,CCVoC,SAAAm7e,GACAC,GAGA,IADAF,EAAAjpnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEA,OAHAA,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,OAGAkiE,MAAA41J,GAlCA,SACA9wM,EACA8wM,GAEA,IADAmxZ,EAAAjpnB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEA,SAAAyzM,EAAAA,GAAAA,IAAAzsL,MAIAkuL,EAAAA,GAAAA,IAAA4iB,GACAA,EAAA/8I,KAAA/zD,MAEAysL,EAAAA,GAAAA,IAAAqkB,KACAmxZ,EAAAjimB,IAAA8wM,EAAA9wM,EAAA4O,SAAAkiM,IAIA,CAiBAkxZ,CAAAG,EAAArxZ,EAAAmxZ,IACA,iBCtG7B,SAASqsB,GACdjuc,EACAkuc,EACAC,EACA/pc,GAEkB,IADlBgqc,EAAUz1oB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAe,oBAEzB,KAAK8sM,EAAAA,GAAiBA,OAAOzF,EAAYo6b,UACvC,OAGF,MAAMiU,EAAyBH,EAAiBluc,EAAYo6b,UAAUpgmB,KAEtE,GAAIgmK,EAAY8D,cAAgBuqc,EAAwB,CACtD,MAAM3zc,EAASsF,EAAYo6b,UAAUkU,OACrC,IAAK5zc,EAAQ,OAEb,MAAMvG,EAAOiQ,EAAM1J,GAMnB,YALIvG,KAiJO,SAAAA,EAAA6L,GACA,GAAAA,EAAA1kK,SAAA,EACAqsK,EAAAA,GAAAA,IAAAxT,EAAA6L,EAAA1kK,SAAAjZ,QAEA,MAAAksnB,EACAvuc,EAAA1kK,UAAA0kK,EAAA1kK,SAAArtC,SAAA+xM,EAAA1kK,SAAArtC,QAAAsuC,IAAA,kBAEA,GAAAgymB,EAAA,CACA,MAAAC,EAAAhymB,SAAA+xmB,GACAC,EAAA,GACAr6c,EAAA+P,aAAA,+BAAAsqc,EAEA,CACA,MAAAxuc,EAAAvjK,OACA03J,EAAA6M,UAAA,kBAEA7M,EAAA9oK,KACA,CAjKTojnB,CAAQt6c,EAAM6L,UAEPoE,EAAM1J,IAGnB,CAEE,MAAMnK,GAAQG,EAAAA,GAAAA,MACRwG,GAASzG,EAAAA,GAAAA,OAET,OAAEz6L,EAAM,IAAEgkC,GAAQgmK,EAAYo6b,UAE9BsU,EA2HO,SAAA10mB,GACA,IAEA,OADA,IAAAktE,IAAAltE,GACAotE,IACA,OAAA/3G,IACA,MACA,CACA,CAlIGs/oB,CAAW30mB,GACrBzrC,EAAOmgpB,EAAU3V,GAAS2V,GAASngpB,UAAOwB,EAE1CokM,EAAOk6c,GACT3kc,EAAAA,GAAAA,IAAkB,CAChBtyL,KAAM,GAACphB,KAAAgkC,IACAuvK,cAAA,EACA7H,WAAA,CACA1nK,MACApzB,KAAA,QACA,cAAA5Q,EACA,WAAA04oB,EACA,iBAAAngpB,EACA,CAAAmwM,GAAAA,IAAA0vc,GAEAnqc,GAAA,qBAEAl0M,EAOA,GALAokM,IACA6L,EAAAo6b,UAAAkU,OAAAn6c,EAAA4O,cAAArI,OACA0J,EAAAjQ,EAAA4O,cAAArI,QAAAvG,GAGAg6c,EAAAnuc,EAAAo6b,UAAApgmB,MAAAk9J,EAAA,CACA,MAAAtkM,EAAAotM,EAAAt5D,KAAA,GAGAs5D,EAAAt5D,KAAA,GAAAs5D,EAAAt5D,KAAA,OAGA,MAAArhE,EAAA26H,EAAAt5D,KAAA,GAGArhE,EAAAp3E,QASA,SACA2E,EACAskM,EACA3G,EACAlrH,EAOAupkB,GAGA,MAAAz6c,EAAAy6c,GAAAr+c,EAAA6H,UAEA2C,GAAAc,EAAAA,GAAAA,OAEA,QAAApB,EAAA,OAAAC,EAAA,QAAAgF,EAAA,IAAAT,GAAA,IACAlE,EAAAf,2BACAzJ,EAAAyJ,yBAGA60c,EAAA16c,GAAA8M,EAAAA,GAAAA,IAAA9M,IAAAwX,EAAAA,GAAAA,IAAAlR,EAAAC,EAAAgF,GAEAovc,GAAAtic,EAAAA,GAAAA,IACAvN,IACA9K,GAAAiB,EAAAA,GAAAA,GAAAjB,IAAAyK,EAAAA,GAAAA,GAAAnE,EAAAvD,EAAA3G,KAGAtiM,EACAo3E,EAAAp3E,UACA,qBAAAk+C,UAAA2hK,EAAAA,GAAAA,IAAAl7M,EAAAu5C,SAAAv5C,EAAA3E,aAAA8B,GAEA,GAAA9B,EAEA,yBAAAw6D,UAAAqlJ,EAAAA,GAAAA,IAAA7/M,EAAAw6D,SAAA,CACA,MAAAuI,EAAA,IAAAvI,QAAAx6D,GAUA,OARA+iE,EAAAr7C,OAAA,eAAAk5nB,GAEAC,GAGA99kB,EAAAr7C,OAAAm2L,GAAAA,GAAAgjc,GAGA99kB,CACA,IAAA17C,MAAAC,QAAAtnB,GAAA,CACA,MAAA+iE,EAAA,IAAA/iE,EAAA,gBAAA4gpB,IAQA,OANAC,GAGA99kB,EAAAlE,KAAA,CAAAg/I,GAAAA,GAAAgjc,IAGA99kB,CACA,EACA,MAAA+9kB,EAAA,YAAA9gpB,EAAAA,EAAAkjN,aAAAphN,EACAi/oB,EAAA,GAYA,OAVA15nB,MAAAC,QAAAw5nB,GACAC,EAAAlilB,QAAAiilB,GACAA,GACAC,EAAAlilB,KAAAiilB,GAGAD,GACAE,EAAAlilB,KAAAgilB,GAGA,IACA7gpB,EACA,eAAA4gpB,EACA19b,QAAA69b,EAAAp2oB,OAAA,EAAAo2oB,EAAAh+nB,KAAA,UAAAjhB,EAEA,EA1CA,sBAAA8+oB,EAAA19b,QAAA29b,EA2CA,CAvFAG,CAAAr8oB,EAAAskM,EAAA3G,EAAAlrH,EAAA8uH,EACA,CAEA,OAAAA,CACA,OC3EF+6c,GAAoC,CAAC,YAAa,aAoDlDC,GAAsE,CACjFC,YAAY,EACZC,UAAU,EACVC,mBAAmB,EAEnBC,eAAgBL,GAChBM,wBAAyBN,IAIpB,SAASO,GAA2B76a,GACzC,MAAM,WACJw6a,EAAU,SACVC,EAAQ,wBAERG,EAAuB,eAEvBD,EAAc,2BACdG,EAA0B,kBAC1BJ,GACE,CACFF,WAAYD,GAAqCC,WACjDC,SAAUF,GAAqCE,YAC5Cz6a,GAGCs5a,EACkC,oBAA/BwB,EAA4CA,EAA8Bp9kB,IAAc,EAK3Fq9kB,EAAkC31mB,GAwInC,SAA6BA,EAAaw1mB,GAC/C,OAAO3tB,GAAyB7nlB,EAAKw1mB,GAA2BN,GAClE,CAzIIf,CAAoBn0mB,EAAKw1mB,GAA2BD,GAEhDnrc,EAA8B,CAAC,EH/FhC,IAAsC/R,EGiGvC+8c,GJrGC,SAAwC/8c,GAC7C,MAAMzrL,EAAO,SACb65L,EAAAA,GAAAA,IAAW75L,EAAMyrL,IACjBqO,EAAAA,GAAAA,IAAgB95L,EAAM8ynB,GACxB,CIkGIwB,EAA+Bl7b,IAC7B,MAAM4vc,EAAc3B,GAAuBjuc,EAAakuc,EAAkByB,EAAgCvrc,GAI1G,GAAIwrc,EAAa,CACf,MAAMlB,EAAUC,GAAW3uc,EAAYo6b,UAAUpgmB,KAC3CzrC,EAAOmgpB,EAAU3V,GAAS2V,GAASngpB,UAAOwB,EAChD6/oB,EAAYvpc,cAAc,CACxB,WAAYqoc,EACZ,iBAAkBngpB,GAE5B,CAEU+gpB,GAAqBM,GACvBC,GAAeD,EACvB,IAIMP,IHtHuCh9c,EGuHZ2N,IAC3B,MAAM4vc,EAsHL,SACL5vc,EACAkuc,EACAC,EACA/pc,GAEA,MAAMi1b,EAAMr5b,EAAYq5b,IAClBI,EAAgBJ,GAAOA,EAAIX,IAEjC,KAAKjzb,EAAAA,GAAiBA,OAAO4zb,GAAOA,EAAIJ,yBAA2BQ,EACjE,OAGF,MAAM4U,EAAyBH,EAAiBzU,EAAcz/lB,KAG9D,GAAIgmK,EAAY8D,cAAgBuqc,EAAwB,CACtD,MAAM3zc,EAAS2+b,EAAIyW,uBACnB,IAAKp1c,EAAQ,OAEb,MAAMvG,EAAOiQ,EAAM1J,GAQnB,YAPIvG,QAAsCpkM,IAA9B0poB,EAAcL,eACxBzxb,EAAAA,GAAAA,IAAcxT,EAAMslc,EAAcL,aAClCjlc,EAAK9oK,aAGE+4K,EAAM1J,IAGnB,CAEE,MAAMnK,GAAQG,EAAAA,GAAAA,MACRqK,GAAiBc,EAAAA,GAAAA,MAEjB6yc,EAAUC,GAAWlV,EAAcz/lB,KACnCzrC,EAAOmgpB,EAAU3V,GAAS2V,GAASngpB,UAAOwB,EAE1CokM,EAAOk6c,GACT3kc,EAAAA,GAAAA,IAAkB,CAChBtyL,KAAM,GAACqinB,EAAAzjoB,UAAAyjoB,EAAAz/lB,MACAuvK,cAAA,EACA7H,WAAA,CACA96L,KAAA,MACA,cAAA6ynB,EAAAzjoB,OACA,WAAA04oB,EACA10mB,IAAAy/lB,EAAAz/lB,IACA,iBAAAzrC,EACA,CAAAmwM,GAAAA,IAAA,qBAEAuF,GAAA,qBAEAl0M,EAEAokM,IACAklc,EAAAyW,uBAAA37c,EAAA4O,cAAArI,OACA0J,EAAAi1b,EAAAyW,wBAAA37c,GAGA,MAAA+C,GAAAzG,EAAAA,GAAAA,MAEA,GAAA4oc,EAAAp8R,kBAAAkxS,EAAA1U,EAAAz/lB,MAAAk9J,EAAA,CACA,cAAAuD,EAAA,OAAAC,EAAA,QAAAgF,EAAA,IAAAT,GAAA,IACAlE,EAAAf,2BACAzJ,EAAAyJ,0BAgBA,SACAq/b,EACAwV,EACAC,GAEA,IAEAzV,EAAAp8R,iBAAA,eAAA4xS,GACAC,GAKAzV,EAAAp8R,iBAAAnxJ,GAAAA,GAAAgjc,EAEA,OAAAx8kB,GACA,CAEA,CAxBAy9kB,CAAA1W,EAPAllc,GAAA8M,EAAAA,GAAAA,IAAA9M,IAAAwX,EAAAA,GAAAA,IAAAlR,EAAAC,EAAAgF,IAEA8M,EAAAA,GAAAA,IACAvN,IACA9K,GAAAiB,EAAAA,GAAAA,GAAAjB,IAAAyK,EAAAA,GAAAA,GAAAnE,EAAAvD,EAAA3G,KAIA,CAEA,OAAA4D,CACA,CAnMW67c,CAAYhwc,EAAakuc,EAAkByB,EAAgCvrc,GAC3Fkrc,GAAqBM,GACvBC,GAAeD,EACvB,GHzHEnvc,EAAAA,GAAAA,IADa,MACIpO,IACjBqO,EAAAA,GAAAA,IAFa,MAESi4b,IG2HxB,CAiBA,SAASkX,GAAe17c,GACtB,MAAM,IAAEn6J,IAAQq7J,EAAAA,GAAAA,IAAWlB,GAAMx6J,MAAQ,CAAC,EAE1C,IAAKK,GAAsB,kBAARA,EACjB,OAGF,MAAM+uW,EAAUy9P,GAAqC,YAAY5nlB,IAAiB,IAAhB,QAAED,GAASC,EAC3ED,EAAQ4mB,SAAQ8E,IACd,GAxBN,SAAqCA,GACnC,MACsB,aAApBA,EAAMu5jB,WACN,kBAAmBv5jB,GAC6C,kBAAxDA,EAAoC4lkB,kBACnB,UAAxB5lkB,EAAMsikB,eAAqD,mBAAxBtikB,EAAMsikB,cAE9C,CAiBUuD,CAA4B7lkB,IAAUA,EAAMjzD,KAAK25H,SAAS/2G,GAAM,EA8C1E,SAAuCm2mB,GACrC,MAAM,KAAE/4nB,EAAI,QAAE1e,GA9BT,SAAgCu3oB,GACrC,IAAI74nB,EAAO,UACP1e,EAAU,UACV6tM,EAAQ,GACZ,IAAK,MAAMs0C,KAAQo1Z,EAAiB,CAElC,GAAa,MAATp1Z,EAAc,EACfzjO,EAAM1e,GAAWu3oB,EAAgBvnlB,MAAM,KACxC,KACN,CAEI,IAAKmtC,MAAM56D,OAAO4/M,IAAQ,CACxBzjO,EAAiB,MAAVmvL,EAAgB,OAASA,EAChC7tM,EAAUu3oB,EAAgBvnlB,MAAM69I,GAAO,GACvC,KACN,CACIA,GAASs0C,CACb,CACMt0C,IAAU0pc,IAEZ74nB,EAAOmvL,GAET,MAAO,CAAEnvL,OAAM1e,UACjB,CAO4B03oB,CAAuBD,EAAeF,iBAE1DI,EAA8C,GAIpD,GAFAA,EAAevjlB,KAAK,CAAC,2BAA4Bp0D,GAAU,CAAC,wBAAyB0e,KAEhFi5L,GAAAA,GACH,OAAOggc,EAET,MAAO,IACFA,EACH,CAAC,8BAA+BC,GAAgBH,EAAeI,gBAC/D,CAAC,2BAA4BD,GAAgBH,EAAeK,aAC5D,CAAC,mCAAoCF,GAAgBH,EAAeM,oBACpE,CAAC,iCAAkCH,GAAgBH,EAAeO,kBAClE,CAAC,6BAA8BJ,GAAgBH,EAAeQ,eAC9D,CAAC,uCAAwCL,GAAgBH,EAAeS,wBACxE,CAAC,8BAA+BN,GAAgBH,EAAeU,aAC/D,CAAC,6BAA8BP,GAAgBH,EAAejE,eAC9D,CAAC,8BAA+BoE,GAAgBH,EAAerI,gBAC/D,CAAC,4BAA6BwI,GAAgBH,EAAelE,cAEjE,EApEyB6E,CAA8BzmkB,GACtC9E,SAAQ5rC,GAAQw6J,EAAK+P,gBAAgBvqK,KAG9C0B,WAAW0tW,EACnB,IACM,GAEN,CAiCA,SAASunQ,KAA0C,IAA1B1/a,EAAIj4N,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAW,EACtC,QAAS03M,GAAAA,IAAgCL,YAAYE,YAAc0gB,GAAQ,GAC7E,CA6Ie,SAAA+9a,GAAA30mB,GACA,IAIA,OADA,IAAAktE,IAAAltE,EAAA2mlB,GAAAx5gB,SAAAm/F,QACAl/F,IACA,OAAA/3G,IACA,MACA,CACA,CCvVf,MAAMsxnB,IAASlva,EAAAA,GAAAA,MCff,MAAMkva,GAAStjb,GAAAA,GAEf,IAAIqub,GAgBJ,SAASE,KACP,IDIK,WAML,MAAMC,EAAalL,GAAemL,OAC5BC,EAAsBF,GAAaA,EAAUG,KAAOH,EAAUG,IAAIroS,QAElEsoS,EAAgB,YAAatL,MAAYA,GAAOh6Q,QAAQW,aAAeq5Q,GAAOh6Q,QAAQM,aAE5F,OAAQ8kR,GAAuBE,CACjC,CChBOC,GACH,OAGF,MAAMC,EAAgBxL,GAAOyL,WAoB7B,SAASC,EAA2BC,GAClC,OAAO,WAA+C,QAAAllf,EAAAzuI,UAAAC,OAAnB8tI,EAAI,IAAApxH,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJX,EAAIW,GAAA1uI,UAAA0uI,GACrC,MAAMrtG,EAAM0sG,EAAK9tI,OAAS,EAAI8tI,EAAK,QAAK32I,EACxC,GAAIiqC,EAAK,CAEP,MAAMh/B,EAAO0wnB,GACPzwnB,EAAKlK,OAAOipC,GAElB0xlB,GAAWzwnB,EACX,MAAM+kM,EAAkC,CAAEhlM,OAAMC,OAChDglM,EAAAA,GAAAA,IAAgB,UAAWD,EACnC,CACM,OAAOssb,EAAwBr2kB,MAAM7nD,KAAMs4I,EACjD,CACA,CAjCEi6e,GAAOyL,WAAa,WAClB,MAAMnxnB,EAAK0lnB,GAAOx5gB,SAASC,KAErBpsG,EAAO0wnB,GACbA,GAAWzwnB,EACX,MAAM+kM,EAAkC,CAAEhlM,OAAMC,MAEhD,IADAglM,EAAAA,GAAAA,IAAgB,UAAWD,GACvBmsb,EAIF,IAAI,QAAA1lf,EAAA9tI,UAAAC,OAXoD8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAY1D,OAAOwlf,EAAcl2kB,MAAM7nD,KAAMs4I,EACzC,CAAQ,MAAOi2D,GACf,CAGA,GAkBEoS,EAAAA,GAAAA,IAAK4xa,GAAOh6Q,QAAS,YAAa0lR,IAClCt9a,EAAAA,GAAAA,IAAK4xa,GAAOh6Q,QAAS,eAAgB0lR,EACvC,CC3CO,MAqID0kB,GAAyD,IAC1Dzuc,GAAAA,GACH0uc,4BAA4B,EAC5BC,uBC5JK,SACLC,GAGM,IAFNC,IAA0Bx4oB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,KAAAA,UAAA,GAC1By4oB,IAAgCz4oB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,KAAAA,UAAA,GAEhC,IAAKgonB,KAAWA,GAAOx5gB,SAErB,YADA8oF,IAAe2C,GAAAA,GAAOj2J,KAAK,yEAI7B,IAEImkK,EAFAuwc,EAAkC1wB,GAAOx5gB,SAASC,KAGlD+piB,IACFrwc,EAAoBowc,EAAuB,CACzC95nB,KAAMupmB,GAAOx5gB,SAASsxC,SAEtB0tD,eAAgBkK,GAAAA,GAA+BA,GAAAA,GAA+B,SAAOtgN,EACrFk0M,GAAI,WACJqC,OAAQ,wBACR/G,SAAU,CAAE7xG,OAAQ,UAIpB0jjB,GFVC,SAA0C/+c,GAC/C,MAAMzrL,EAAO,WACb65L,EAAAA,GAAAA,IAAW75L,EAAMyrL,IACjBqO,EAAAA,GAAAA,IAAgB95L,EAAMglnB,GACxB,CEOID,EAAiC/skB,IAAkB,IAAjB,GAAE3jD,EAAE,KAAED,GAAM4jD,OAU/B7uD,IAATiL,GAAsBq2oB,IAA4C,IAA7BA,EAAY15iB,QAAQ18F,GAC3Do2oB,OAActhpB,EAIZiL,IAASC,IACXo2oB,OAActhpB,EACV+wM,IACF7Q,IAAe2C,GAAAA,GAAOlnI,IAAI,oDAAoDo1I,EAAkBmD,MAEGnD,EAAAz1K,OAEAy1K,EAAAowc,EAAA,CACA95nB,KAAAupmB,GAAAx5gB,SAAAsxC,SACAwrD,GAAA,aACAqC,OAAA,0BACA/G,SAAA,CAAA7xG,OAAA,SAEA,GAGA,EDqG3G0jjB,kCAAkC,EAClCD,4BAA4B,EAC5BG,gBAAgB,EAChBC,WAAW,EACX9H,uBAAwB,EACxB5nc,aAAc,CAAC,KACZstc,IAoaE,SAASqC,GAAeC,GAI7B,MAAMC,GjCnbmBrkd,EiCmbK,aAAaokd,KjClblB9wB,GAAA7jgB,UAAA6jgB,GAAA7jgB,SAAA8pV,cACA+5K,GAAA7jgB,SAAA8pV,cAAAv5Q,GAEA,MAJA,IAAAA,EiCqbzB,OAAOqkd,EAAUA,EAAQjsZ,aAAa,gBAAa11P,CACrD,CAEA,SAAS4hpB,GAAU5+c,GACjB,MAAM6+c,EAAuB7+c,EAAQ2O,YAAc3O,EAAQ2O,WAAWnD,GAAAA,IAEhEszc,EAAiB9+c,EAAQp5J,MAAQo5J,EAAQp5J,KAAK4kK,GAAAA,IAE9Cuzc,EAAqB/+c,EAAQwM,UAAYxM,EAAQwM,SAAS7xG,OAEhE,OAAOkkjB,GAAwBC,GAAkBC,CACnD,CE7jBO,SAASC,GAAelzT,GAC7B,IAAImzT,EACArynB,EAAQk/T,EAAI,GACZxoS,EAAI,EACR,KAAOA,EAAIwoS,EAAIjmV,QAAQ,CACrB,MAAMqrM,EAAK46I,EAAIxoS,GACTq/F,EAAKmpM,EAAIxoS,EAAI,GAGnB,GAFAA,GAAK,GAEO,mBAAP4tJ,GAAkC,iBAAPA,IAAmC,MAATtkL,EAExD,OAES,WAAPskL,GAA0B,mBAAPA,GACrB+tc,EAAgBrynB,EAChBA,EAAQ+1H,EAAG/1H,IACK,SAAPskL,GAAwB,iBAAPA,IAC1BtkL,EAAQ+1H,GAAG,mBAAAjP,EAAA9tI,UAAAC,OAAI8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAAA,OAAiBhnH,EAA0BoiF,KAAKiwiB,KAAkBtrgB,EAAK,IAC1FsrgB,OAAgBjipB,EAEtB,CACE,OAAO4vB,CACT,6BCjDO,SAASsynB,GAAiC5hd,GAE/C,MAAMo5b,EAAgBsoB,GAAA,CAAA1hd,EAAc,OAAA/9H,GAAAA,IAAE,SAAA+5E,GAAAA,EAAAokD,UAAU,OAAAjkD,GAAAA,IAAG,iBAAAD,GAAAA,EAAA0vD,WAAU,OAAAvvD,GAAAA,MAG7D,MAAwB,YAFLqlgB,GAAA,CAAEtoB,EAAe,iBAAAh9e,GAAAA,EAAA40D,gBAAgB,SAGtD,CCsBO,MAAM6wc,GAIJ,mBAAAC,GAAA,KAAOt6oB,GAAa,QAAQ,CAc5BvJ,WAAAA,GAIL,IAHA+2E,EAAA1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAyB,CACvBy5oB,WAAW,GAGbhkpB,KAAKgpB,KAAO86nB,GAAOr6oB,GACnBzJ,KAAKikpB,WAAahtkB,EAAQ+skB,SAC5B,CAGOE,cAAAA,GAOL,OANIlkpB,KAAKikpB,SACPjkpB,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAW,mBAE1CxhM,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAW,sBAGrCxhM,KAAKmkpB,OACd,CAMOxpB,SAAAA,CAAUz2jB,EAAuC+9H,GACtD,GAAI4hd,GAAiC5hd,GACnCJ,IAAe2C,GAAAA,GAAOlnI,IAAI,6EAI5B,GAAIt9D,KAAKikpB,SAAU,CACjB,MAAMxid,EAAMzhM,KAAKkkpB,iBAEjB,IAAKzid,EAEH,YADAI,IAAe2C,GAAAA,GAAOn2J,MAAM,8EAO9BsyK,EAAAA,GAAAA,IACElf,EAAI2id,eAAezif,UACnB,mBACA,SAAU0if,GACR,OAAO,YAIL1jc,EAAAA,GAAAA,IAAK3gN,KAAKskpB,yBAA0B,WAAW,SAAUD,GACvD,OAAO,WAKL,OAF8BE,IAFZp9c,EAAAA,GAAAA,IAASk9c,EAAK1wiB,KAAK3zG,OAEwBiiM,EAG7E,CACA,IAAc,QAAA5pD,EAAA9tI,UAAAC,OAVC8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAYP,OAAO8rgB,EAAK1wiB,KAAK3zG,QAASs4I,EACtC,CACS,GAET,KAAW,CACL,MAAMmpD,EAAMzhM,KAAKkkpB,iBAEjB,IAAKzid,EAEH,YADAI,IAAe2C,GAAAA,GAAOn2J,MAAM,0EAO9BsyK,EAAAA,GAAAA,IAAKlf,EAAI+id,iBAAiB7if,UAAW,mBAAmB,SAAU0if,GAChE,OAAO,WAGL,IAAKrkpB,KAAKwmG,OAAO6uU,UAiBf,OAhBIxzO,KACE7hM,KAAKwmG,OAAO+iP,QACd/kJ,GAAAA,GAAOj2J,KACL,iNAGFi2J,GAAAA,GAAOj2J,QACEvuC,KAAKwmG,OAAOoiQ,SACrBpkK,GAAAA,GAAOj2J,KACL,wGAIJi2J,GAAAA,GAAOn2J,MAAM,2EAGRg2mB,EAAK1wiB,KAAK3zG,MAGnB,MAAMq1a,GAAYluO,EAAAA,GAAAA,IAASnnM,KAAKwmG,OAAO6uU,WAIvC,OAFAr1a,KAAKwmG,OAAO6uU,UAAYkvO,GAAoBlvO,EAAWpzO,GAEhDoid,EAAK1wiB,KAAK3zG,KAC3B,CACA,GACI,CACF,EAIF,SAASukpB,GAAoBlvO,EAAmCpzO,GAC9D,OAAOozO,EAAU50a,KAAIq0L,IACnBv0L,OAAOC,KAAKs0L,GAAO39G,SAAQstkB,IACzBlkpB,OAAOC,KAAKs0L,EAAM2vd,IAAoBttkB,SAAQutkB,IACU,oBAA3C5vd,EAAM2vd,GAAmBC,IAe5C,SACE5vd,EACA2vd,EACAC,EAEAzid,IAEA0e,EAAAA,GAAAA,IAAK7rB,EAAM2vd,GAAoBC,GAAc,SAAUL,GACrD,OAAO,WAEL,MAIMt+c,EAAK49c,GAAA,CAJG1hd,IAAgBM,WAELyH,UAEF,iBAAA/rD,GAAAA,EAAEi7D,WAAW,OAAA96D,GAAAA,EAAA,CAClCytC,YAAa,GAAC44d,KAAAC,IACA7uc,GAAA,kBACAqC,OAAA,0BACA,QAAAl/D,EAAAzuI,UAAAC,OAViB8tI,EAAI,IAAApxH,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJX,EAAIW,GAAA1uI,UAAA0uI,GAYrB,MAAAg/P,EAAAosQ,EAAA1wiB,KAAA,QAAA2kC,GAEA,OAAAwrD,EAAAA,GAAAA,IAAAm0M,GACAA,EAAAp2Y,MAAA4hE,IACAkglB,GAAA,CAAA59c,EAAA,iBAAA5nD,GAAAA,EAAAlhH,IAAA,OAAAqhH,GAAAA,MACA76E,MAIAkglB,GAAA,CAAA59c,EAAA,iBAAA1nD,GAAAA,EAAAphH,IAAA,OAAA0nnB,GAAAA,MAEA1sQ,EACA,CACA,GACA,CA7Cd2sQ,CAAa9vd,EAAO2vd,EAAmBC,EAAczid,EAAc,GACnE,IAGGnN,IAEX,CAjBAgvd,GAAAC,eCtDO,SAASc,GACdC,GAE6B,IAD7B7tkB,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAA+D,CAAC,EAEvE,MAAM3C,EAASk9oB,EAAIl9oB,QAAUk9oB,EAAIl9oB,OAAO+kC,cAExC,IAAI9kC,EAAO,GACPy3F,EAA4B,MAG5BroB,EAAQ8tkB,aAAeD,EAAInqS,OAC7B9yW,EAAOovE,EAAQ8tkB,aAAe,GAACD,EAAA/4e,SAAA,KAAA+4e,EAAAnqS,OAAAmqS,EAAAnqS,MAAA9yW,OACAy3F,EAAA,UAIAwljB,EAAAE,aAAAF,EAAAl5mB,OACA/jC,EAAAkyoB,GAAA+K,EAAAE,aAAAF,EAAAl5mB,KAAA,KAGA,IAAA5iB,EAAA,GAWA,OAVAiuD,EAAArvE,QAAAA,IACAohB,GAAAphB,GAEAqvE,EAAArvE,QAAAqvE,EAAApvE,OACAmhB,GAAA,KAEAiuD,EAAApvE,MAAAA,IACAmhB,GAAAnhB,GAGA,CAAAmhB,EAAAs2E,EACA,CChD5B,MAAM2ljB,GAIJ,mBAAAlB,GAAA,KAAOt6oB,GAAa,SAAS,CAgB7BvJ,WAAAA,GAAiF,IAArE+2E,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAA0D,CAAC,EACnFvK,KAAKgpB,KAAOi8nB,GAAQx7oB,GACpBzJ,KAAKklpB,QAAUjukB,EAAQkoS,QAAUloS,EAAQ2mjB,IACzC59nB,KAAKmlpB,UAAYj+nB,MAAMC,QAAQ8vD,EAAQmukB,SAAWnukB,EAAQmukB,QAAU,IAAI3jpB,OAAO,MACjF,CAMOk5nB,SAAAA,CAAUz2jB,EAAY+9H,GACtBjiM,KAAKklpB,QAKNrB,GAAiC5hd,GACnCJ,IAAe2C,GAAAA,GAAOlnI,IAAI,0EAyIa,SAAA6hT,GAAA,IAAAimS,EAAA76oB,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,MACA66oB,EAAAjukB,SAAAvvE,GAdA,SAAAu3W,EAAAv3W,GACA,MAAAypoB,EAAAlyR,EAAAv3W,GAMA,OAJAu3W,EAAAv3W,GAAA,mBAAAixI,EAAAtuI,UAAAC,OAAA8tI,EAAA,IAAApxH,MAAA2xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAR,EAAAQ,GAAAvuI,UAAAuuI,GACA,OAAAu4f,EAAA19hB,KAAA,QA1BA,SAAA2kC,EAAA1wI,GACA,OAAA0wI,EAAA73I,KAAAsmF,GACA,oBAAAA,EACAunM,GAAAvnM,EAAAn/E,GAGAsf,MAAAC,QAAA4/D,GACAA,EAAAtmF,KAAA+nD,GACA,oBAAAA,EACA8lO,GAAA9lO,EAAA5gD,GAEA4gD,IAIAu+B,GAEA,CASAs+jB,CAAA/sgB,EAAA1wI,GACA,EAEAu3W,CACA,CAMAmmS,CAAAnmS,EAAAv3W,IACA,CAvIzC29oB,CAAsBvlpB,KAAKklpB,QAASllpB,KAAKmlpB,UAiJA,SAAAK,GAEA,MAAAC,EAAA,aAAAD,EAGAC,QAAA9jpB,IAAA6jpB,EAAAN,SAAAM,EAAAE,YACAF,EAAAE,aAGA,MAAAvmS,EAAAsmS,EAAAD,EAAAN,QAAAM,EAEA,IAAArmS,EAcA,OAFAt9K,IAAA2C,GAAAA,GAAArkI,MAAA,yFACA0hI,IAAA2C,GAAAA,GAAArkI,MAAA,sEAIA,MAAAwllB,EAAAplpB,OAAAghN,eAAA49J,GAEAymS,EAAAD,EAAAE,eACAF,EAAAE,eAAA,SACAr5N,EACApnO,EACA0/b,EACArhlB,EACAw5E,GAGA6ngB,EAAAgB,sBACAhB,EAAAgB,oBAAA,IAIA,qBAAAC,EAAA,QAAAC,EAAA,QAAA7+nB,EAAA,iBAAA8+nB,GAwKA,SAAAz5N,GACA,IAAA05N,EAAAvC,GAAA,CAAAn3N,EAAA,SAAA25N,GAAAA,EAAAxrS,MAAA,iBAAAyrS,GAAAA,EAAAv+oB,OAEA,MAAAm+oB,GAAAvmc,EAAAA,GAAAA,IAAAymc,GACA/+nB,EAAAD,MAAAC,QAAA++nB,GAEA,IAAAA,EAAA,CAGA,MAAAG,GAAAp3c,GAAAA,GAAArsC,QAAAC,SAAArf,KAAAlpF,MAAA,KAAA75D,IAAAosC,QAGAw5mB,GAAA,KAIAH,EAAAI,GAAA95N,EAAA3kb,KAAA2kb,EAAAn7K,OAAAm7K,EAAAhsb,MAEA,CAEA,IAAA0lpB,EACA,OAAAF,UAAA7+nB,UAAA8+nB,iBAAA,GAGA,MAAAA,EAAA9+nB,EACAmgC,KAAA5B,KAaA6gmB,EAbAL,EAcAK,EAAA94mB,QAAA,CAAA+4mB,EAAAC,IAEAD,EAAAvM,GAAAwM,EAAA99lB,aACA,GAjBAsxlB,GAAAztN,EAAA3kb,MAAA,QACA,EAEAk+oB,EAuBA,SAAA5+nB,EAAA++nB,GACA,GAAA/+nB,EACA,OAAA++nB,EAAAzlpB,KAAAuoD,GAAAA,EAAAL,aAAA/lC,KAAA,KAEA,OAAAsjoB,GAAAA,EAAAv9lB,UACA,CA5BA+9lB,CAAAv/nB,EAAA++nB,GAUA,IAAAK,EARA,OAAAR,iBAAAC,UAAA7+nB,UAAA8+nB,mBACA,CAvMAU,CAAAn6N,GAOA,IAAAo6N,GALAb,GAAAC,GAAA7+nB,KACA29nB,EAAA+B,gBAAA,GAOAD,EADAb,IA6NA,SACAf,EACA8B,EACAC,GAGA,MACAC,EAAArD,GAAA,CADA5J,GAAAiL,GAAA,IACA,iBAAAiC,GAAAA,EAAA3slB,MAAA,OAAA4slB,GAAAA,EAAA,cAAAC,GAAAA,EAAA5lpB,OAAA,OAAA6lpB,GAAAA,GAAAz5mB,KAAAA,MACA,IAAA05mB,EAAA,EACA,MAAAC,EAAA3D,GAAA,CAAAmD,EAAA,iBAAAS,GAAAA,EAAAjtlB,MAAA,OAAAktlB,GAAAA,EAAA,cAAAC,GAAAA,EAAAlmpB,OAAA,OAAAmmpB,GAAAA,GAAA/5mB,KAAAA,IAAA,SAAAg6mB,GAAAA,EAAAn9oB,UAAA,EAWA,OAVAm5oB,GAAA,CAAAoD,EACA,iBAAAa,GAAAA,EAAAttlB,MAAA,OAAAutlB,GAAAA,EAAA,KACA,SAAAC,GAAAA,EAAAvmpB,OAAA,OAAAwmpB,GAAAA,GAAA7+c,GACAy6c,GAAA,CAAAqD,EAAA,iBAAAgB,GAAAA,EAAAV,EAAAD,OAAAn+c,IACAm+c,GAAA,GACA,KAIA,SAAAY,GAAAA,EAAArloB,KAAA,OAAAsloB,GAAAA,EAAA,MAEA,CApOAC,CAAArD,EAAAE,YAAAF,EAAAgB,oBAAAt5N,EAAA3kb,OAAA,IAQA,MAAAugpB,EAAAxB,EACAtslB,MAAA,KACA/4D,QAAA2nM,GAAAA,EAAA1+L,OAAA,IAAAw7oB,GAAA7+nB,IAAA+hL,EAAA/oK,SAAA,QACAvd,KAAA,KAGAwloB,GAAAA,EAAA59oB,OAAA,IAEAs6oB,EAAAgB,qBAAA,IAAAsC,IAAApC,EAAA,UASA,GAHA/L,GAAAF,GAAA+K,EAAAE,aAAA,KAAAiB,IACAhM,GAAA6K,EAAAgB,qBAEA,CACAhB,EAAA+B,gBACA/B,EAAAgB,sBAAAhB,EAAAE,cACAF,EAAAgB,oBAAAhB,EAAAE,YAAAjL,GAAA+K,EAAAE,aAAAF,EAAAE,aAIA,MAAAv+c,EAAAhjI,EAAA4klB,qBACA/0c,EAAA7M,IAAAQ,EAAAA,GAAAA,IAAAR,GAAAl7J,MAAA,GACA,GAAAk7J,GAAA,WAAA6M,EAAAnD,GAAAA,IAAA,CAGA,MAAAm4c,EAAAxD,EAAAgB,qBAAA,KAEA98nB,EAAAs2E,GAAAuljB,GAAAC,EAAA,CAAAj9oB,MAAA,EAAAD,QAAA,EAAAm9oB,YAAAuD,IACA7hd,EAAAoS,WAAA7vL,GACAy9K,EAAAqP,aAAA3F,GAAAA,GAAA7wG,EACA,CACA,CAEA,OAAAsmjB,EAAAjyiB,KAAA,KAAA64U,EAAApnO,EAAA0/b,EAAArhlB,EAAAw5E,EACA,CACA,CAlQzCsrgB,CAAiBvopB,KAAKklpB,UAVpBrjd,IAAe2C,GAAAA,GAAOn2J,MAAM,oDAWhC,EAkBF,SAASigP,GAAKhnI,EAAc1/I,GAC1B,MAAM8+O,EAAQp/F,EAAG98I,OAEjB,OAAQk8O,GACN,KAAK,EACH,OAAO,SAA+Bo+Z,EAAcrhlB,GAClD,MAAMgjI,EAAchjI,EAAI4klB,qBACxB,GAAI5hd,EAAa,CAEf,MAAMV,EAAOU,EAAYyS,WAAW,CAClCrtB,YAAavkC,EAAGt+H,KAChB6sL,GAAI,sBAAsBjuM,IACOswM,OAAA,4BAEAz0I,EAAAmpN,KAAA,eACA7mF,EAAA9oK,KAAA,GAEA,CACA,OAAAqqH,EAAA3zC,KAAA,KAAAmxiB,EAAArhlB,EACA,EAEA,OACA,gBAEAqhlB,EACArhlB,EACAlL,GAEA,MAEAwtI,EAAA49c,GAAA,CAFAlglB,EAAA4klB,qBAEA,iBAAApqgB,GAAAA,EAAAi7D,WAAA,OAAA96D,GAAAA,EAAA,CACAytC,YAAAvkC,EAAAt+H,KACA6sL,GAAA,sBAAAjuM,IACAswM,OAAA,8BAEA5wD,EAAA3zC,KAAA,KAAAmxiB,EAAArhlB,GAAA,WACAkglB,GAAA,CAAA59c,EAAA,iBAAA5nD,GAAAA,EAAAlhH,IAAA,OAAAqhH,GAAAA,MAAA,QAAAjG,EAAA9tI,UAAAC,OADA8tI,EAAA,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAAhuI,UAAAguI,GAEAhgF,EAAAo7C,KAAA,QAAA2kC,EACA,GACA,EAEA,OACA,gBAEAr2I,EACA6ipB,EACArhlB,EACAlL,GAEA,MAEAwtI,EAAA49c,GAAA,CAFAlglB,EAAA4klB,qBAEA,iBAAAhqgB,GAAAA,EAAA66D,WAAA,OAAAyrc,GAAAA,EAAA,CACA94d,YAAAvkC,EAAAt+H,KACA6sL,GAAA,sBAAAjuM,IACAswM,OAAA,8BAEA5wD,EAAA3zC,KAAA,KAAA1xG,EAAA6ipB,EAAArhlB,GAAA,WACAkglB,GAAA,CAAA59c,EAAA,iBAAAyid,GAAAA,EAAAvrnB,IAAA,OAAAwrnB,GAAAA,MAAA,QAAAzvgB,EAAAzuI,UAAAC,OADA8tI,EAAA,IAAApxH,MAAA8xH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAX,EAAAW,GAAA1uI,UAAA0uI,GAEA1gF,EAAAo7C,KAAA,QAAA2kC,EACA,GACA,EAEA,QACA,UAAAjwI,MAAA,gDAAAq+O,KAGA,CAnF7Cu+Z,GAAAlB,eAkR6C,MAAAuC,GAAAA,CACAz+oB,EACAwpQ,EACA7wQ,KAEA,IAAAqH,IAAAwpQ,IAAA7wQ,GAAA,IAAAD,OAAAC,KAAAA,GAAAgK,SAAAm5oB,GAAA,CAAAnjpB,EAAA,SAAAkopB,GAAAA,EAAA,oBAAAC,GAAAA,EAAAnhmB,SACA,OAGA,MAAAohmB,EAAApopB,EAAA2X,MAAA,CAAAqwC,EAAAyjB,IAAAzjB,EAAAhB,OAAAykB,EAAAzkB,SAQAk6X,EAJA,IAAAxvT,OAAAm/I,EAAA,GAAAA,EAAA7gC,UAIAiL,KAAA5zO,GAEA,IAAA65a,IAAAA,EAAAmnO,QACA,OAKA,UAAAC,GAAApnO,EAAAmnO,QAEA,GAAAC,EAAAt+oB,SAAAo+oB,EAAAp+oB,OACA,OAEA,IAAAu+oB,EAAAlhpB,EACAmhpB,EAAA,EAmCA,OA9BAF,EAAA3xkB,SAAA,CAAA+E,EAAA8K,KAEA,GAAA9K,EAAA,CACA,MAAA+skB,EAAAC,GAAAhtkB,EAIAitkB,EAAAJ,EAAA9zjB,UAAA,EAAAg0jB,EAAAD,GAIAI,EAAA,IAAAR,EAAA5hkB,GAAAh+D,OAKAqgoB,EAAAN,EAAA9zjB,UAAAi0jB,EAAAF,GAKAD,EAAAI,EAAAC,EAAAC,EAKAL,GAAAE,EAAAD,EAAAG,EAAA5+oB,MACA,KAGAu+oB,CAAA,EC/ctC,MAAMO,GAIJ,mBAAAvF,GAAA,KAAOt6oB,GAAa,SAAS,CAS7BvJ,WAAAA,GACLF,KAAKgpB,KAAOsgoB,GAAQ7/oB,EACtB,CAGOy6oB,cAAAA,GACL,OAAQlkpB,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAW,+BACpD,CAMOm5b,SAAAA,CAAUz2jB,EAAuC+9H,GACtD,GAAI4hd,GAAiC5hd,GAEnC,YADAJ,IAAe2C,GAAAA,GAAOlnI,IAAI,0EAI5B,MAAMmkI,EAAMzhM,KAAKkkpB,iBAEZzid,GAKLkf,EAAAA,GAAAA,IAAKlf,EAAK,WAAW,SAAU4id,GAC7B,OAAO,WAEL,MAAMlid,EAAQF,IAAgBM,WAExB0Y,EAAa9Y,EAAM6H,UAGnBjE,EAAK49c,GAAA,CAAE1oc,EAAU,iBAAAh9D,GAAAA,EAAEi7D,WAAW,OAAA96D,GAAAA,EAAA,CAClCytC,YAAa,UACbgqB,GAAI,kBACJqC,OAAQ,2BAIlByrc,GAAA,CAAQxhd,EAAK,iBAAAhkD,GAAAA,EAAE4rD,QAAO,OAAAzrD,GAAAA,EAACynD,KAAK,QAAA1tD,EAAA9tI,UAAAC,OAda8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GAgBrC,MAAM0/P,EAAKosQ,EAAK1wiB,KAAK3zG,QAASs4I,GAE9B,OAAIwrD,EAAAA,GAAAA,IAAWm0M,GACNA,EAAGp2Y,MAAM4hE,IAC1BkglB,GAAA,CAAY59c,EAAI,iBAAA1nD,GAAAA,EAAEphH,IAAG,OAAA0nnB,GAAAA,MAErBhB,GAAA,CAAYxhd,EAAK,iBAAAqmd,GAAAA,EAAEz+c,QAAO,OAAA0+c,GAAAA,EAACxtc,KAERx3I,MAInBkglB,GAAA,CAAQ59c,EAAI,iBAAA2id,GAAAA,EAAEzrnB,IAAG,OAAA0rnB,GAAAA,MAEjBhF,GAAA,CAAQxhd,EAAK,iBAAAgkd,GAAAA,EAAEp8c,QAAO,OAAAq8c,GAAAA,EAACnrc,KACRg9L,EACf,CACA,IAtCMp2M,IAAe2C,GAAAA,GAAOn2J,MAAM,uEAuChC,EACFi7mB,GAAAvF,eC5EA,MAAMwF,GAAa,CACjB,YACA,YACA,iBACA,cACA,gBACA,aACA,YACA,WACA,OACA,YACA,cACA,yBACA,OACA,UACA,mBACA,oBACA,mBACA,UACA,cACA,mBACA,0BACA,aACA,YACA,WACA,YACA,UACA,yBACA,SACA,aACA,QACA,aACA,aAOIC,GAEF,CAGFC,UAAW,CAAC,cACZC,eAAgB,CAAC,SACjBC,YAAa,CAAC,eACdC,cAAe,CAAC,cAChBC,WAAY,CAAC,UACbC,UAAW,CAAC,UACZC,SAAU,CAAC,MAAO,SAClBC,UAAW,CAAC,aACZv9mB,KAAM,CAAC,SACPw9mB,QAAS,CAAC,SACVC,iBAAkB,CAAC,UACnBC,kBAAmB,CAAC,SAAU,eAC9BC,iBAAkB,CAAC,SAAU,UAC7BC,YAAa,CAAC,WACdC,WAAY,CAAC,QACbC,UAAW,CAAC,OACZzwd,UAAW,CAAC,MAAO,UACnB0wd,OAAQ,CAAC,WACTC,WAAY,CAAC,SAAU,OACvBC,WAAY,CAAC,SAAU,UACvBC,UAAW,CAAC,SAAU,WA6BjB,MAAM3pd,GAIJ,mBAAA+id,GAAA,KAAOt6oB,GAAa,OAAO,CAgB3BvJ,WAAAA,GAAwC,IAA5B+2E,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAiB,CAAC,EAC1CvK,KAAKgpB,KAAOg4K,GAAMv3L,GAClBzJ,KAAK4qpB,YAAc1joB,MAAMC,QAAQ8vD,EAAQyxU,YAAczxU,EAAQyxU,WAAc6gQ,GAC7EvppB,KAAK6qpB,sBAAsB,uBAAwB5zkB,IAAUA,EAAQ6zkB,mBACrE9qpB,KAAK+qpB,eAAiB9zkB,EAAQ+zkB,WAChC,CAGO9G,cAAAA,GACL,MAAM3id,EAAavhM,KAAK+qpB,aAAe,WAAa,UACpD,OAAQ/qpB,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAWD,EACpD,CAMOo5b,SAAAA,CAAUz2jB,EAAuC+9H,GACtD,GAAI4hd,GAAiC5hd,GAEnC,YADAJ,IAAe2C,GAAAA,GAAOlnI,IAAI,wEAI5B,MAAMmkI,EAAMzhM,KAAKkkpB,iBAEjB,GAAKzid,EAMLzhM,KAAKirpB,sBAAsBxpd,EAAIypd,WAAYlrpB,KAAK4qpB,YAAa3od,OAN7D,CACE,MAAMV,EAAavhM,KAAK+qpB,aAAe,WAAa,UACpDlpd,IAAe2C,GAAAA,GAAOn2J,MAAM,6CAA6CkzJ,eAE3E,CAGF,CAMQ0pd,qBAAAA,CAAsB1kZ,EAA6BmiJ,EAAyBzmN,GAClFymN,EAAWvxU,SAASjtD,GAAyBlqB,KAAKmrpB,gBAAgB5kZ,EAAYr8O,EAAW+3K,IAC3F,CAMQkpd,eAAAA,CAAgB5kZ,EAA6Br8O,EAAsB+3K,GACzE,KAAM/3K,KAAaq8O,EAAW5kG,WAAY,OAE1C,MAAMypf,EAAiBprpB,KAAKqrpB,sCAAsC3ikB,KAAK1oF,OAEvE2gN,EAAAA,GAAAA,IAAK4lD,EAAW5kG,UAAWz3I,GAAW,SAAUm6nB,GAC9C,OAAO,WAA6C,QAAAhsgB,EAAA9tI,UAAAC,OAAjB8tI,EAAI,IAAApxH,MAAAmxH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAhuI,UAAAguI,GACrC,MAAMsgU,EAAUvgU,EAAKA,EAAK9tI,OAAS,GAE7Bw3L,EAAMC,IAENE,EAAQH,EAAIO,WAEZuG,EAAS9G,EAAIK,YAEb4Y,EAAa9Y,EAAM6H,UAEnBqF,EAAiBs0c,GAAA,CAAA76c,EAAM,iBAAA7qD,GAAAA,EAAE4vD,WAAU,OAAAzvD,GAAAA,IAAE,SAAAD,GAAAA,EAACkxD,iBAI5C,GAAuB,oBAAZwpQ,GAAyC,cAAd3ub,GAA6C,IAAhBouH,EAAK9tI,OAAe,CAErF,MAAMu7L,EAAK49c,GAAA,CAAE1oc,EAAU,iBAAA38D,GAAAA,EAAE46D,WAAW,OAAA76D,GAAAA,EAAA+sgB,EAAeprpB,KAAMkqB,EAAWouH,EAAM+2D,MACpEi8c,EAAuBjH,EAAK1wiB,KAAK3zG,QAASs4I,GAEhD,IAAIwrD,EAAAA,GAAAA,IAAWwnd,GACb,OAAOA,EAAqBzppB,MAAM4hE,IAC9CkglB,GAAA,CAAc59c,EAAI,iBAAA4+c,GAAAA,EAAE1nnB,IAAG,OAAAurnB,GAAAA,MACF/klB,KAKN,IA3GG8nlB,EA2GUD,IA1GmB,kBAAhBC,GAA4BA,EAAY3+X,MAAoC,oBAArB2+X,EAAY3+X,KA0G/C,CACvC,MAAM4+X,EAASF,EAEf,IACEE,EAAO5+X,KAAK,SAAS,KACnC+2X,GAAA,CAAgB59c,EAAI,iBAAA0id,GAAAA,EAAExrnB,IAAG,OAAAyrnB,GAAAA,KAAE,GAEb,OAAOznpB,IAGrB0ipB,GAAA,CAAc59c,EAAI,iBAAA4id,GAAAA,EAAE1rnB,IAAG,OAAAkpnB,GAAAA,KACX,CAEA,OAAOqF,CACnB,CAEY,OADZ7H,GAAA,CAAY59c,EAAI,iBAAAqgd,GAAAA,EAAEnpnB,IAAG,OAAAgqnB,GAAAA,MACFqE,CAEX,CA7HR,IAAkBC,EAgIV,MAAMxld,EAAO49c,GAAA,CAAA1oc,EAAU,iBAAAisc,GAAAA,EAAEhuc,WAAU,OAAAiuc,GAAAA,EAACiE,EAAeprpB,KAAMkqB,EAAWouH,EAAKhwF,MAAM,GAAI,OAEnF,OAAO+7lB,EAAK1wiB,KAAK3zG,QAASs4I,EAAKhwF,MAAM,GAAI,IAAI,SAAUrmD,EAAY08D,GAC3EgllB,GAAA,CAAU59c,EAAI,iBAAAqhd,GAAAA,EAAEnqnB,IAAG,OAAAsqnB,GAAAA,MACT1uM,EAAQ52c,EAAK08D,EACvB,GACA,CACA,GACE,CAKQ0slB,qCAAAA,CACN9kZ,EACAr8O,EACAouH,GAEa,IADb+2D,EAAA9kM,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,IAAAA,UAAA,GAEA,MAAMghC,EAAkC,CACtC,YAAa,UACb,UAAWg7N,EAAWklZ,OACtB,eAAgBvhoB,EAChB,wBAAyBq8O,EAAWmlZ,gBAEhC/2c,EAA2B,CAC/BkB,GAAI,KAEJqC,OAAQ,gBACRrsB,YAAa3hK,EACbqhB,QAKI++B,EAAYk/kB,GAAqBt/nB,GACjCyhoB,EAAiBzkoB,MAAMC,QAAQnnB,KAAK6qpB,qBACtC7qpB,KAAK6qpB,oBAAoB1qnB,SAASjW,GAClClqB,KAAK6qpB,oBAET,IAAKvglB,IAAcqhlB,IAAmBt8c,EACpC,OAAOsF,EAGT,IAEE,GAAkB,cAAdzqL,EAA2B,CAC7B,MAAOzpB,EAAKgtC,GAAU6qG,EACtB/sG,EAAK++B,EAAU,IAAqB,kBAAR7pE,EAAmBA,EAAMA,EAAIuoB,MAAQ,cACjEuiB,EAAK++B,EAAU,IAAwB,kBAAX78B,EAAsBA,EAASA,EAAOzkB,MAAQ,aAClF,MACQ,IAAK,IAAIi/B,EAAI,EAAGA,EAAIqiB,EAAU9/D,OAAQy9C,IACpC1c,EAAK,cAAc++B,EAAUriB,MAAG7kD,KAAAE,UAAAg1I,EAAArwF,GAGA,OAAAsmJ,GACA,CAGA,OAAAoG,CACA,EACA3T,GAAA+id,eCzQnC,MAAM5id,GAIJ,mBAAA4id,GAAA,KAAOt6oB,GAAa,OAAO,CAS3BvJ,WAAAA,GACLF,KAAKgpB,KAAOm4K,GAAM13L,EACpB,CAGOy6oB,cAAAA,GACL,OAAQlkpB,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAW,0BACpD,CAMOm5b,SAAAA,CAAUz2jB,EAAuC+9H,GACtD,GAAI4hd,GAAiC5hd,GAEnC,YADAJ,IAAe2C,GAAAA,GAAOlnI,IAAI,wEAI5B,MAAMmkI,EAAMzhM,KAAKkkpB,iBAEjB,IAAKzid,EAEH,YADAI,IAAe2C,GAAAA,GAAOn2J,MAAM,6DAI9B,IAAIu9mB,EAEJ,IACEnqd,EAAI9/B,UAAUrX,QAAU,IAAI8tM,MAAM32J,EAAI9/B,UAAUrX,QAAS,CACvDziG,MAAKA,CAACgkmB,EAAgB1mZ,EAA4C7sH,KAC3DszgB,IACHA,EAAczmZ,EAAQ3+J,QAEjBqljB,EAAehkmB,MAAMs9M,EAAS7sH,KAGzC,OAAOr3I,IACP4gM,IAAe2C,GAAAA,GAAOn2J,MAAM,6DAC9B,CAaA,SAASy9mB,EAAW/ld,GAClB,IAAKA,EACH,OAGF,MAAMx6J,EAfDqgnB,EAGE,CACL,iBAAkBA,EAAYzrpB,KAC9B,cAAeyrpB,EAAYv2Q,KAC3B,UAAWu2Q,EAAYx3iB,MALhB,CAAC,EAeV7zG,OAAOC,KAAK+qC,GAAM4rC,SAAQj0D,IACxB6iL,EAAK+P,aAAa5yL,EAAKqoB,EAAKroB,GAAK,IAGnC6iL,EAAK9oK,KACP,EAMA0jL,EAAAA,GAAAA,IAAKlf,EAAK,eAAe,SAAU4id,GACjC,OAAO,SAAyBptkB,EAAkBxL,EAAiBxyB,GAEjE,MAKM8sJ,EAAK49c,GAAA,CALG1hd,IAAgBM,WAELyH,UAGF,iBAAA/rD,GAAAA,EAAEi7D,WAAW,OAAA96D,GAAAA,EAAA,CAClCytC,YAAgC,kBAAZ50G,EAAuBA,EAAWA,EAA4B80kB,IAClFl2c,GAAI,KACJqC,OAAQ,gBACR3sK,KAAM,CACJ,YAAa,aAIjB,GAAwB,oBAAb0N,EACT,OAAOormB,EAAK1wiB,KAAK3zG,KAAMi3E,EAASxL,GAAQ,SAAUxpE,EAAY08D,EAAiBq8H,GAC7E8wd,EAAW/ld,GACX9sJ,EAASh3C,EAAK08D,EAAQq8H,EAClC,IAGQ,GAAsB,oBAAXvvH,EACT,OAAO44kB,EAAK1wiB,KAAK3zG,KAAMi3E,GAAS,SAAUh1E,EAAY08D,EAAiBq8H,GACrE8wd,EAAW/ld,GACXt6H,EAAOxpE,EAAK08D,EAAQq8H,EAChC,IAIQ,MAAMovN,EAAQi6P,EAAK1wiB,KAAK3zG,KAAMi3E,EAASxL,GAMvC,OAJA2+U,EAAMvgS,GAAG,OAAO,KACdiiiB,EAAW/ld,EAAK,IAGXqkN,CACf,CACA,GACE,EACFjpN,GAAA4id,eClGO,MAAM1id,GAIJ,mBAAA0id,GAAA,KAAOt6oB,GAAa,UAAU,CAW9BvJ,WAAAA,GAAqC,IAAzB+2E,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAc,CAAC,EACvCvK,KAAKgpB,KAAOq4K,GAAS53L,GACrBzJ,KAAKgspB,eAAiB/0kB,EAAQg1kB,YAC9BjspB,KAAKmkpB,QAAUltkB,EAAQ8pH,MACzB,CAGOmjd,cAAAA,GACL,OAAQlkpB,KAAKmkpB,QAAUnkpB,KAAKmkpB,UAAW3id,EAAAA,GAAAA,IAAW,KACpD,CAMOm5b,SAAAA,CAAUz2jB,EAAuC+9H,GACtD,GAAI4hd,GAAiC5hd,GAEnC,YADAJ,IAAe2C,GAAAA,GAAOlnI,IAAI,2EAI5B,MAAMmkI,EAAMzhM,KAAKkkpB,iBAEjB,IAAKzid,EAEH,YADAI,IAAe2C,GAAAA,GAAOn2J,MAAM,6DAI9B,MAAM69mB,EAASlspB,KAAKgspB,aAAarI,GAAA,CAAElid,EAAG,SAAAxjD,GAAAA,EAACkugB,OAAQ,iBAAA/tgB,GAAAA,EAAA8tgB,SAASzqd,EAAIyqd,OAEvDA,GAYLvrc,EAAAA,GAAAA,IAAKurc,EAAOvqf,UAAW,SAAS,SAAU0if,GACxC,OAAO,SAA8B79iB,EAAiB/6B,EAAiBxyB,GAErE,MAEMgiK,EAFQhZ,IAAgBM,WAELyH,UAEnBz+J,EAAwC,CAC5C,YAAa,cAGf,IACMvrC,KAAKospB,WACP7gnB,EAAK,WAAavrC,KAAKospB,UAErBpspB,KAAKG,OACPorC,EAAK,kBAAoBvrC,KAAKG,MAE5BH,KAAKq1Y,OACP9pW,EAAK,eAAiBvrC,KAAKq1Y,MAEzBr1Y,KAAKo0G,OACP7oE,EAAK,WAAavrC,KAAKo0G,KAEzB,OAAOnzG,IACjB,CAIQ,MAAM8kM,EAAK49c,GAAA,CAAE1oc,EAAU,iBAAA98D,GAAAA,EAAE+6D,WAAW,OAAA56D,GAAAA,EAAA,CAClCutC,YAA+B,kBAAXrlF,EAAsBA,EAAUA,EAA4Bx4D,KAChF6nK,GAAI,KACJqC,OAAQ,mBACR3sK,WAGF,GAAwB,oBAAb0N,EACT,OAAOormB,EAAK1wiB,KAAK3zG,KAAMwmG,EAAQ/6B,GAAQ,SAAUxpE,EAAY08D,GACvEgllB,GAAA,CAAY59c,EAAI,iBAAA1nD,GAAAA,EAAEphH,IAAG,OAAA0nnB,GAAAA,MACT1rmB,EAASh3C,EAAK08D,EAC1B,IAGQ,GAAsB,oBAAX8M,EACT,OAAO44kB,EAAK1wiB,KAAK3zG,KAAMwmG,GAAQ,SAAUvkG,EAAY08D,GAC/DgllB,GAAA,CAAY59c,EAAI,iBAAAyid,GAAAA,EAAEvrnB,IAAG,OAAAwrnB,GAAAA,MACTh9kB,EAAOxpE,EAAK08D,EACxB,IAGQ,MAAMs5U,EAAuB,qBAAXxsU,EAAyB44kB,EAAK1wiB,KAAK3zG,KAAMwmG,EAAQ/6B,GAAU44kB,EAAK1wiB,KAAK3zG,KAAMwmG,GAE7F,OAAIs9F,EAAAA,GAAAA,IAAWm0M,GACNA,EAAGp2Y,MAAM4hE,IAC1BkglB,GAAA,CAAY59c,EAAI,iBAAA2id,GAAAA,EAAEzrnB,IAAG,OAAA0rnB,GAAAA,MACFlllB,MAInBkglB,GAAA,CAAQ59c,EAAI,iBAAAogd,GAAAA,EAAElpnB,IAAG,OAAAmpnB,GAAAA,MACFnuQ,EACf,CACA,IAzEMp2M,IAAe2C,GAAAA,GAAOn2J,MAAM,kEA0EhC,EACFgzJ,GAAA0id,eCtHO,MAAMsI,GAIJ,mBAAAtI,GAAA,KAAOt6oB,GAAa,QAAQ,CAU5BvJ,WAAAA,GAAgD,IAApC+2E,EAAO1sE,UAAAC,OAAA,QAAA7I,IAAA4I,UAAA,GAAAA,UAAA,GAAyB,CAAC,EAQlD,GAPAvK,KAAKgpB,KAAOqjoB,GAAO5ipB,IApBM6ipB,EA2BDr1kB,EAAQ6xH,SA1BJwjd,EAAsC,OA0BtBr1kB,EAAQ6xH,OAAOyjd,oBAAqB,EAE9E/wc,EAAAA,GAAAA,IAAyBvkI,EAAQ6xH,OAAe,uBAAuB,GAEvE,MAAM0jd,EAA8C,CAAC,EACrD,IACE,MAAMC,EAAgBx1kB,EAAQ6xH,OAAwB4jd,cACtD,GAAID,EAAc,CAChB,MAAM,eAAEE,EAAc,cAAEC,GAAkBH,EACtCE,IACFH,EAAW,aAAeG,GAExBC,IACFJ,EAAW,qBAAuBI,EAE9C,CACA,CAAQ,MAAO3rpB,IACf,CAGMg2E,EAAQ6xH,OAAO+jd,MAAK,CAACj4lB,EAAQ2D,KAE3B,GAAIsrlB,GAAiC5hd,GAAAA,IACnC,OAAO1pI,EAAK3D,GAGd,MAAMznD,EAASynD,EAAOznD,OAChB2nL,EAAQlgI,EAAOkgI,MAErB,OAAOimB,EAAAA,GAAAA,IACL,CACE/xL,KAAM8rK,EAAQ,GAACA,KAAA3nL,IAAAA,EACAguM,cAAA,EACAtF,GAAA,YACAvC,WAAA,CACA,CAAAhD,GAAAA,IAAA,kBAEA/kK,KAAA,IAAAihnB,EAAA,eAAAr/oB,KAEA,IAAAorD,EAAA3D,IACA,GAEA,MACAitI,IACA2C,GAAAA,GAAAj2J,KAAA,4EAAA0oC,EAAA6xH,QAvE3B,IAA6Bwjd,CAyEF,CAKA3xB,SAAAA,GACA,EAEA0xB,GAAAtI,8BCtFpB,MAAM+I,GZkJN,MA0BE5spB,WAAAA,CAAYsmO,GACjBxmO,KAAKgpB,KAzLqC,iBA0L1ChpB,KAAK+spB,gCAAiC,GAEtCxsd,EAAAA,GAAAA,KAEIsB,KACF7hM,KAAK+spB,kCACHvmb,IAECA,EAAS46a,0BAA2B56a,EAAS26a,iBAIlDnhpB,KAAKi3E,QAAU,IACV0rkB,MACAn8a,QAK4C7kO,IAA7C3B,KAAKi3E,QAAQw8H,aAAayvc,iBAC5BljpB,KAAKi3E,QAAQiskB,eAAiBljpB,KAAKi3E,QAAQw8H,aAAayvc,gBAOtD18a,IAAaA,EAAS46a,yBAA2B56a,EAAS26a,iBAE5DnhpB,KAAKi3E,QAAQmqkB,wBAA0B56a,EAAS26a,gBAGlDnhpB,KAAKgtpB,kBAAoBvS,KAEzBz6oB,KAAKitpB,iCAAmC,CAAC,EAErCjtpB,KAAKi3E,QAAQkskB,WACfhI,GAAiBn7oB,KAAKitpB,iCAAkCjtpB,KAAKi3E,QAAQokkB,wBAEnEr7oB,KAAKi3E,QAAQiskB,gBZrKnB9K,GAAqC,YAAY5nlB,IAAiB,IAAhB,QAAED,GAASC,EAC3D,IAAK,MAAMyrB,KAAS1rB,EAAS,CAE3B,MAAMk2I,GAAckM,EAAAA,GAAAA,MACpB,IAAKlM,EACH,OAEF,MAAMyP,EAAYkkc,GAASn4b,GAAAA,GAA0ChmI,EAAMi6H,WACrE5uM,EAAW8yoB,GAAQn+jB,EAAM30E,UAG/Bm/L,EAAYyS,WAAW,CACrBrtB,YAAa,yBACbgqB,GAAI,eACJqC,OAAQ,0BACRH,eAAgB7B,EAChBR,aAAcQ,EAAY5uM,GAElC,KYsJQtH,KAAKi3E,QAAQw8H,aAAay5c,oBZ9IhC9U,GAAqC,SAAS5+kB,IAAiB,IAAhB,QAAEjJ,GAASiJ,EACxD,IAAK,MAAMyiB,KAAS1rB,EAAS,CAE3B,MAAMk2I,GAAckM,EAAAA,GAAAA,MACpB,IAAKlM,EACH,OAGF,GAAmB,UAAfxqH,EAAMjzD,KAAkB,CAC1B,MAAMktL,EAAYkkc,GAASn4b,GAAAA,GAA0ChmI,EAAMi6H,WACrE5uM,EAAW8yoB,GAAQn+jB,EAAM30E,UAEzBy+L,EAAoB,CACxBla,YAAa2mc,GAAiBv2iB,EAAMoiB,QACpCw3G,GAAI,kBAAkB55H,EAAMjzD,OACKkvL,OAAA,0BACAH,eAAA7B,EACAR,aAAAQ,EAAA5uM,GAGAs3S,EAAA8tV,GAAAzwjB,EAAAoiB,QACAugN,IACA74G,EAAAuN,WAAA,qBAAAsrG,IAIAn4G,EAAAyS,WAAAnT,EACA,CACA,KYsHvC/lM,KAAKmtpB,aAAe,CAClBnkoB,UAAMrnB,EACNgjM,aAAShjM,EAEf,CAMSg5nB,SAAAA,CAAUz2jB,EAAuC+9H,GACtDjiM,KAAKotpB,eAAiBnrd,EACtB,MAEM6G,EAFM7G,IAEOI,YACbg5b,EAAgBvyb,GAAUA,EAAO+E,cAGrCg1c,uBAAwBwK,EAAiB,iCACzCrK,EAAgC,2BAChCD,EAA0B,2BAC1BH,EAA0B,WAC1B5B,EAAU,SACVC,EAAQ,2BACRK,EAA0B,kBAC1BJ,EAAiB,aACjBztc,GACEzzM,KAAKi3E,QAEHq2kB,EAAuCjyB,GAAiBA,EAAc+lB,wBAYtEA,EAA0BkM,GAAwCttpB,KAAKi3E,QAAQmqkB,wBACjFv/c,IAAe7hM,KAAK+spB,gCAAkCO,GACxD9od,GAAAA,GAAOj2J,KACL,0KAIJ8+mB,GACG1od,IACC,MAAM8B,EAAczmM,KAAKutpB,wBAAwB5od,GAKjD,OAHA3kM,KAAKi3E,QAAQw8H,aAAa+5c,yBACxBxtpB,KAAKi3E,QAAQw8H,aAAa+5c,wBAAwB/md,EAAa9B,EAAS1C,GAEnEwE,CAAW,GAEpBs8c,EACAC,GAGEJ,IatTFrwB,GAAO7jgB,SACT6jgB,GAAO7jgB,SAAS1T,iBAAiB,oBAAoB,KAEnD,MAAM03F,GAAoBC,EAAAA,GAAAA,MAC1B,GAAI4/a,GAAO7jgB,SAAU+8gB,QAAU/4b,EAAmB,CAChD,MAAM+6c,EAA6B,aAE7B,GAAE53c,EAAE,OAAE5hL,IAAWgzK,EAAAA,GAAAA,IAAWyL,GAElC7Q,IACE2C,GAAAA,GAAOlnI,IAAI,0BAA0BmwlB,+CAAwD53c,KAGG5hL,GACAy+K,EAAAE,UAAA66c,GAIA/6c,EAAAlJ,OAAA,sCACAkJ,EAAAz1K,KACA,KAGA4kK,IAAA2C,GAAAA,GAAAj2J,KAAA,uFbmSlGklK,EAAay5c,oBACfltpB,KAAK0tpB,+BAGH1tpB,KAAKi3E,QAAQkskB,WACfnjpB,KAAK2tpB,kCAGPtM,GAA2B,CACzBL,aACAC,WACAG,0BACAE,6BACAJ,qBAEN,CAGUqM,uBAAAA,CAAwB5od,GAC9B,IAAK3kM,KAAKotpB,eAGR,YAFAvrd,IACE2C,GAAAA,GAAOj2J,KAAK,4BAA4Bo2J,EAAQkR,sDAIpD,MAAM7T,EAAMhiM,KAAKotpB,kBAEX,eAAEQ,EAAc,YAAEh6c,EAAW,aAAEC,EAAY,kBAAEE,GAAsB/zM,KAAKi3E,QAExE42kB,EAAuC,aAAflpd,EAAQkR,GAEtC,IAAIi4c,EACJ,GAAID,EAAuB,CACzB,MAAM/qc,EAAc+qc,EAAwBzK,GAAe,gBAAkB,GACvErgc,EAAU8qc,EAAwBzK,GAAe,gBAAazhpB,GAC9D,QAAE0qM,EAAO,IAAEwE,EAAG,aAAEuH,EAAY,QAAE9G,IAAYuR,EAAAA,GAAAA,IAA8BC,EAAaC,GAC3F+qc,EAAkB,CAChBzhd,UACA+L,eACA/E,cAAe/B,KACZ3M,EACHwM,SAAU,IAELxM,EAAQwM,SACXpK,uBAAwB8J,GAE1BoL,SAAS,EAEjB,MACM6xc,EAAkB,CAChB7xc,SAAS,KACNtX,GAIP,MAAMopd,EAA4C,oBAAnBH,EAAgCA,EAAeE,GAAmBA,EAI3FE,OAAmCrspB,IAApBospB,EAAgC,IAAKD,EAAiBx8c,SAAS,GAAUy8c,EAI9FC,EAAa78c,SACX68c,EAAahloB,OAAS8koB,EAAgB9koB,KAElC,IAAKgloB,EAAa78c,SAAU7xG,OAAQ,UAEpC0ujB,EAAa78c,SAEnBnxM,KAAKmtpB,aAAankoB,KAAOgloB,EAAahloB,KACtChpB,KAAKmtpB,aAAaxod,QAAUqpd,GAGC,IAAzBA,EAAa18c,SACfzP,IAAe2C,GAAAA,GAAOlnI,IAAI,2BAA2B0wlB,EAAan4c,6CAGpEhU,IAAe2C,GAAAA,GAAOlnI,IAAI,sBAAsB0wlB,EAAan4c,2BAE7D,MAAM,SAAE98F,GAAaw5gB,GAEf07B,GAAkBt6c,EAAAA,GAAAA,GACtB3R,EACAgsd,EACAp6c,EACAC,GACA,EACA,CAAE96F,YACFg7F,EACA85c,GAsBF,OAnBIA,GACEt7B,GAAO7jgB,WACT6jgB,GAAO7jgB,SAAS1T,iBAAiB,oBAAoB,KAC/C,CAAC,cAAe,YAAY76E,SAASoylB,GAAO7jgB,SAAU67B,aACxD0jgB,EAAgBj3c,sBAC5B,IAGY,CAAC,cAAe,YAAY72K,SAASoylB,GAAO7jgB,SAAS67B,aACvD0jgB,EAAgBj3c,wBAKtBi3c,EAAgBz3c,8BAA6B/P,IAC3CzmM,KAAKgtpB,oBACLvP,GAAsBh3c,EAAY,IAG7Bwnd,CACX,CAGUP,4BAAAA,GACN,IAAIQ,EACJ,MAAMC,EAAiCA,KACrC,MAAM,YAAEv6c,EAAW,aAAEC,EAAY,kBAAEE,GAAsB/zM,KAAKi3E,QACxD4+H,EAAK,kBAGLu4c,GAAqBz7c,EAAAA,GAAAA,MAC3B,GAAIy7c,GAAsBA,EAAmBv4c,IAAM,CAAC,aAAc,YAAY11K,SAASiunB,EAAmBv4c,IAKxG,YAJAhU,IACE2C,GAAAA,GAAOj2J,KACL,4BAA4BsnK,+EAWlC,GANIq4c,IACFA,EAA+Bn3c,gBAAgB,0BAC/Cm3c,EAA+BjxnB,MAC/BixnB,OAAiCvspB,IAG9B3B,KAAKotpB,eAER,YADAvrd,IAAe2C,GAAAA,GAAOj2J,KAAK,4BAA4BsnK,qDAIzD,IAAK71M,KAAKmtpB,aAAankoB,KAErB,YADA64K,IAAe2C,GAAAA,GAAOj2J,KAAK,4BAA4BsnK,uDAIzD,MAAM7T,EAAMhiM,KAAKotpB,kBACX,SAAEr0iB,GAAaw5gB,GAEf5tb,EAA8B,CAClC37K,KAAMhpB,KAAKmtpB,aAAankoB,KACxB6sL,KACAoG,SAAS,EACT1wK,KAAM,CACJ,CAAC4kK,GAAAA,IAAmCnwM,KAAKmtpB,aAAaxod,QAClD4+c,GAAUvjpB,KAAKmtpB,aAAaxod,SACf,QAIrBupd,GAAiCv6c,EAAAA,GAAAA,GAC/B3R,EACA2C,EACAiP,EACAC,GACA,EACA,CAAE96F,YACFg7F,EACD,EAGH,CAAC,SAAS58H,SAAQ3+D,IACZ+5mB,GAAO7jgB,UACT1T,iBAAiBxiG,EAAM21oB,EAAgC,CAAEvhY,MAAM,EAAOsyC,SAAS,GACvF,GAEA,CAGUyuV,+BAAAA,GACN,MAAMnW,EAAgBhnlB,IAAwD,IAAvD,QAAED,GAASC,EAChC,MAAMs4I,GAASzG,EAAAA,GAAAA,MAGTi9O,OACO39a,IAAXmnM,QAAwDnnM,IAAhCmnM,EAAOs7b,qBAC1Bt7b,EAAOs7b,qBAAqB,eAC7BzioB,EACAg6oB,OAAsBh6oB,IAAX29a,EAAuBA,EAAO+uO,mBAAgB1spB,EAEzD+wM,GAAoBC,EAAAA,GAAAA,MACpB4mb,GAAej3b,EAAAA,GAAAA,MACfluF,OAAwBzyG,IAAjB43nB,EAA6BA,EAAarvlB,eAAYvoC,EACnE4uD,EAAQ4mB,SAAQ8E,IACd,GAyFR,SAAkCA,GAChC,MAAO,aAAcA,CACvB,CA3FYqykB,CAAyBrykB,GAAQ,CACnC,MAAM06jB,EAAgB16jB,EAAM06jB,cAC5B,QAAsBh1oB,IAAlBg1oB,EACF,OAEF,MAAMO,EAAsBl3oB,KAAKitpB,iCAAiCtW,GAC5DrvoB,EAAW20E,EAAM30E,SACjB4uM,EAAYj6H,EAAMi6H,UAClB11M,EAAOD,OAAOC,KAAKR,KAAKitpB,kCACxBsB,EACJ/tpB,EAAKgK,OAAS,EACVhK,EAAKitC,QAAO,CAAC+a,EAAGyjB,IACPjsE,KAAKitpB,iCAAiCzkmB,GAAGlhD,SAC9CtH,KAAKitpB,iCAAiChhlB,GAAG3kE,SACvCkhD,EACAyjB,SAENtqE,EAGN,GAAwB,gBAApBs6E,EAAMu5jB,UAA6B,CAMrC,GALsBh1oB,EACnBC,KAAIyiB,GAAOljB,KAAKitpB,iCAAiC/poB,KACjDupD,MAAK2qkB,GACGA,EAAY9voB,WAAaA,GAAY8voB,EAAYlhc,YAAcA,IAGxE,MAEd,CAEU,IAAKygc,EACH,OAGF,GAAIO,EACFA,EAAoB5voB,SAAWggD,KAAK5B,IAAIwxlB,EAAoB5voB,SAAUA,QACjE,GACL9G,EAAKgK,OAhYQ,SAiYQ7I,IAArB4spB,GACAjnpB,EAAWtH,KAAKitpB,iCAAiCsB,GAAkBjnpB,SACnE,CAEA,MAAMo0oB,EAAY17oB,KAAKmtpB,aAAankoB,KAC9B4mmB,EAAgB5vnB,KAAKmtpB,aAAaxod,QACpC+2c,GAAa9rB,IACX2+B,GAAoBhupB,OAAOC,KAAKR,KAAKitpB,kCAAkCzipB,QAxYhE,WA0YFxK,KAAKitpB,iCAAiCsB,GAE/CvupB,KAAKitpB,iCAAiCtW,GAAiB,CACrD+E,YACAp0oB,WACAsonB,gBACAx7gB,OACAs+F,oBACAipc,WACAzlc,aAGhB,CACA,IACQ,EAEJkic,GAAqC,QAASZ,GAC9CY,GAAqC,cAAeZ,EACxD,IY/TkC,qBAAvBn6b,oBAAsCA,sBAE/Cmxc,EAAAA,GAAAA,KxFxQK,SAAcv3kB,GACnB,MAAMglF,EAAO,IACRhlF,GAGL8vjB,GAAiB9qe,EAAM,SAEvBwyf,GAAYxyf,EACd,C0FNAyyf,CAAY,CACVrwB,IAAK,6EACL38b,aAAc,CAAC,IAAIord,IACnBtxB,SAAU,CAAC,cACXx7a,SAASp9C,EAKT20C,iBAAkB,IAKpB6tK,EAAAA,QACEqE,EAAAA,GAAAA,KAACpL,EAAAA,WAAgB,CAAAjkO,UACfqvO,EAAAA,GAAAA,KAACklS,GAAG,MAENjgiB,SAAS6+e,eAAe,SAM1BqhD","sources":["../node_modules/@icure/icc-api/api/IccAccesslogApi.ts","../node_modules/@icure/icc-api/api/IccAgendaApi.ts","../node_modules/@icure/icc-api/api/IccAnonymousAccessApi.ts","../node_modules/@icure/icc-api/api/IccApplicationsettingsApi.ts","../node_modules/@icure/icc-api/api/IccAuthApi.ts","../node_modules/@icure/icc-api/api/IccBeefactApi.ts","../node_modules/@icure/icc-api/api/IccBekmehrApi.ts","../node_modules/@icure/icc-api/api/IccBemikronoApi.ts","../node_modules/@icure/icc-api/api/IccBeresultexportApi.ts","../node_modules/@icure/icc-api/api/IccBeresultimportApi.ts","../node_modules/@icure/icc-api/api/IccBesamv2Api.ts","../node_modules/@icure/icc-api/api/IccCalendarItemApi.ts","../node_modules/@icure/icc-api/api/IccCalendarItemTypeApi.ts","../node_modules/@icure/icc-api/api/IccClassificationApi.ts","../node_modules/@icure/icc-api/api/IccClassificationTemplateApi.ts","../node_modules/@icure/icc-api/api/IccCodeApi.ts","../node_modules/@icure/icc-api/api/IccContactApi.ts","../node_modules/@icure/icc-api/api/IccDataownerApi.ts","../node_modules/@icure/icc-api/api/IccDeviceApi.ts","../node_modules/@icure/icc-api/api/IccDoctemplateApi.ts","../node_modules/@icure/icc-api/api/IccDocumentApi.ts","../node_modules/@icure/icc-api/api/IccEntityrefApi.ts","../node_modules/@icure/icc-api/api/IccEntitytemplateApi.ts","../node_modules/@icure/icc-api/api/IccFormApi.ts","../node_modules/@icure/icc-api/api/IccFrontendmigrationApi.ts","../node_modules/@icure/icc-api/api/IccGroupApi.ts","../node_modules/@icure/icc-api/api/IccHcpartyApi.ts","../node_modules/@icure/icc-api/api/IccHelementApi.ts","../node_modules/@icure/icc-api/api/IccIcureApi.ts","../node_modules/@icure/icc-api/api/IccInsuranceApi.ts","../node_modules/@icure/icc-api/api/IccInvoiceApi.ts","../node_modules/@icure/icc-api/api/IccKeywordApi.ts","../node_modules/@icure/icc-api/api/IccMaintenanceTaskApi.ts","../node_modules/@icure/icc-api/api/IccMedexApi.ts","../node_modules/@icure/icc-api/api/IccMedicallocationApi.ts","../node_modules/@icure/icc-api/api/IccMessageApi.ts","../node_modules/@icure/icc-api/api/IccPatientApi.ts","../node_modules/@icure/icc-api/api/IccPermissionApi.ts","../node_modules/@icure/icc-api/api/IccPlaceApi.ts","../node_modules/@icure/icc-api/api/IccPubsubApi.ts","../node_modules/@icure/icc-api/api/IccReceiptApi.ts","../node_modules/@icure/icc-api/api/IccReplicationApi.ts","../node_modules/@icure/icc-api/api/IccRestApiPath.ts","../node_modules/@icure/icc-api/api/IccRoleApi.ts","../node_modules/@icure/icc-api/api/IccTarificationApi.ts","../node_modules/@icure/icc-api/api/IccTimeTableApi.ts","../node_modules/@icure/icc-api/api/IccTmpApi.ts","../node_modules/@icure/icc-api/api/IccTopicApi.ts","../node_modules/@icure/icc-api/api/IccUserApi.ts","../node_modules/@icure/icc-api/api/XHR.ts","../node_modules/@icure/icc-api/api/internal/IccExchangeDataApi.ts","../node_modules/@icure/icc-api/api/internal/IccExchangeDataMapApi.ts","../node_modules/@icure/icc-api/api/internal/IccRecoveryDataApi.ts","../node_modules/@icure/icc-api/api/internal/IccSecureDelegationKeyMapApi.ts","../node_modules/@icure/icc-api/index.ts","../node_modules/@icure/icc-api/model/AbstractFilterCode.ts","../node_modules/@icure/icc-api/model/AbstractFilterContact.ts","../node_modules/@icure/icc-api/model/AbstractFilterDevice.ts","../node_modules/@icure/icc-api/model/AbstractFilterHealthElement.ts","../node_modules/@icure/icc-api/model/AbstractFilterHealthcareParty.ts","../node_modules/@icure/icc-api/model/AbstractFilterInvoice.ts","../node_modules/@icure/icc-api/model/AbstractFilterMaintenanceTask.ts","../node_modules/@icure/icc-api/model/AbstractFilterMessage.ts","../node_modules/@icure/icc-api/model/AbstractFilterPatient.ts","../node_modules/@icure/icc-api/model/AbstractFilterService.ts","../node_modules/@icure/icc-api/model/AbstractFilterTopic.ts","../node_modules/@icure/icc-api/model/AbstractFilterUser.ts","../node_modules/@icure/icc-api/model/AccessLog.ts","../node_modules/@icure/icc-api/model/AddedDocument.ts","../node_modules/@icure/icc-api/model/Address.ts","../node_modules/@icure/icc-api/model/AdministrationQuantity.ts","../node_modules/@icure/icc-api/model/Agenda.ts","../node_modules/@icure/icc-api/model/AgreementAppendix.ts","../node_modules/@icure/icc-api/model/Amp.ts","../node_modules/@icure/icc-api/model/AmpComponent.ts","../node_modules/@icure/icc-api/model/Ampp.ts","../node_modules/@icure/icc-api/model/AmppComponent.ts","../node_modules/@icure/icc-api/model/Annotation.ts","../node_modules/@icure/icc-api/model/ApplicationSettings.ts","../node_modules/@icure/icc-api/model/Appointment.ts","../node_modules/@icure/icc-api/model/AppointmentTypeAndPlace.ts","../node_modules/@icure/icc-api/model/Article.ts","../node_modules/@icure/icc-api/model/Atc.ts","../node_modules/@icure/icc-api/model/AttachmentMetadata.ts","../node_modules/@icure/icc-api/model/AuthenticationResponse.ts","../node_modules/@icure/icc-api/model/AuthenticationToken.ts","../node_modules/@icure/icc-api/model/Basic.ts","../node_modules/@icure/icc-api/model/Body.ts","../node_modules/@icure/icc-api/model/BulkAttachmentUpdateOptions.ts","../node_modules/@icure/icc-api/model/CalendarItem.ts","../node_modules/@icure/icc-api/model/CalendarItemTag.ts","../node_modules/@icure/icc-api/model/CalendarItemType.ts","../node_modules/@icure/icc-api/model/CareTeamMember.ts","../node_modules/@icure/icc-api/model/CareTeamMembership.ts","../node_modules/@icure/icc-api/model/CheckSMFPatientResult.ts","../node_modules/@icure/icc-api/model/Classification.ts","../node_modules/@icure/icc-api/model/ClassificationTemplate.ts","../node_modules/@icure/icc-api/model/Code.ts","../node_modules/@icure/icc-api/model/CodeStub.ts","../node_modules/@icure/icc-api/model/CodeType.ts","../node_modules/@icure/icc-api/model/CommentedClassification.ts","../node_modules/@icure/icc-api/model/Commercialization.ts","../node_modules/@icure/icc-api/model/Company.ts","../node_modules/@icure/icc-api/model/Connection.ts","../node_modules/@icure/icc-api/model/Contact.ts","../node_modules/@icure/icc-api/model/Content.ts","../node_modules/@icure/icc-api/model/Copayment.ts","../node_modules/@icure/icc-api/model/CryptoActorStub.ts","../node_modules/@icure/icc-api/model/Data.ts","../node_modules/@icure/icc-api/model/DataAttachment.ts","../node_modules/@icure/icc-api/model/DataOwnerRegistrationSuccess.ts","../node_modules/@icure/icc-api/model/DataOwnerTypeEnum.ts","../node_modules/@icure/icc-api/model/DataOwnerWithType.ts","../node_modules/@icure/icc-api/model/DatabaseInfo.ts","../node_modules/@icure/icc-api/model/DatabaseInitialisation.ts","../node_modules/@icure/icc-api/model/DatabaseSynchronization.ts","../node_modules/@icure/icc-api/model/Delegation.ts","../node_modules/@icure/icc-api/model/DeletedAttachment.ts","../node_modules/@icure/icc-api/model/Device.ts","../node_modules/@icure/icc-api/model/DeviceType.ts","../node_modules/@icure/icc-api/model/DiaryNoteExportInfo.ts","../node_modules/@icure/icc-api/model/Dmpp.ts","../node_modules/@icure/icc-api/model/DocIdentifier.ts","../node_modules/@icure/icc-api/model/Document.ts","../node_modules/@icure/icc-api/model/DocumentGroup.ts","../node_modules/@icure/icc-api/model/DocumentTemplate.ts","../node_modules/@icure/icc-api/model/Duration.ts","../node_modules/@icure/icc-api/model/EIDItem.ts","../node_modules/@icure/icc-api/model/Editor.ts","../node_modules/@icure/icc-api/model/EfactInvoice.ts","../node_modules/@icure/icc-api/model/Employer.ts","../node_modules/@icure/icc-api/model/EmploymentInfo.ts","../node_modules/@icure/icc-api/model/EntityReference.ts","../node_modules/@icure/icc-api/model/EntityTemplate.ts","../node_modules/@icure/icc-api/model/Episode.ts","../node_modules/@icure/icc-api/model/ExchangeDataMapCreationBatch.ts","../node_modules/@icure/icc-api/model/FilterChainCode.ts","../node_modules/@icure/icc-api/model/FilterChainContact.ts","../node_modules/@icure/icc-api/model/FilterChainDevice.ts","../node_modules/@icure/icc-api/model/FilterChainHealthElement.ts","../node_modules/@icure/icc-api/model/FilterChainHealthcareParty.ts","../node_modules/@icure/icc-api/model/FilterChainInvoice.ts","../node_modules/@icure/icc-api/model/FilterChainMaintenanceTask.ts","../node_modules/@icure/icc-api/model/FilterChainPatient.ts","../node_modules/@icure/icc-api/model/FilterChainService.ts","../node_modules/@icure/icc-api/model/FilterChainUser.ts","../node_modules/@icure/icc-api/model/FinancialInstitutionInformation.ts","../node_modules/@icure/icc-api/model/FlatRateTarification.ts","../node_modules/@icure/icc-api/model/FlowItem.ts","../node_modules/@icure/icc-api/model/Form.ts","../node_modules/@icure/icc-api/model/FormColumn.ts","../node_modules/@icure/icc-api/model/FormDataOption.ts","../node_modules/@icure/icc-api/model/FormLayout.ts","../node_modules/@icure/icc-api/model/FormLayoutData.ts","../node_modules/@icure/icc-api/model/FormPlanning.ts","../node_modules/@icure/icc-api/model/FormSection.ts","../node_modules/@icure/icc-api/model/FormTemplate.ts","../node_modules/@icure/icc-api/model/FormTemplateLayout.ts","../node_modules/@icure/icc-api/model/Formula.ts","../node_modules/@icure/icc-api/model/FrontEndMigration.ts","../node_modules/@icure/icc-api/model/Group.ts","../node_modules/@icure/icc-api/model/GroupDatabasesInfo.ts","../node_modules/@icure/icc-api/model/GroupDeletionReport.ts","../node_modules/@icure/icc-api/model/GuiCode.ts","../node_modules/@icure/icc-api/model/GuiCodeType.ts","../node_modules/@icure/icc-api/model/HealthElement.ts","../node_modules/@icure/icc-api/model/HealthcareParty.ts","../node_modules/@icure/icc-api/model/HealthcarePartyHistoryStatus.ts","../node_modules/@icure/icc-api/model/IcureStub.ts","../node_modules/@icure/icc-api/model/IdWithRev.ts","../node_modules/@icure/icc-api/model/Identifier.ts","../node_modules/@icure/icc-api/model/IdentityDocumentReader.ts","../node_modules/@icure/icc-api/model/ImportMapping.ts","../node_modules/@icure/icc-api/model/ImportResult.ts","../node_modules/@icure/icc-api/model/IncapacityExportInfo.ts","../node_modules/@icure/icc-api/model/IndexingInfo.ts","../node_modules/@icure/icc-api/model/Ingredient.ts","../node_modules/@icure/icc-api/model/Insurability.ts","../node_modules/@icure/icc-api/model/Insurance.ts","../node_modules/@icure/icc-api/model/Invoice.ts","../node_modules/@icure/icc-api/model/InvoiceItem.ts","../node_modules/@icure/icc-api/model/InvoiceSender.ts","../node_modules/@icure/icc-api/model/InvoicesBatch.ts","../node_modules/@icure/icc-api/model/InvoicingCode.ts","../node_modules/@icure/icc-api/model/Keyword.ts","../node_modules/@icure/icc-api/model/KeywordSubword.ts","../node_modules/@icure/icc-api/model/LabelledOccurence.ts","../node_modules/@icure/icc-api/model/LetterValue.ts","../node_modules/@icure/icc-api/model/ListOfIds.ts","../node_modules/@icure/icc-api/model/ListOfProperties.ts","../node_modules/@icure/icc-api/model/LoginCredentials.ts","../node_modules/@icure/icc-api/model/MaintenanceTask.ts","../node_modules/@icure/icc-api/model/MapOfIds.ts","../node_modules/@icure/icc-api/model/Measure.ts","../node_modules/@icure/icc-api/model/MedexInfo.ts","../node_modules/@icure/icc-api/model/MedicalHouseContract.ts","../node_modules/@icure/icc-api/model/MedicalLocation.ts","../node_modules/@icure/icc-api/model/Medication.ts","../node_modules/@icure/icc-api/model/MedicationSchemeExportInfo.ts","../node_modules/@icure/icc-api/model/Medicinalproduct.ts","../node_modules/@icure/icc-api/model/Message.ts","../node_modules/@icure/icc-api/model/MessageAttachment.ts","../node_modules/@icure/icc-api/model/MessageReadStatus.ts","../node_modules/@icure/icc-api/model/MessageWithBatch.ts","../node_modules/@icure/icc-api/model/MessagesReadStatusUpdate.ts","../node_modules/@icure/icc-api/model/MikronoAppointmentTypeRest.ts","../node_modules/@icure/icc-api/model/MimeAttachment.ts","../node_modules/@icure/icc-api/model/ModelHelper.ts","../node_modules/@icure/icc-api/model/Nmp.ts","../node_modules/@icure/icc-api/model/NoGenericPrescriptionReason.ts","../node_modules/@icure/icc-api/model/NoSwitchReason.ts","../node_modules/@icure/icc-api/model/NumeratorRange.ts","../node_modules/@icure/icc-api/model/PackagingType.ts","../node_modules/@icure/icc-api/model/PaginatedDocumentKeyIdPairObject.ts","../node_modules/@icure/icc-api/model/PaginatedListAccessLog.ts","../node_modules/@icure/icc-api/model/PaginatedListAgenda.ts","../node_modules/@icure/icc-api/model/PaginatedListAmp.ts","../node_modules/@icure/icc-api/model/PaginatedListCalendarItem.ts","../node_modules/@icure/icc-api/model/PaginatedListCalendarItemType.ts","../node_modules/@icure/icc-api/model/PaginatedListClassification.ts","../node_modules/@icure/icc-api/model/PaginatedListClassificationTemplate.ts","../node_modules/@icure/icc-api/model/PaginatedListCode.ts","../node_modules/@icure/icc-api/model/PaginatedListContact.ts","../node_modules/@icure/icc-api/model/PaginatedListDevice.ts","../node_modules/@icure/icc-api/model/PaginatedListDocument.ts","../node_modules/@icure/icc-api/model/PaginatedListDocumentTemplate.ts","../node_modules/@icure/icc-api/model/PaginatedListEntityTemplate.ts","../node_modules/@icure/icc-api/model/PaginatedListExchangeData.ts","../node_modules/@icure/icc-api/model/PaginatedListForm.ts","../node_modules/@icure/icc-api/model/PaginatedListGroup.ts","../node_modules/@icure/icc-api/model/PaginatedListHealthElement.ts","../node_modules/@icure/icc-api/model/PaginatedListHealthcareParty.ts","../node_modules/@icure/icc-api/model/PaginatedListInsurance.ts","../node_modules/@icure/icc-api/model/PaginatedListInvoice.ts","../node_modules/@icure/icc-api/model/PaginatedListKeyword.ts","../node_modules/@icure/icc-api/model/PaginatedListMaintenanceTask.ts","../node_modules/@icure/icc-api/model/PaginatedListMedicalLocation.ts","../node_modules/@icure/icc-api/model/PaginatedListMessage.ts","../node_modules/@icure/icc-api/model/PaginatedListNmp.ts","../node_modules/@icure/icc-api/model/PaginatedListPatient.ts","../node_modules/@icure/icc-api/model/PaginatedListPlace.ts","../node_modules/@icure/icc-api/model/PaginatedListService.ts","../node_modules/@icure/icc-api/model/PaginatedListString.ts","../node_modules/@icure/icc-api/model/PaginatedListTarification.ts","../node_modules/@icure/icc-api/model/PaginatedListTopic.ts","../node_modules/@icure/icc-api/model/PaginatedListUser.ts","../node_modules/@icure/icc-api/model/PaginatedListVmp.ts","../node_modules/@icure/icc-api/model/PaginatedListVmpGroup.ts","../node_modules/@icure/icc-api/model/Paragraph.ts","../node_modules/@icure/icc-api/model/ParagraphAgreement.ts","../node_modules/@icure/icc-api/model/Part.ts","../node_modules/@icure/icc-api/model/Partnership.ts","../node_modules/@icure/icc-api/model/Patient.ts","../node_modules/@icure/icc-api/model/PatientHealthCareParty.ts","../node_modules/@icure/icc-api/model/Payment.ts","../node_modules/@icure/icc-api/model/Periodicity.ts","../node_modules/@icure/icc-api/model/Permission.ts","../node_modules/@icure/icc-api/model/PermissionItem.ts","../node_modules/@icure/icc-api/model/PersonName.ts","../node_modules/@icure/icc-api/model/PharmaceuticalForm.ts","../node_modules/@icure/icc-api/model/PharmaceuticalFormStub.ts","../node_modules/@icure/icc-api/model/Place.ts","../node_modules/@icure/icc-api/model/PlanOfAction.ts","../node_modules/@icure/icc-api/model/Predicate.ts","../node_modules/@icure/icc-api/model/Pricing.ts","../node_modules/@icure/icc-api/model/PropertyStub.ts","../node_modules/@icure/icc-api/model/PropertyTypeStub.ts","../node_modules/@icure/icc-api/model/PublicKey.ts","../node_modules/@icure/icc-api/model/Quantity.ts","../node_modules/@icure/icc-api/model/Range.ts","../node_modules/@icure/icc-api/model/Receipt.ts","../node_modules/@icure/icc-api/model/ReferenceRange.ts","../node_modules/@icure/icc-api/model/ReferralPeriod.ts","../node_modules/@icure/icc-api/model/RegimenItem.ts","../node_modules/@icure/icc-api/model/RegistrationInformation.ts","../node_modules/@icure/icc-api/model/RegistrationSuccess.ts","../node_modules/@icure/icc-api/model/Reimbursement.ts","../node_modules/@icure/icc-api/model/ReimbursementCriterion.ts","../node_modules/@icure/icc-api/model/Remote.ts","../node_modules/@icure/icc-api/model/RemoteAuthentication.ts","../node_modules/@icure/icc-api/model/Renewal.ts","../node_modules/@icure/icc-api/model/ReplicateCommand.ts","../node_modules/@icure/icc-api/model/Replication.ts","../node_modules/@icure/icc-api/model/ReplicationInfo.ts","../node_modules/@icure/icc-api/model/ReplicationStats.ts","../node_modules/@icure/icc-api/model/ReplicatorDocument.ts","../node_modules/@icure/icc-api/model/ReplicatorResponse.ts","../node_modules/@icure/icc-api/model/ResultInfo.ts","../node_modules/@icure/icc-api/model/Right.ts","../node_modules/@icure/icc-api/model/Role.ts","../node_modules/@icure/icc-api/model/RoleConfiguration.ts","../node_modules/@icure/icc-api/model/RoleSourceEnum.ts","../node_modules/@icure/icc-api/model/RouteOfAdministration.ts","../node_modules/@icure/icc-api/model/SamText.ts","../node_modules/@icure/icc-api/model/SamVersion.ts","../node_modules/@icure/icc-api/model/SchoolingInfo.ts","../node_modules/@icure/icc-api/model/Section.ts","../node_modules/@icure/icc-api/model/SecureDelegation.ts","../node_modules/@icure/icc-api/model/SecurityMetadata.ts","../node_modules/@icure/icc-api/model/Service.ts","../node_modules/@icure/icc-api/model/ServiceLink.ts","../node_modules/@icure/icc-api/model/SoftwareMedicalFileExport.ts","../node_modules/@icure/icc-api/model/StandardSubstance.ts","../node_modules/@icure/icc-api/model/StrengthRange.ts","../node_modules/@icure/icc-api/model/StructureElement.ts","../node_modules/@icure/icc-api/model/SubContact.ts","../node_modules/@icure/icc-api/model/Substance.ts","../node_modules/@icure/icc-api/model/SubstanceStub.ts","../node_modules/@icure/icc-api/model/Substanceproduct.ts","../node_modules/@icure/icc-api/model/Suggest.ts","../node_modules/@icure/icc-api/model/SumehrContent.ts","../node_modules/@icure/icc-api/model/SumehrExportInfo.ts","../node_modules/@icure/icc-api/model/SumehrValidity.ts","../node_modules/@icure/icc-api/model/SupplyProblem.ts","../node_modules/@icure/icc-api/model/Suspension.ts","../node_modules/@icure/icc-api/model/Tag.ts","../node_modules/@icure/icc-api/model/Tarification.ts","../node_modules/@icure/icc-api/model/Telecom.ts","../node_modules/@icure/icc-api/model/TimeSeries.ts","../node_modules/@icure/icc-api/model/TimeTable.ts","../node_modules/@icure/icc-api/model/TimeTableHour.ts","../node_modules/@icure/icc-api/model/TimeTableItem.ts","../node_modules/@icure/icc-api/model/TokenWithGroup.ts","../node_modules/@icure/icc-api/model/Topic.ts","../node_modules/@icure/icc-api/model/TypedValueObject.ts","../node_modules/@icure/icc-api/model/Unit.ts","../node_modules/@icure/icc-api/model/User.ts","../node_modules/@icure/icc-api/model/UserAndHealthcareParty.ts","../node_modules/@icure/icc-api/model/UserGroup.ts","../node_modules/@icure/icc-api/model/UserTypeEnum.ts","../node_modules/@icure/icc-api/model/Valorisation.ts","../node_modules/@icure/icc-api/model/Verse.ts","../node_modules/@icure/icc-api/model/VirtualForm.ts","../node_modules/@icure/icc-api/model/VirtualIngredient.ts","../node_modules/@icure/icc-api/model/Vmp.ts","../node_modules/@icure/icc-api/model/VmpComponent.ts","../node_modules/@icure/icc-api/model/VmpGroup.ts","../node_modules/@icure/icc-api/model/VmpGroupStub.ts","../node_modules/@icure/icc-api/model/VmpStub.ts","../node_modules/@icure/icc-api/model/Vtm.ts","../node_modules/@icure/icc-api/model/Wada.ts","../node_modules/@icure/icc-api/model/Weekday.ts","../node_modules/@icure/icc-api/model/internal/ExchangeData.ts","../node_modules/@icure/icc-api/model/internal/RecoveryData.ts","../node_modules/@icure/icc-api/model/internal/SecureDelegationKeyMap.ts","../node_modules/@icure/icc-api/model/models.ts","../node_modules/@icure/icc-api/model/requests/EntityBulkShareResult.ts","../node_modules/@icure/icc-api/model/requests/EntityShareRequest.ts","../node_modules/@icure/icc-api/model/requests/EntitySharedMetadataUpdateRequest.ts","../node_modules/@icure/icc-api/model/requests/MinimalEntityBulkShareResult.ts","../node_modules/@icure/icc-x-api/auth/AuthenticationProvider.ts","../node_modules/@icure/icc-x-api/auth/BasicAuthService.ts","../node_modules/@icure/icc-x-api/auth/EnsembleAuthService.ts","../node_modules/@icure/icc-x-api/auth/JwtAuthService.ts","../node_modules/@icure/icc-x-api/auth/JwtBridgedAuthService.ts","../node_modules/@icure/icc-x-api/auth/JwtError.ts","../node_modules/@icure/icc-x-api/auth/JwtUtils.ts","../node_modules/@icure/icc-x-api/auth/NoAuthService.ts","../node_modules/@icure/icc-x-api/auth/SmartAuthProvider.ts","../node_modules/@icure/icc-x-api/crypto/AES.ts","../node_modules/@icure/icc-x-api/crypto/AccessControlKeysHeadersProvider.ts","../node_modules/@icure/icc-x-api/crypto/AccessControlSecretUtils.ts","../node_modules/@icure/icc-x-api/crypto/BaseExchangeDataManager.ts","../node_modules/@icure/icc-x-api/crypto/BaseExchangeKeysManager.ts","../node_modules/@icure/icc-x-api/crypto/ConfidentialEntities.ts","../node_modules/@icure/icc-x-api/crypto/CryptoPrimitives.ts","../node_modules/@icure/icc-x-api/crypto/DelegationsDeAnonymization.ts","../node_modules/@icure/icc-x-api/crypto/ExchangeDataManager.ts","../node_modules/@icure/icc-x-api/crypto/ExchangeDataMapManager.ts","../node_modules/@icure/icc-x-api/crypto/ExchangeKeysManager.ts","../node_modules/@icure/icc-x-api/crypto/ExtendedApisUtilsImpl.ts","../node_modules/@icure/icc-x-api/crypto/HMACUtils.ts","../node_modules/@icure/icc-x-api/crypto/KeyPairRecoverer.ts","../node_modules/@icure/icc-x-api/crypto/KeyRecovery.ts","../node_modules/@icure/icc-x-api/crypto/NativeCryptoPrimitivesBridge.ts","../node_modules/@icure/icc-x-api/crypto/RSA.ts","../node_modules/@icure/icc-x-api/crypto/RecoveryDataEncryption.ts","../node_modules/@icure/icc-x-api/crypto/SecureDelegationsEncryption.ts","../node_modules/@icure/icc-x-api/crypto/SecureDelegationsManager.ts","../node_modules/@icure/icc-x-api/crypto/SecurityMetadataDecryptor.ts","../node_modules/@icure/icc-x-api/crypto/ShamirKeysManager.ts","../node_modules/@icure/icc-x-api/crypto/ShareMetadataBehaviour.ts","../node_modules/@icure/icc-x-api/crypto/TransferKeysManager.ts","../node_modules/@icure/icc-x-api/crypto/UserEncryptionKeysManager.ts","../node_modules/@icure/icc-x-api/crypto/shamir.ts","../node_modules/@icure/icc-x-api/crypto/utils.ts","../node_modules/@icure/icc-x-api/filters/AllCodesFilter.ts","../node_modules/@icure/icc-x-api/filters/AllDevicesFilter.ts","../node_modules/@icure/icc-x-api/filters/AllHealthcarePartiesFilter.ts","../node_modules/@icure/icc-x-api/filters/AllUsersFilter.ts","../node_modules/@icure/icc-x-api/filters/CodeByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.ts","../node_modules/@icure/icc-x-api/filters/ComplementFilter.ts","../node_modules/@icure/icc-x-api/filters/ConstantFilter.ts","../node_modules/@icure/icc-x-api/filters/ContactByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.ts","../node_modules/@icure/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.ts","../node_modules/@icure/icc-x-api/filters/ContactByServiceIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/DeviceByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/DeviceByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthElementByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthcarePartyByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthcarePartyByNameFilter.ts","../node_modules/@icure/icc-x-api/filters/HealthcarePartyByTagCodeFilter.ts","../node_modules/@icure/icc-x-api/filters/IntersectionFilter.ts","../node_modules/@icure/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.ts","../node_modules/@icure/icc-x-api/filters/LatestMessageByHcPartyTransportGuidFilter.ts","../node_modules/@icure/icc-x-api/filters/MaintenanceTaskAfterDateFilter.ts","../node_modules/@icure/icc-x-api/filters/MaintenanceTaskByHcPartyAndIdentifiersFilter.ts","../node_modules/@icure/icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter.ts","../node_modules/@icure/icc-x-api/filters/MaintenanceTaskByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/MessageByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/MessageByHcPartyTransportGuidFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndActiveFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndAddressFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndSsinFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyGenderEducationProfessionFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByHcPartyNameFilter.ts","../node_modules/@icure/icc-x-api/filters/PatientByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByHcPartyHealthElementIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/ServiceBySecretForeignKeys.ts","../node_modules/@icure/icc-x-api/filters/TopicByHcPartyFilter.ts","../node_modules/@icure/icc-x-api/filters/TopicByParticipantFilter.ts","../node_modules/@icure/icc-x-api/filters/UnionFilter.ts","../node_modules/@icure/icc-x-api/filters/UserByIdsFilter.ts","../node_modules/@icure/icc-x-api/filters/filters.ts","../node_modules/@icure/icc-x-api/icc-accesslog-x-api.ts","../node_modules/@icure/icc-x-api/icc-bekmehr-x-api.ts","../node_modules/@icure/icc-x-api/icc-calendar-item-x-api.ts","../node_modules/@icure/icc-x-api/icc-classification-x-api.ts","../node_modules/@icure/icc-x-api/icc-code-x-api.ts","../node_modules/@icure/icc-x-api/icc-contact-x-api.ts","../node_modules/@icure/icc-x-api/icc-crypto-x-api.ts","../node_modules/@icure/icc-x-api/icc-data-owner-x-api.ts","../node_modules/@icure/icc-x-api/icc-device-x-api.ts","../node_modules/@icure/icc-x-api/icc-doctemplate-x-api.ts","../node_modules/@icure/icc-x-api/icc-document-x-api.ts","../node_modules/@icure/icc-x-api/icc-form-x-api.ts","../node_modules/@icure/icc-x-api/icc-hcparty-x-api.ts","../node_modules/@icure/icc-x-api/icc-helement-x-api.ts","../node_modules/@icure/icc-x-api/icc-icure-maintenance-x-api.ts","../node_modules/@icure/icc-x-api/icc-invoice-x-api.ts","../node_modules/@icure/icc-x-api/icc-maintenance-task-x-api.ts","../node_modules/@icure/icc-x-api/icc-message-x-api.ts","../node_modules/@icure/icc-x-api/icc-patient-x-api.ts","../node_modules/@icure/icc-x-api/icc-receipt-x-api.ts","../node_modules/@icure/icc-x-api/icc-recovery-x-api.ts","../node_modules/@icure/icc-x-api/icc-time-table-x-api.ts","../node_modules/@icure/icc-x-api/icc-topic-x-api.ts","../node_modules/@icure/icc-x-api/icc-user-x-api.ts","../node_modules/@icure/icc-x-api/index.ts","../node_modules/@icure/icc-x-api/maintenance/KeyPairUpdateRequest.ts","../node_modules/@icure/icc-x-api/rsrc/codelng.ts","../node_modules/@icure/icc-x-api/rsrc/contact.i18n.ts","../node_modules/@icure/icc-x-api/rsrc/icd10.ts","../node_modules/@icure/icc-x-api/rsrc/icpc2.ts","../node_modules/@icure/icc-x-api/storage/DefaultStorageEntryKeysFactory.ts","../node_modules/@icure/icc-x-api/storage/IcureStorageFacade.ts","../node_modules/@icure/icc-x-api/storage/KeyStorageImpl.ts","../node_modules/@icure/icc-x-api/storage/LocalStorageImpl.ts","../node_modules/@icure/icc-x-api/utils/EntityWithDelegationTypeName.ts","../node_modules/@icure/icc-x-api/utils/ShareResult.ts","../node_modules/@icure/icc-x-api/utils/asn1-packer.ts","../node_modules/@icure/icc-x-api/utils/asn1-parser.ts","../node_modules/@icure/icc-x-api/utils/binary-utils.ts","../node_modules/@icure/icc-x-api/utils/code-util.ts","../node_modules/@icure/icc-x-api/utils/collection-utils.ts","../node_modules/@icure/icc-x-api/utils/crypto-utils.ts","../node_modules/@icure/icc-x-api/utils/formatting-util.ts","../node_modules/@icure/icc-x-api/utils/functional-util.ts","../node_modules/@icure/icc-x-api/utils/graph-utils.ts","../node_modules/@icure/icc-x-api/utils/hcp-util.ts","../node_modules/@icure/icc-x-api/utils/index.ts","../node_modules/@icure/icc-x-api/utils/lru-temporised-async-cache.ts","../node_modules/@icure/icc-x-api/utils/net-utils.ts","../node_modules/@icure/icc-x-api/utils/person-util.ts","../node_modules/@icure/icc-x-api/utils/simple-lru-cache.ts","../node_modules/@icure/icc-x-api/utils/websocket.ts","../node_modules/@icure/index.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccAccesslogApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccAgendaApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccAnonymousAccessApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccApplicationsettingsApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccArticleApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccAuthApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccBeefactApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccBekmehrApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccBeresultexportApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccBeresultimportApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccBesamv2Api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccCalendarItemApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccCalendarItemTypeApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccClassificationApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccClassificationTemplateApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccCodeApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccContactApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccDataownerApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccDeviceApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccDoctemplateApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccDocumentApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccEntityrefApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccEntitytemplateApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccFormApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccFrontendmigrationApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccGroupApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccHcpartyApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccHelementApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccIcureApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccInsuranceApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccInvoiceApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccKeywordApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccMaintenanceTaskApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccMedexApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccMedicallocationApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccMessageApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccPatientApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccPermissionApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccPlaceApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccPubsubApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccReceiptApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccReplicationApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccRestApiPath.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccTarificationApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccTimeTableApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccTmpApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/IccUserApi.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/api/XHR.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/index.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterCode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterContact.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterDevice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterHealthElement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterHealthcareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterInvoice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterMaintenanceTask.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterPatient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AbstractFilterUser.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AccessLog.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AddedDocument.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Address.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AdministrationQuantity.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Agenda.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AgreementAppendix.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Amp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AmpComponent.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Ampp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AmppComponent.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Annotation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ApplicationSettings.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AppointmentTypeAndPlace.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Article.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Atc.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AttachmentMetadata.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AuthenticationResponse.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/AuthenticationToken.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Basic.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Body.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/BulkAttachmentUpdateOptions.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CalendarItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CalendarItemTag.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CalendarItemType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CareTeamMember.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CareTeamMembership.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CheckSMFPatientResult.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Classification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ClassificationTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Code.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CodeStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CodeType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CommentedClassification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Commercialization.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Company.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Contact.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Content.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Copayment.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/CryptoActorStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Data.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DataAttachment.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DataOwnerRegistrationSuccess.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DataOwnerTypeEnum.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DataOwnerWithType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DatabaseInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DatabaseInitialisation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DatabaseSynchronization.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Delegation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DeletedAttachment.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Device.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DeviceType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DiaryNoteExportInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Dmpp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DocIdentifier.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Document.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DocumentGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/DocumentTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Duration.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/EIDItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Editor.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/EfactInvoice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Employer.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/EmploymentInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/EntityReference.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/EntityTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Episode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainCode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainContact.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainDevice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainHealthElement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainHealthcareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainInvoice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainMaintenanceTask.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainPatient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FilterChainUser.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FinancialInstitutionInformation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FlatRateTarification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FlowItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Form.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormColumn.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormDataOption.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormLayout.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormLayoutData.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormPlanning.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormSection.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FormTemplateLayout.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Formula.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/FrontEndMigration.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Group.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/GroupDatabasesInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/GroupDeletionReport.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/GuiCode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/GuiCodeType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/HealthElement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/HealthcareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/HealthcarePartyHistoryStatus.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/IcureStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/IdWithRev.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Identifier.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/IdentityDocumentReader.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ImportMapping.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ImportResult.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/IncapacityExportInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/IndexingInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Ingredient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Insurability.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Insurance.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Invoice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/InvoiceItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/InvoiceSender.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/InvoicesBatch.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/InvoicingCode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Keyword.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/KeywordSubword.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/LabelledOccurence.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/LetterValue.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ListOfIds.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ListOfProperties.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/LoginCredentials.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MaintenanceTask.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MapOfIds.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Measure.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MedexInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MedicalHouseContract.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MedicalLocation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Medication.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MedicationSchemeExportInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Medicinalproduct.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Message.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MessageReadStatus.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MessageWithBatch.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MessagesReadStatusUpdate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/MimeAttachment.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ModelHelper.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Nmp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/NoGenericPrescriptionReason.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/NoSwitchReason.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/NumeratorRange.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PackagingType.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedDocumentKeyIdPairObject.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListAccessLog.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListAmp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListClassification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListClassificationTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListCode.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListContact.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListDevice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListDocument.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListEntityTemplate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListForm.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListHealthElement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListHealthcareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListInvoice.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListMaintenanceTask.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListMessage.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListNmp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListPatient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListString.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListTarification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListUser.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListVmp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PaginatedListVmpGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Paragraph.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ParagraphAgreement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Part.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Partnership.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Patient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PatientHealthCareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Payment.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Periodicity.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Permission.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PermissionItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PersonName.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PharmaceuticalForm.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PharmaceuticalFormStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Place.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PlanOfAction.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Predicate.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Pricing.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PropertyStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PropertyTypeStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/PublicKey.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Quantity.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Receipt.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReferralPeriod.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/RegimenItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/RegistrationInformation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/RegistrationSuccess.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Reimbursement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReimbursementCriterion.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Remote.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/RemoteAuthentication.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Renewal.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReplicateCommand.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Replication.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReplicationInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReplicationStats.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReplicatorDocument.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ReplicatorResponse.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ResultInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Right.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/RouteOfAdministration.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SamText.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SamVersion.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SchoolingInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Section.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Service.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/ServiceLink.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SoftwareMedicalFileExport.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/StandardSubstance.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/StrengthRange.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/StructureElement.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SubContact.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Substance.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SubstanceStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Substanceproduct.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Suggest.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SumehrContent.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SumehrExportInfo.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SumehrValidity.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/SupplyProblem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Suspension.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Tag.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Tarification.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Telecom.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TimeSeries.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TimeTable.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TimeTableHour.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TimeTableItem.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TokenWithGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/TypedValueObject.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Unit.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/User.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/UserAndHealthcareParty.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/UserGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Valorisation.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Verse.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VirtualForm.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VirtualIngredient.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Vmp.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VmpComponent.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VmpGroup.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VmpGroupStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/VmpStub.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Vtm.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Wada.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/Weekday.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-api/model/models.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/AuthenticationProvider.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/BasicAuthService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/EnsembleAuthService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/JwtAuthService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/JwtBridgedAuthService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/auth/NoAuthService.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/AES.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/BaseExchangeKeysManager.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/ConfidentialEntities.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/CryptoPrimitives.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/EntitiesEncryption.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/ExchangeKeysManager.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/KeyManager.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/KeyRecovery.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/RSA.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/ShamirKeysManager.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/ShareMetadataBehaviour.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/TransferKeysManager.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/shamir.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/crypto/utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/AllCodesFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/AllDevicesFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/AllHealthcarePartiesFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/AllUsersFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/CodeByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/CodeByRegionTypeLabelLanguageFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ComplementFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ConstantFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ContactByHcPartyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ContactByHcPartyPatientTagCodeDateFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ContactByHcPartyTagCodeDateFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ContactByServiceIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/DeviceByHcPartyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/DeviceByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyIdentifiersFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthElementByHcPartySecretForeignKeysFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthElementByHcPartyTagCodeFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthElementByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthcarePartyByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthcarePartyByNameFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/HealthcarePartyByTagCodeFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/IntersectionFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/InvoiceByHcPartyCodeDateFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/MaintenanceTaskAfterDateFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/MaintenanceTaskByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndActiveFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndAddressFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndExternalIdFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndIdentifiersFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndSsinFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyAndSsinsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyDateOfBirthBetweenFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyDateOfBirthFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyGenderEducationProfession.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyNameContainsFuzzyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByHcPartyNameFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/PatientByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByContactsAndSubcontactsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByHcPartyFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByHcPartyHealthElementIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByHcPartyIdentifiersFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByHcPartyTagCodeDateFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/ServiceBySecretForeignKeys.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/UnionFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/UserByIdsFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/UsersByPatientIdFilter.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/filters/filters.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-accesslog-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-bekmehr-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-calendar-item-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-classification-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-code-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-contact-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-crypto-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-data-owner-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-doctemplate-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-document-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-form-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-hcparty-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-helement-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-icure-maintenance-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-invoice-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-maintenance-task-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-message-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-patient-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-receipt-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-time-table-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/icc-user-x-api.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/index.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/maintenance/KeyPairUpdateRequest.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/rsrc/codelng.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/rsrc/contact.i18n.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/rsrc/icd10.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/rsrc/icpc2.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/storage/DefaultStorageEntryKeysFactory.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/storage/IcureStorageFacade.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/storage/KeyStorageImpl.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/storage/LocalStorageImpl.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/asn1-packer.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/asn1-parser.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/binary-utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/code-util.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/collection-utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/crypto-utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/formatting-util.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/functional-util.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/graph-utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/hcp-util.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/index.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/lru-temporised-async-cache.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/net-utils.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/person-util.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/icc-x-api/utils/uuid-encoder.ts","../node_modules/@icure/medical-device-sdk/node_modules/@icure/index.ts","../node_modules/@icure/medical-device-sdk/node_modules/browser-or-node/lib/index.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/regex.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/validate.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/v1.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/parse.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/v35.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/md5.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/v3.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/sha1.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/v5.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/nil.js","../node_modules/@icure/medical-device-sdk/node_modules/uuid/dist/esm-browser/version.js","../node_modules/@icure/src/apis/AnonymousMedTechApi.ts","../node_modules/@icure/src/apis/MedTechApi.ts","../node_modules/@icure/src/apis/impl/AuthenticationApiImpl.ts","../node_modules/@icure/src/apis/impl/CodingApiImpl.ts","../node_modules/@icure/src/apis/impl/DataOwnerApiImpl.ts","../node_modules/@icure/src/apis/impl/DataSampleApiImpl.ts","../node_modules/@icure/src/apis/impl/HealthcareElementApiImpl.ts","../node_modules/@icure/src/apis/impl/HealthcareProfessionalApiImpl.ts","../node_modules/@icure/src/apis/impl/MedTechCryptoStrategiesBridge.ts","../node_modules/@icure/src/apis/impl/MedicalDeviceApiImpl.ts","../node_modules/@icure/src/apis/impl/MessageGatewayApiImpl.ts","../node_modules/@icure/src/apis/impl/NotificationApiImpl.ts","../node_modules/@icure/src/apis/impl/PatientApiImpl.ts","../node_modules/@icure/src/apis/impl/UserApiImpl.ts","../node_modules/@icure/src/filter/dsl/CodingFilterDsl.ts","../node_modules/@icure/src/filter/dsl/DataSampleFilterDsl.ts","../node_modules/@icure/src/filter/dsl/HealthcareElementFilterDsl.ts","../node_modules/@icure/src/filter/dsl/HealthcareProfessionalDsl.ts","../node_modules/@icure/src/filter/dsl/MedicalDeviceFilterDsl.ts","../node_modules/@icure/src/filter/dsl/NotificationFilterDsl.ts","../node_modules/@icure/src/filter/dsl/PatientFilterDsl.ts","../node_modules/@icure/src/filter/dsl/SortableFilterBuilderAccumulator.ts","../node_modules/@icure/src/filter/dsl/UserFilterDsl.ts","../node_modules/@icure/src/filter/dsl/filterDsl.ts","../node_modules/@icure/src/filter/index.ts","../node_modules/@icure/src/mappers/address.ts","../node_modules/@icure/src/mappers/authenticationToken.ts","../node_modules/@icure/src/mappers/codeCoding.ts","../node_modules/@icure/src/mappers/codeStubCodingReference.ts","../node_modules/@icure/src/mappers/dataOwner.ts","../node_modules/@icure/src/mappers/delegation.ts","../node_modules/@icure/src/mappers/document.ts","../node_modules/@icure/src/mappers/filter.ts","../node_modules/@icure/src/mappers/healthcareElement.ts","../node_modules/@icure/src/mappers/healthcareProfessional.ts","../node_modules/@icure/src/mappers/identifier.ts","../node_modules/@icure/src/mappers/medicalDevice.ts","../node_modules/@icure/src/mappers/metadata.ts","../node_modules/@icure/src/mappers/notification.ts","../node_modules/@icure/src/mappers/paginatedList.ts","../node_modules/@icure/src/mappers/partnership.ts","../node_modules/@icure/src/mappers/patient.ts","../node_modules/@icure/src/mappers/patientHealthcareParty.ts","../node_modules/@icure/src/mappers/personName.ts","../node_modules/@icure/src/mappers/property.ts","../node_modules/@icure/src/mappers/propertyType.ts","../node_modules/@icure/src/mappers/serviceDataSample.ts","../node_modules/@icure/src/mappers/timeSeries.ts","../node_modules/@icure/src/mappers/typedValueObject.ts","../node_modules/@icure/src/mappers/user.ts","../node_modules/@icure/src/mappers/utils.ts","../node_modules/@icure/src/models/Address.ts","../node_modules/@icure/src/models/AuthenticationProcess.ts","../node_modules/@icure/src/models/AuthenticationResult.ts","../node_modules/@icure/src/models/AuthenticationToken.ts","../node_modules/@icure/src/models/Coding.ts","../node_modules/@icure/src/models/CodingReference.ts","../node_modules/@icure/src/models/Connection.ts","../node_modules/@icure/src/models/Content.ts","../node_modules/@icure/src/models/DataOwner.ts","../node_modules/@icure/src/models/DataSample.ts","../node_modules/@icure/src/models/Delegation.ts","../node_modules/@icure/src/models/Document.ts","../node_modules/@icure/src/models/Filter.ts","../node_modules/@icure/src/models/HealthcareElement.ts","../node_modules/@icure/src/models/HealthcareProfessional.ts","../node_modules/@icure/src/models/Identifier.ts","../node_modules/@icure/src/models/InlineResponse403.ts","../node_modules/@icure/src/models/Measure.ts","../node_modules/@icure/src/models/MedicalDevice.ts","../node_modules/@icure/src/models/Notification.ts","../node_modules/@icure/src/models/PaginatedDocumentKeyAndIdPairObject.ts","../node_modules/@icure/src/models/PaginatedListCoding.ts","../node_modules/@icure/src/models/PaginatedListDataSample.ts","../node_modules/@icure/src/models/PaginatedListHealthcareElement.ts","../node_modules/@icure/src/models/PaginatedListHealthcareProfessional.ts","../node_modules/@icure/src/models/PaginatedListMedicalDevice.ts","../node_modules/@icure/src/models/PaginatedListNotification.ts","../node_modules/@icure/src/models/PaginatedListPatient.ts","../node_modules/@icure/src/models/PaginatedListUser.ts","../node_modules/@icure/src/models/Partnership.ts","../node_modules/@icure/src/models/Patient.ts","../node_modules/@icure/src/models/PatientHealthCareParty.ts","../node_modules/@icure/src/models/PersonName.ts","../node_modules/@icure/src/models/Property.ts","../node_modules/@icure/src/models/PropertyType.ts","../node_modules/@icure/src/models/SecureDelegation.ts","../node_modules/@icure/src/models/SecurityMetaData.ts","../node_modules/@icure/src/models/SystemMetaDataEncrypted.ts","../node_modules/@icure/src/models/SystemMetaDataOwner.ts","../node_modules/@icure/src/models/SystemMetaDataOwnerEncrypted.ts","../node_modules/@icure/src/models/Telecom.ts","../node_modules/@icure/src/models/TimeSeries.ts","../node_modules/@icure/src/models/TypedValueObject.ts","../node_modules/@icure/src/models/User.ts","../node_modules/@icure/src/models/all.ts","../node_modules/@icure/src/services/ErrorHandler.ts","../node_modules/@icure/src/services/MedTechCryptoStrategies.ts","../node_modules/@icure/src/services/impl/ErrorHandlerImpl.ts","../node_modules/@icure/src/services/impl/SanitizerImpl.ts","../node_modules/@icure/src/services/impl/SimpleMedTechCryptoStrategies.ts","../node_modules/@icure/src/util.ts","../node_modules/@icure/src/utils/addressUtils.ts","../node_modules/@icure/src/utils/cachedMap.ts","../node_modules/@icure/src/utils/equality.ts","../node_modules/@icure/src/utils/filterUndefined.ts","../node_modules/@icure/src/utils/functionalUtils.ts","../node_modules/@icure/src/utils/msgGtwMessageFactory.ts","../node_modules/@icure/src/utils/utiDetector.ts","../node_modules/@icure/src/utils/websocket.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/extensions.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/constants.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/exports.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/session.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/scope.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/version.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/hub.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/metrics/metric-summary.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/semanticAttributes.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/errors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/hubextensions.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/idletransaction.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/sampling.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/span.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/spanstatus.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/handleCallbackErrors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/trace.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/transaction.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/baggage.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/is.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/logger.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/misc.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/node.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/env.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/object.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/time.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/worldwide.ts","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/errors.js","../node_modules/async-mutex/lib/index.js","../node_modules/async-mutex/lib/tryAcquire.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/big-integer/BigInteger.js","../node_modules/browser-or-node/dist/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/add/index.js","../node_modules/date-fns/esm/isWeekend/index.js","../node_modules/date-fns/esm/isSunday/index.js","../node_modules/date-fns/esm/isSaturday/index.js","../node_modules/date-fns/esm/addBusinessDays/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/setISOWeekYear/index.js","../node_modules/date-fns/esm/addISOWeekYears/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addQuarters/index.js","../node_modules/date-fns/esm/addSeconds/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/areIntervalsOverlapping/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/date-fns/esm/clamp/index.js","../node_modules/date-fns/esm/closestIndexTo/index.js","../node_modules/date-fns/esm/closestTo/index.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/compareDesc/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/daysToWeeks/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/differenceInBusinessDays/index.js","../node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","../node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/differenceInDays/index.js","../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../node_modules/date-fns/esm/differenceInHours/index.js","../node_modules/date-fns/esm/subISOWeekYears/index.js","../node_modules/date-fns/esm/differenceInISOWeekYears/index.js","../node_modules/date-fns/esm/differenceInMinutes/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../node_modules/date-fns/esm/differenceInMonths/index.js","../node_modules/date-fns/esm/differenceInQuarters/index.js","../node_modules/date-fns/esm/differenceInSeconds/index.js","../node_modules/date-fns/esm/differenceInWeeks/index.js","../node_modules/date-fns/esm/differenceInYears/index.js","../node_modules/date-fns/esm/eachDayOfInterval/index.js","../node_modules/date-fns/esm/eachHourOfInterval/index.js","../node_modules/date-fns/esm/startOfMinute/index.js","../node_modules/date-fns/esm/eachMinuteOfInterval/index.js","../node_modules/date-fns/esm/eachMonthOfInterval/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/eachQuarterOfInterval/index.js","../node_modules/date-fns/esm/eachWeekOfInterval/index.js","../node_modules/date-fns/esm/eachWeekendOfInterval/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/eachWeekendOfMonth/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/eachWeekendOfYear/index.js","../node_modules/date-fns/esm/eachYearOfInterval/index.js","../node_modules/date-fns/esm/endOfDecade/index.js","../node_modules/date-fns/esm/endOfHour/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfISOWeek/index.js","../node_modules/date-fns/esm/endOfISOWeekYear/index.js","../node_modules/date-fns/esm/endOfMinute/index.js","../node_modules/date-fns/esm/endOfQuarter/index.js","../node_modules/date-fns/esm/endOfSecond/index.js","../node_modules/date-fns/esm/endOfToday/index.js","../node_modules/date-fns/esm/endOfTomorrow/index.js","../node_modules/date-fns/esm/endOfYesterday/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/formatDistance/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/formatDistanceToNow/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../node_modules/date-fns/esm/formatDuration/index.js","../node_modules/date-fns/esm/formatISO/index.js","../node_modules/date-fns/esm/formatISO9075/index.js","../node_modules/date-fns/esm/formatISODuration/index.js","../node_modules/date-fns/esm/formatRFC3339/index.js","../node_modules/date-fns/esm/formatRFC7231/index.js","../node_modules/date-fns/esm/formatRelative/index.js","../node_modules/date-fns/esm/fromUnixTime/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getDayOfYear/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/isLeapYear/index.js","../node_modules/date-fns/esm/getDaysInYear/index.js","../node_modules/date-fns/esm/getDecade/index.js","../node_modules/date-fns/esm/getDefaultOptions/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/getISODay/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getISOWeeksInYear/index.js","../node_modules/date-fns/esm/getMilliseconds/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getUnixTime/index.js","../node_modules/date-fns/esm/getWeekYear/index.js","../node_modules/date-fns/esm/startOfWeekYear/index.js","../node_modules/date-fns/esm/getWeek/index.js","../node_modules/date-fns/esm/getWeekOfMonth/index.js","../node_modules/date-fns/esm/lastDayOfMonth/index.js","../node_modules/date-fns/esm/getWeeksInMonth/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/hoursToMilliseconds/index.js","../node_modules/date-fns/esm/hoursToMinutes/index.js","../node_modules/date-fns/esm/hoursToSeconds/index.js","../node_modules/date-fns/esm/intervalToDuration/index.js","../node_modules/date-fns/esm/intlFormat/index.js","../node_modules/date-fns/esm/intlFormatDistance/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isExists/index.js","../node_modules/date-fns/esm/isFirstDayOfMonth/index.js","../node_modules/date-fns/esm/isFriday/index.js","../node_modules/date-fns/esm/isFuture/index.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/isMatch/index.js","../node_modules/date-fns/esm/isMonday/index.js","../node_modules/date-fns/esm/isPast/index.js","../node_modules/date-fns/esm/startOfHour/index.js","../node_modules/date-fns/esm/isSameHour/index.js","../node_modules/date-fns/esm/isSameWeek/index.js","../node_modules/date-fns/esm/isSameISOWeek/index.js","../node_modules/date-fns/esm/isSameISOWeekYear/index.js","../node_modules/date-fns/esm/isSameMinute/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/startOfSecond/index.js","../node_modules/date-fns/esm/isSameSecond/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isThisHour/index.js","../node_modules/date-fns/esm/isThisISOWeek/index.js","../node_modules/date-fns/esm/isThisMinute/index.js","../node_modules/date-fns/esm/isThisMonth/index.js","../node_modules/date-fns/esm/isThisQuarter/index.js","../node_modules/date-fns/esm/isThisSecond/index.js","../node_modules/date-fns/esm/isThisWeek/index.js","../node_modules/date-fns/esm/isThisYear/index.js","../node_modules/date-fns/esm/isThursday/index.js","../node_modules/date-fns/esm/isToday/index.js","../node_modules/date-fns/esm/isTomorrow/index.js","../node_modules/date-fns/esm/isTuesday/index.js","../node_modules/date-fns/esm/isWednesday/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/isYesterday/index.js","../node_modules/date-fns/esm/lastDayOfDecade/index.js","../node_modules/date-fns/esm/lastDayOfWeek/index.js","../node_modules/date-fns/esm/lastDayOfISOWeek/index.js","../node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","../node_modules/date-fns/esm/lastDayOfQuarter/index.js","../node_modules/date-fns/esm/lastDayOfYear/index.js","../node_modules/date-fns/esm/lightFormat/index.js","../node_modules/date-fns/esm/milliseconds/index.js","../node_modules/date-fns/esm/millisecondsToHours/index.js","../node_modules/date-fns/esm/millisecondsToMinutes/index.js","../node_modules/date-fns/esm/millisecondsToSeconds/index.js","../node_modules/date-fns/esm/minutesToHours/index.js","../node_modules/date-fns/esm/minutesToMilliseconds/index.js","../node_modules/date-fns/esm/minutesToSeconds/index.js","../node_modules/date-fns/esm/monthsToQuarters/index.js","../node_modules/date-fns/esm/monthsToYears/index.js","../node_modules/date-fns/esm/nextDay/index.js","../node_modules/date-fns/esm/nextFriday/index.js","../node_modules/date-fns/esm/nextMonday/index.js","../node_modules/date-fns/esm/nextSaturday/index.js","../node_modules/date-fns/esm/nextSunday/index.js","../node_modules/date-fns/esm/nextThursday/index.js","../node_modules/date-fns/esm/nextTuesday/index.js","../node_modules/date-fns/esm/nextWednesday/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/date-fns/esm/parseJSON/index.js","../node_modules/date-fns/esm/previousDay/index.js","../node_modules/date-fns/esm/previousFriday/index.js","../node_modules/date-fns/esm/previousMonday/index.js","../node_modules/date-fns/esm/previousSaturday/index.js","../node_modules/date-fns/esm/previousSunday/index.js","../node_modules/date-fns/esm/previousThursday/index.js","../node_modules/date-fns/esm/previousTuesday/index.js","../node_modules/date-fns/esm/previousWednesday/index.js","../node_modules/date-fns/esm/quartersToMonths/index.js","../node_modules/date-fns/esm/quartersToYears/index.js","../node_modules/date-fns/esm/roundToNearestMinutes/index.js","../node_modules/date-fns/esm/secondsToHours/index.js","../node_modules/date-fns/esm/secondsToMilliseconds/index.js","../node_modules/date-fns/esm/secondsToMinutes/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/set/index.js","../node_modules/date-fns/esm/setDate/index.js","../node_modules/date-fns/esm/setDay/index.js","../node_modules/date-fns/esm/setDayOfYear/index.js","../node_modules/date-fns/esm/setDefaultOptions/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setISODay/index.js","../node_modules/date-fns/esm/setISOWeek/index.js","../node_modules/date-fns/esm/setMilliseconds/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setWeek/index.js","../node_modules/date-fns/esm/setWeekYear/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/startOfDecade/index.js","../node_modules/date-fns/esm/startOfToday/index.js","../node_modules/date-fns/esm/startOfTomorrow/index.js","../node_modules/date-fns/esm/startOfYesterday/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/sub/index.js","../node_modules/date-fns/esm/subBusinessDays/index.js","../node_modules/date-fns/esm/subHours/index.js","../node_modules/date-fns/esm/subMinutes/index.js","../node_modules/date-fns/esm/subQuarters/index.js","../node_modules/date-fns/esm/subSeconds/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/weeksToDays/index.js","../node_modules/date-fns/esm/yearsToMonths/index.js","../node_modules/date-fns/esm/yearsToQuarters/index.js","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/locale/fr.js","../node_modules/dayjs/locale/nl-be.js","../node_modules/dayjs/locale/nl.js","../node_modules/dayjs/plugin/duration.js","../node_modules/dayjs/plugin/relativeTime.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/jsbarcode/bin/JsBarcode.js","../node_modules/jsbarcode/bin/barcodes/Barcode.js","../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128.js","../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128A.js","../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128B.js","../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128C.js","../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128_AUTO.js","../node_modules/jsbarcode/bin/barcodes/CODE128/auto.js","../node_modules/jsbarcode/bin/barcodes/CODE128/constants.js","../node_modules/jsbarcode/bin/barcodes/CODE128/index.js","../node_modules/jsbarcode/bin/barcodes/CODE39/index.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN13.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN2.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN5.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN8.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPC.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPCE.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/encoder.js","../node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js","../node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js","../node_modules/jsbarcode/bin/barcodes/ITF/ITF.js","../node_modules/jsbarcode/bin/barcodes/ITF/ITF14.js","../node_modules/jsbarcode/bin/barcodes/ITF/constants.js","../node_modules/jsbarcode/bin/barcodes/ITF/index.js","../node_modules/jsbarcode/bin/barcodes/MSI/MSI.js","../node_modules/jsbarcode/bin/barcodes/MSI/MSI10.js","../node_modules/jsbarcode/bin/barcodes/MSI/MSI1010.js","../node_modules/jsbarcode/bin/barcodes/MSI/MSI11.js","../node_modules/jsbarcode/bin/barcodes/MSI/MSI1110.js","../node_modules/jsbarcode/bin/barcodes/MSI/checksums.js","../node_modules/jsbarcode/bin/barcodes/MSI/index.js","../node_modules/jsbarcode/bin/barcodes/codabar/index.js","../node_modules/jsbarcode/bin/barcodes/index.js","../node_modules/jsbarcode/bin/barcodes/pharmacode/index.js","../node_modules/jsbarcode/bin/exceptions/ErrorHandler.js","../node_modules/jsbarcode/bin/exceptions/exceptions.js","../node_modules/jsbarcode/bin/help/fixOptions.js","../node_modules/jsbarcode/bin/help/getOptionsFromElement.js","../node_modules/jsbarcode/bin/help/getRenderProperties.js","../node_modules/jsbarcode/bin/help/linearizeEncodings.js","../node_modules/jsbarcode/bin/help/merge.js","../node_modules/jsbarcode/bin/help/optionsFromStrings.js","../node_modules/jsbarcode/bin/options/defaults.js","../node_modules/jsbarcode/bin/renderers/canvas.js","../node_modules/jsbarcode/bin/renderers/index.js","../node_modules/jsbarcode/bin/renderers/object.js","../node_modules/jsbarcode/bin/renderers/shared.js","../node_modules/jsbarcode/bin/renderers/svg.js","../node_modules/lodash/lodash.js","../node_modules/loglevel/lib/loglevel.js","../node_modules/moment/moment.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-barcode/lib/react-barcode.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/redux-logger/dist/redux-logger.js","../node_modules/rehackt/index.js","../node_modules/shallowequal/index.js","../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/void-elements/index.js","../node_modules/ws/browser.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/node_modules/.pnpm/@preact+signals-core@1.4.0/node_modules/@preact/signals-core/src/index.ts","../node_modules/@dotlottie/common/src/store.ts","../node_modules/node_modules/.pnpm/fflate@0.8.1/node_modules/fflate/esm/browser.js","../node_modules/node_modules/.pnpm/valibot@0.13.1/node_modules/valibot/dist/index.js","../node_modules/node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/@dotlottie/dotlottie-js/src/common/dotlottie-state-machine-common.ts","../../../../node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/node_modules/.pnpm/@rgba-image+copy@0.1.3/node_modules/@rgba-image/copy/src/index.ts","../../../../node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/node_modules/.pnpm/@rgba-image+create-image@0.1.1/node_modules/@rgba-image/create-image/src/index.ts","../../../../node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/node_modules/.pnpm/@rgba-image+lanczos@0.1.1/node_modules/@rgba-image/lanczos/src/filters.ts","../../../../node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/node_modules/.pnpm/@rgba-image+lanczos@0.1.1/node_modules/@rgba-image/lanczos/src/convolve.ts","../../../../node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/node_modules/.pnpm/@rgba-image+lanczos@0.1.1/node_modules/@rgba-image/lanczos/src/index.ts","../node_modules/node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/@dotlottie/dotlottie-js/src/common/dotlottie-state.ts","../node_modules/node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/@dotlottie/dotlottie-js/src/common/manifest.ts","../node_modules/node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/@dotlottie/dotlottie-js/src/common/utils.ts","../node_modules/node_modules/.pnpm/@dotlottie+dotlottie-js@0.7.0/node_modules/@dotlottie/dotlottie-js/src/common/lottie-audio-common.ts","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/i18next-chained-backend/dist/esm/i18nextChainedBackend.js","../node_modules/i18next-http-backend/esm/utils.js","../node_modules/i18next-http-backend/esm/request.js","../node_modules/i18next-http-backend/esm/index.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/TransWithoutContext.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/react-i18next/dist/es/useTranslation.js","locales/fr.ts","services/constants.tsx","services/translations.ts","locales/nl.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","app/ui/assets/navigation/logo.svg","Header.tsx","../node_modules/fathom-client/dist/fathom-client.esm.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/index.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/plugins/patches.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/matchers.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","app/connectors/medispring/utils/utils.ts","app/connectors/medispring/api/constants.ts","app/models/AgendaItemModel.ts","app/models/MedicationModel.ts","app/models/ContactPoint.ts","app/models/PrescriptionModel.ts","app/models/DocumentResource.ts","app/utils/formatting.ts","app/constants/common.ts","app/connectors/medispring/mappers.ts","app/connectors/medispring/utils/crypto.ts","app/connectors/medispring/utils/MessageGatewayApi.ts","app/models/DiagnosticReportModel.ts","helpers/rsa.helper.ts","app/connectors/medispring/connector/IcureCryptoStrategies.ts","app/types/ResourceType.ts","app/connectors/medispring/connector/MedispringConnector.ts","constants/main.constants.tsx","../node_modules/ts-invariant/src/invariant.ts","../node_modules/@apollo/src/version.ts","../node_modules/@apollo/src/utilities/globals/maybe.ts","../node_modules/@apollo/src/utilities/globals/global.ts","../node_modules/@apollo/src/utilities/common/makeUniqueId.ts","../node_modules/@apollo/src/utilities/common/stringifyForDisplay.ts","../node_modules/@apollo/src/utilities/globals/invariantWrappers.ts","../node_modules/@apollo/src/utilities/globals/index.ts","../node_modules/zen-observable-ts/module.js","../node_modules/@apollo/src/utilities/common/objects.ts","../node_modules/graphql/jsutils/devAssert.mjs","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/language/ast.mjs","../node_modules/graphql/language/kinds.mjs","../node_modules/graphql/language/visitor.mjs","../node_modules/@apollo/src/utilities/graphql/fragments.ts","../node_modules/@wry/caches/src/weak.ts","../node_modules/@wry/caches/src/strong.ts","../node_modules/@apollo/src/utilities/caching/caches.ts","../node_modules/@apollo/src/utilities/caching/sizes.ts","../node_modules/@apollo/src/utilities/caching/getMemoryInternals.ts","../node_modules/@apollo/src/utilities/common/canonicalStringify.ts","../node_modules/@apollo/src/utilities/graphql/storeUtils.ts","../node_modules/@apollo/src/utilities/graphql/getFromAST.ts","../node_modules/@apollo/src/link/core/ApolloLink.ts","../node_modules/@apollo/src/link/utils/createOperation.ts","../node_modules/@apollo/src/link/utils/transformOperation.ts","../node_modules/@apollo/src/link/utils/validateOperation.ts","../node_modules/@apollo/src/link/core/execute.ts","../node_modules/@apollo/src/utilities/graphql/directives.ts","../node_modules/@apollo/src/link/http/serializeFetchParameter.ts","../node_modules/@apollo/src/utilities/common/canUse.ts","../node_modules/@apollo/src/link/http/iterators/nodeStream.ts","../node_modules/@apollo/src/link/http/iterators/reader.ts","../node_modules/@apollo/src/link/http/responseIterator.ts","../node_modules/@apollo/src/link/http/iterators/async.ts","../node_modules/@apollo/src/link/http/iterators/promise.ts","../node_modules/@apollo/src/link/utils/throwServerError.ts","../node_modules/@apollo/src/errors/index.ts","../node_modules/@apollo/src/utilities/common/arrays.ts","../node_modules/@apollo/src/utilities/common/mergeDeep.ts","../node_modules/@apollo/src/utilities/common/incrementalResult.ts","../node_modules/@apollo/src/link/http/parseAndCheckHttpResponse.ts","../node_modules/graphql/language/characterClasses.mjs","../node_modules/graphql/language/blockString.mjs","../node_modules/graphql/language/printString.mjs","../node_modules/graphql/language/printer.mjs","../node_modules/@apollo/src/utilities/graphql/print.ts","../node_modules/@apollo/src/link/http/selectHttpOptionsAndBody.ts","../node_modules/@apollo/src/link/utils/fromError.ts","../node_modules/@apollo/src/utilities/graphql/transform.ts","../node_modules/@apollo/src/link/http/createHttpLink.ts","../node_modules/@apollo/src/link/http/checkFetcher.ts","../node_modules/@apollo/src/link/http/selectURI.ts","../node_modules/@apollo/src/link/utils/filterOperationVariables.ts","../node_modules/@apollo/src/link/http/rewriteURIForGET.ts","../node_modules/@apollo/src/link/http/HttpLink.ts","../node_modules/@wry/equality/src/index.ts","../node_modules/@wry/trie/src/index.ts","../node_modules/@wry/context/src/slot.ts","../node_modules/@wry/context/src/index.ts","../node_modules/optimism/src/context.ts","../node_modules/optimism/src/helpers.ts","../node_modules/optimism/src/entry.ts","../node_modules/optimism/src/dep.ts","../node_modules/optimism/src/index.ts","../node_modules/@apollo/src/utilities/graphql/DocumentTransform.ts","../node_modules/@apollo/src/utilities/observables/asyncMap.ts","../node_modules/@apollo/src/utilities/common/errorHandling.ts","../node_modules/@apollo/src/utilities/observables/iteration.ts","../node_modules/@apollo/src/utilities/observables/subclassing.ts","../node_modules/@apollo/src/utilities/observables/Concast.ts","../node_modules/@apollo/src/core/networkStatus.ts","../node_modules/@apollo/src/utilities/common/compact.ts","../node_modules/@apollo/src/utilities/common/cloneDeep.ts","../node_modules/@apollo/src/core/equalByQuery.ts","../node_modules/@apollo/src/core/ObservableQuery.ts","../node_modules/@apollo/src/utilities/promises/preventUnhandledRejection.ts","../node_modules/@apollo/src/core/QueryInfo.ts","../node_modules/@apollo/src/utilities/common/maybeDeepFreeze.ts","../node_modules/@apollo/src/masking/utils.ts","../node_modules/@apollo/src/masking/maskDefinition.ts","../node_modules/@apollo/src/masking/maskFragment.ts","../node_modules/@apollo/src/core/QueryManager.ts","../node_modules/@apollo/src/masking/maskOperation.ts","../node_modules/graphql/language/predicates.mjs","../node_modules/@apollo/src/cache/inmemory/reactiveVars.ts","../node_modules/@apollo/src/core/LocalState.ts","../node_modules/@apollo/src/utilities/common/mergeOptions.ts","../node_modules/@apollo/src/core/ApolloClient.ts","../node_modules/@apollo/src/cache/core/cache.ts","../node_modules/@apollo/src/cache/core/types/common.ts","../node_modules/@apollo/src/cache/inmemory/helpers.ts","../node_modules/@apollo/src/cache/inmemory/entityStore.ts","../node_modules/@apollo/src/cache/inmemory/object-canon.ts","../node_modules/@apollo/src/cache/inmemory/readFromStore.ts","../node_modules/@apollo/src/cache/inmemory/key-extractor.ts","../node_modules/@apollo/src/cache/inmemory/policies.ts","../node_modules/@apollo/src/cache/inmemory/writeToStore.ts","../node_modules/@apollo/src/cache/inmemory/inMemoryCache.ts","app/connectors/awell/clients/awellOrchestrationGraphQlClient.ts","../node_modules/graphql/jsutils/invariant.mjs","../node_modules/graphql/language/location.mjs","../node_modules/graphql/language/printLocation.mjs","../node_modules/graphql/error/GraphQLError.mjs","../node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/graphql/error/syntaxError.mjs","../node_modules/graphql/language/directiveLocation.mjs","../node_modules/graphql/language/tokenKind.mjs","../node_modules/graphql/language/lexer.mjs","../node_modules/graphql/jsutils/instanceOf.mjs","../node_modules/graphql/language/source.mjs","../node_modules/graphql/language/parser.mjs","../node_modules/graphql-tag/src/index.ts","app/connectors/awell/hooks/awell-orchestration/useMessage/graphql/message.graphql.ts","app/connectors/awell/hooks/awell-orchestration/usePathwayActivities/graphql/GetPathwayActivities.graphql.ts","app/connectors/awell/hooks/awell-orchestration/usePatientPathways/graphql/GetPatientPathways.graphql.ts","app/connectors/awell/hooks/awell-orchestration/useStakeholders/graphql/getStakeholders.graphql.ts","app/connectors/awell/types/generated/api.types.ts","app/connectors/awell/connector/AwellConnector.ts","app/connectors/awell/awellMappers.ts","app/connectors/ConnectorProvider.ts","app/features/login/AuthSlice.ts","../node_modules/reselect/es/defaultMemoize.js","../node_modules/reselect/es/index.js","../node_modules/@reduxjs/toolkit/src/query/core/apiState.ts","../node_modules/@reduxjs/toolkit/src/query/utils/joinUrls.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isAbsoluteUrl.ts","../node_modules/@reduxjs/toolkit/src/query/utils/flatten.ts","../node_modules/@reduxjs/toolkit/src/query/utils/copyWithStructuralSharing.ts","../node_modules/@reduxjs/toolkit/src/query/fetchBaseQuery.ts","../node_modules/@reduxjs/toolkit/src/query/HandledError.ts","../node_modules/@reduxjs/toolkit/src/query/retry.ts","../node_modules/@reduxjs/toolkit/src/query/endpointDefinitions.ts","../node_modules/@reduxjs/toolkit/src/query/core/setupListeners.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isNotNullish.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildInitiate.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildThunks.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSlice.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isOnline.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isDocumentVisible.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSelectors.ts","../node_modules/@reduxjs/toolkit/src/query/defaultSerializeQueryArgs.ts","../node_modules/@reduxjs/toolkit/src/query/createApi.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheCollection.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/batchActions.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/invalidationByTags.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/polling.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/devMiddleware.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/windowEventHandling.ts","../node_modules/@reduxjs/toolkit/src/query/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/query/core/module.ts","../node_modules/@reduxjs/toolkit/src/query/core/index.ts","../node_modules/@reduxjs/toolkit/src/query/react/useSerializedStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/react/constants.ts","../node_modules/@reduxjs/toolkit/src/query/react/useShallowStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/react/buildHooks.ts","../node_modules/@reduxjs/toolkit/src/query/utils/capitalize.ts","../node_modules/@reduxjs/toolkit/src/query/react/module.ts","../node_modules/@reduxjs/toolkit/src/query/react/index.ts","app/api/healthdata.ts","app/ui/tokens.ts","app/ui/components/Checkbox.tsx","app/ui/components/RadioButton.tsx","app/ui/components/RadioButtonGroup.tsx","app/ui/components/Typography/Typography.styles.ts","app/ui/components/Typography/Typography.tsx","app/features/navigation/DisplayOptions.tsx","app/hooks/useDisplayOption.ts","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/base.js","app/ui/components/Layout/Spacing.tsx","app/features/documents/DocumentsDisplayOptions.tsx","app/features/navigation/DisplaySlice.ts","app/connectors/medispring/api/medispring.ts","app/store.ts","app/features/navigation/Root.tsx","app/i18n/en.ts","app/i18n/fr.ts","app/i18n/nl.ts","app/i18n/i18n.ts","app/features/navigation/AppContainer.tsx","app/features/navigation/MainContent.tsx","app/ui/assets/navigation/menu.home.svg","app/ui/assets/navigation/menu.agenda.svg","app/ui/assets/navigation/menu.treatment.svg","app/ui/assets/navigation/menu.docs.svg","app/ui/assets/navigation/menu.settings.svg","app/ui/assets/navigation/menu.allergies.svg","app/ui/assets/navigation/menu.vaccination.svg","app/ui/assets/navigation/menu.team.svg","app/ui/assets/navigation/menu.home-selected.svg","app/ui/assets/navigation/menu.agenda-selected.svg","app/ui/assets/navigation/menu.treatment-selected.svg","app/ui/assets/navigation/menu.docs-selected.svg","app/ui/assets/navigation/menu.settings-selected.svg","app/ui/assets/navigation/menu.allergies-selected.svg","app/ui/assets/navigation/menu.vaccination-selected.svg","app/ui/assets/navigation/menu.team-selected.svg","app/ui/assets/navigation/flower.svg","app/ui/assets/navigation/chevron.svg","app/ui/assets/navigation/logo-small.svg","app/ui/assets/navigation/menu.svg","app/ui/assets/navigation/filter.svg","app/ui/assets/navigation/logout.svg","app/ui/assets/icons/location-xs.svg","app/ui/assets/icons/clock-xs.svg","app/ui/assets/icons/calendar-xs.svg","app/ui/assets/icons/landline-xs.svg","app/ui/assets/icons/mobile-xs.svg","app/ui/assets/icons/email-xs.svg","app/ui/assets/icons/prescription-xs.svg","app/ui/assets/icons/prescription-fill.svg","app/ui/assets/icons/send_email.svg","app/ui/assets/icons/landline-fill.svg","app/ui/assets/icons/location-fill.svg","app/ui/assets/icons/calendar-fill.svg","app/ui/assets/icons/search-xs.svg","app/ui/assets/icons/settings-xs.svg","app/ui/assets/icons/heart-xs.svg","app/ui/assets/icons/info-xs.svg","app/ui/assets/icons/exam-xs.svg","app/ui/assets/icons/message.svg","app/ui/assets/icons/form.svg","app/ui/assets/medication/default-xs.svg","app/ui/assets/medication/comp-xs.svg","app/ui/assets/medication/pill-xs.svg","app/ui/assets/medication/cream-xs.svg","app/ui/assets/medication/syringe-xs.svg","app/ui/assets/medication/drop-xs.svg","app/ui/assets/medication/bottle-xs.svg","app/ui/assets/specialties/heart.svg","app/ui/assets/specialties/lab.svg","app/ui/assets/specialties/drop.svg","app/ui/assets/specialties/document.svg","app/ui/assets/specialties/virus.svg","app/ui/assets/specialties/brain.svg","app/ui/assets/specialties/ear.svg","app/ui/assets/specialties/syringe.svg","app/ui/assets/specialties/eye.svg","app/ui/assets/specialties/tongue.svg","app/ui/assets/specialties/imagery.svg","app/ui/assets/specialties/bones.svg","app/ui/assets/specialties/stomach.svg","app/ui/assets/specialties/tooth.svg","app/ui/assets/specialties/lungs.svg","app/ui/assets/specialties/physio.svg","app/ui/assets/illustrations/confirm_agenda.svg","app/ui/assets/illustrations/download_key.svg","app/ui/assets/illustrations/connecting.svg","app/ui/assets/illustrations/logo.svg","app/ui/assets/index.ts","app/ui/components/Icon/Icon.tsx","app/ui/components/Button.tsx","app/ui/components/Loading/Spinner.tsx","app/ui/components/Layout/ButtonGroup.tsx","app/ui/components/Alert.tsx","../node_modules/react-idle-timer/dist/index.esm.js","app/features/navigation/Navigation.tsx","app/ui/components/MobileButton.tsx","app/ui/components/ModalSheetNavigationButton.tsx","app/ui/components/HomeButton.tsx","app/ui/components/FilterButton.tsx","app/ui/components/ScreenFlow/NavBar.tsx","app/ui/components/ScreenFlow/FlowContext.tsx","app/ui/components/ScreenFlow/ScreenFlow.tsx","app/ui/components/Layout/SectionHeading.tsx","app/ui/components/Layout/Section.tsx","app/ui/components/Avatar/Avatar.styles.tsx","app/hooks/useTint.ts","app/ui/components/Avatar/Avatar.tsx","app/models/HCPModel.ts","app/ui/components/Avatar/AvatarGroup.tsx","app/ui/components/InformationItem.tsx","app/hooks/useResource.ts","app/ui/components/UserProfile.tsx","app/ui/components/Comment.tsx","app/ui/components/Toast/ToastContext.ts","app/ui/components/Toast/useToast.ts","app/hooks/useConfirmation.ts","app/features/agenda/AppointmentDetailsScreen.tsx","app/hooks/useResources.ts","app/models/DocumentReference.ts","app/hooks/usePullToRefresh.tsx","app/ui/components/Badge.tsx","app/ui/components/MainNavigation.tsx","app/ui/components/List/ListItem.tsx","app/ui/components/List/EzoList.tsx","app/ui/components/Loading/ShimmerBlock.tsx","app/ui/components/Loading/ListItemShimmer.tsx","app/ui/components/Loading/SectionShimmer.tsx","app/ui/components/EmptyState.tsx","app/ui/components/Layout/ListSection.tsx","app/features/agenda/AgendaItemRenderer.tsx","app/features/documents/DocumentRenderer.tsx","app/hooks/useIsCurrentRoute.ts","app/ui/components/ModalSheet/ModalContext.ts","app/ui/components/ModalSheet/useModalSheet.ts","app/hooks/useUpdateSearchParams.ts","app/connectors/medispring/features/agenda/HCPSelectionScreen.tsx","app/hooks/useURLQuery.ts","app/connectors/medispring/features/agenda/LocationSelectionScreen.tsx","app/connectors/medispring/features/agenda/TypeSelectionScreen.tsx","app/ui/components/TimeslotGroup/TimeslotGroup.tsx","app/ui/components/TimeslotGroup/TimeslotGroupList.tsx","app/connectors/medispring/features/agenda/SlotSelectionScreen.tsx","app/connectors/medispring/features/agenda/ConfirmationScreen.tsx","app/connectors/medispring/features/agenda/LoadingScreen.tsx","app/connectors/medispring/features/agenda/CreateAppointmentFlow.tsx","app/hooks/useOptions.ts","app/features/home/HomeScreen.tsx","app/ui/components/Loading/LabResultsShimmer.tsx","app/ui/components/Attachment.tsx","app/ui/components/ObservationsTable.tsx","app/features/documents/ViewDocumentScreen.tsx","app/hooks/useMedicationShortName.ts","app/features/medication/MedicationItemRenderer.tsx","app/features/medication/LogicalModeDisplay.tsx","app/features/medication/ChronologicalModeDisplay.tsx","app/features/medication/MedicationListScreen.tsx","app/features/vaccination/VaccinationListScreen.tsx","app/features/documents/DocumentsListScreen.tsx","app/ui/components/Dropdown.tsx","app/ui/components/KeyValue.tsx","app/features/medication/RegimenByPrescriber.tsx","app/ui/components/Layout/Block.tsx","app/features/medication/MedicationDetailsScreen.tsx","app/features/agenda/AppointmentsListScreen.tsx","app/features/home/providers/ProvidersListScreen.tsx","app/features/home/HomeSection.tsx","app/features/navigation/ScreenOptions.tsx","app/features/agenda/AgendaOptions.tsx","app/features/medication/MedicationOptions.tsx","app/features/settings/Settings.tsx","app/connectors/ehealth/api/constants.ts","app/connectors/ehealth/api/iam.ts","app/api/authentication.ts","app/features/navigation/AuthCallback.tsx","app/features/navigation/NoConnector.tsx","app/features/login/LoginScreen.tsx","app/ui/components/Loading/Success.tsx","app/ui/components/Loading/Warning.tsx","app/connectors/medispring/features/auth/DownloadKeyScreen.tsx","app/features/login/ConnectionScreen.tsx","app/features/login/ConnectionFlow.tsx","app/features/navigation/Main.tsx","app/ui/components/Toast/ToastProvider.tsx","app/ui/components/Toast/ToastList.tsx","../node_modules/@apollo/src/react/context/ApolloContext.ts","../node_modules/@apollo/src/react/context/ApolloProvider.tsx","app/ui/components/ModalSheet/ModalProvider.tsx","app/ui/components/ModalSheet/ModalSheet.tsx","app/hooks/usePrevious.ts","app/features/navigation/EzoApp.tsx","app/features/navigation/AuthRedirect.tsx","App.tsx","../node_modules/i18next-resources-to-backend/dist/esm/index.js","constants/fathom.constants.tsx","reportWebVitals.ts","../node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/metrics/envelope.ts","../node_modules/@sentry/src/metrics/utils.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/@sentry/src/utils/sdkMetadata.ts","../node_modules/src/debug-build.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/env.ts","../node_modules/src/userfeedback.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/@sentry/src/instrument/console.ts","../node_modules/@sentry/src/instrument/dom.ts","../node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/aggregate-errors.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/browser.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/common/debug-build.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/polyfills/interactionCountPolyfill.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getINP.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/onTTFB.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/instrument.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getFID.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/span.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/url.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/metrics/utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/metrics/index.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/measurement.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/supports.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/string.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/common/fetch.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/request.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/browsertracing.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/router.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/utils/node-utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/apollo.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/requestdata.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/express.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/graphql.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/mongo.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/mysql.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/postgres.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/prisma.ts","../node_modules/src/index.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/backgroundtab.ts","index.tsx"],"sourcesContent":["/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AccessLog } from '../model/AccessLog'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { PaginatedListAccessLog } from '../model/PaginatedListAccessLog'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccAccesslogApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create an access log\n * @param body\n */\n async createAccessLog(body?: AccessLog): Promise {\n const _url = this.host + `/accesslog` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of access logs.\n *\n * @param accessLogIds a ListOfIds containing the ids of the access logs to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted access logs.\n */\n async deleteAccessLogs(accessLogIds: ListOfIds): Promise> {\n const headers = await this.headers\n return XHR.sendCommand(\n 'POST',\n this.host + `/accesslog/delete/batch` + '?ts=' + new Date().getTime(),\n headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n accessLogIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single access log by id.\n *\n * @param accessLogId the id of the access log.\n */\n async deleteAccessLog(accessLogId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/accesslog/${encodeURIComponent(accessLogId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead.\n * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.\n * @param body\n * @param hcPartyId\n */\n async findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n const _url =\n this.host +\n `/accesslog/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AccessLog(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List AccessLog ids by data owner and a set of secret foreign key. The ids will be sorted by AccessLog date, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the access log ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the access log ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by AccessLog date\n * @return a promise that will resolve in an Array of AccessLog ids.\n */\n async findAccessLogIdsByDataOwnerPatientDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/accesslog/byDataOwnerPatientDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead\n * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findAccessLogsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AccessLog(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs\n * @param userId A User ID\n * @param accessType The type of access (COMPUTER or USER)\n * @param startDate The start search epoch\n * @param startKey The start key for pagination\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param descending Descending order\n */\n async findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog/byUser` +\n '?ts=' +\n new Date().getTime() +\n (userId ? '&userId=' + encodeURIComponent(String(userId)) : '') +\n (accessType ? '&accessType=' + encodeURIComponent(String(accessType)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (descending ? '&descending=' + encodeURIComponent(String(descending)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Get an access log\n * @param accessLogId\n */\n async getAccessLog(accessLogId: string): Promise {\n let _body = null\n\n const _url = this.host + `/accesslog/${encodeURIComponent(String(accessLogId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Get a batch of Access Logs by their ids.\n * @param ids an array of ids.\n */\n async getAccessLogs(ids: ListOfIds): Promise {\n const _url = this.host + `/accesslog/byIds` + '?ts=' + new Date().getTime()\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n\n return XHR.sendCommand('POST', _url, headers, ids, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AccessLog(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs\n * @param fromEpoch\n * @param toEpoch\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param descending\n */\n async listAccessLogs(\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog` +\n '?ts=' +\n new Date().getTime() +\n (fromEpoch ? '&fromEpoch=' + encodeURIComponent(String(fromEpoch)) : '') +\n (toEpoch ? '&toEpoch=' + encodeURIComponent(String(toEpoch)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (descending ? '&descending=' + encodeURIComponent(String(descending)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, await headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs for a group\n * @param groupId\n * @param fromEpoch\n * @param toEpoch\n * @param startKey\n * @param startDocumentId\n * @param limit\n */\n async listAccessLogsInGroup(\n groupId: string,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (fromEpoch ? '&fromEpoch=' + encodeURIComponent(String(fromEpoch)) : '') +\n (toEpoch ? '&toEpoch=' + encodeURIComponent(String(toEpoch)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an access log\n * @param body\n */\n async modifyAccessLog(body?: AccessLog): Promise {\n const _url = this.host + `/accesslog` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareAccessLogs(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/accesslog/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, AccessLog)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Agenda } from '../model/Agenda'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListAgenda } from '../model/PaginatedListAgenda'\n\nexport class IccAgendaApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a agenda\n * @param body\n */\n async createAgenda(body?: Agenda): Promise {\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Delete a batch of agendas by id.\n *\n * @param agendaIds a ListOfIds containing the ids of the agendas to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted agendas.\n */\n async deleteAgendas(agendaIds: ListOfIds): Promise> {\n const headers = this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/agenda/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n agendaIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single agenda by id.\n *\n * @param agendaId the id of the agenda to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted agenda.\n */\n async deleteAgenda(agendaId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/agenda/${encodeURIComponent(agendaId)}` + '?ts=' + new Date().getTime(),\n this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an agenda\n * @param agendaId\n */\n getAgenda(agendaId: string): Promise {\n let _body = null\n\n const _url = this.host + `/agenda/${encodeURIComponent(String(agendaId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getAgendasWithPagination} instead.\n *\n * @summary Gets all agendas\n */\n async getAgendas(): Promise> {\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime() + '&limit=1000000'\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAgenda(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary gets all agendas with pagination.\n *\n * @param startDocumentId the startDocumentId provided by the previous page or null if it's the first page.\n * @param limit the size of the page\n * @return a promise that will resolve in a PaginatedListAgenda.\n */\n async getAgendasWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/agenda` +\n '?ts=' +\n new Date().getTime() +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAgenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all agendas for user\n * @param userId\n */\n getAgendasForUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/agenda/byUser` + '?ts=' + new Date().getTime() + (userId ? '&userId=' + encodeURIComponent(String(userId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets readable agendas for user\n * @param userId\n */\n getReadableAgendasForUser(userId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/agenda/readableForUser` + '?ts=' + new Date().getTime() + (userId ? '&userId=' + encodeURIComponent(String(userId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Agenda(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an agenda\n * @param body\n */\n modifyAgenda(body?: Agenda): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AppointmentTypeAndPlace } from '../model/AppointmentTypeAndPlace'\nimport { UserAndHealthcareParty } from '../model/UserAndHealthcareParty'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport {PaginatedListAccessLog} from \"../model/PaginatedListAccessLog\"\nimport {PaginatedListMedicalLocation} from \"../model/PaginatedListMedicalLocation\"\n\nexport class IccAnonymousAccessApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * The start of the slot is returned in YYYYDDMMHHmmss format and only slots belonging to public time tables are returned.\n * @summary Get Availabilities for HCP and appointmentType\n * @param groupId\n * @param userId\n * @param calendarItemTypeId\n * @param isNewPatient\n * @param startDate\n * @param endDate\n * @param hcpId\n * @param placeId\n * @param limit\n */\n getAvailabilitiesByPeriodAndCalendarItemTypeId(\n groupId: string,\n userId: string,\n calendarItemTypeId: string,\n isNewPatient: boolean,\n startDate: number,\n endDate: number,\n hcpId: string,\n placeId?: string,\n limit?: number\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/aa/available/inGroup/${encodeURIComponent(String(groupId))}/forUser/${encodeURIComponent(String(userId))}/type/${encodeURIComponent(\n String(calendarItemTypeId)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (isNewPatient !== null && isNewPatient !== undefined ? '&isNewPatient=' + encodeURIComponent(String(isNewPatient)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '') +\n (placeId ? '&placeId=' + encodeURIComponent(String(placeId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of Calendar Item types. In order to be returned, the Calendar Item Type must be linked to a time table enclosed in an Agenda for which an anonymous right has been set (a Right with read permission and null user)\n * @summary List Calendar Item types for a provided group id and user id\n * @param groupId Healthcare parties group id\n * @param userId Healthcare party user id\n * @param startDate\n * @param endDate\n */\n listAppointmentTypesForUser(groupId: string, userId: string, startDate: number, endDate: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/aa/appointmentType/inGroup/${encodeURIComponent(String(groupId))}/forUser/${encodeURIComponent(String(userId))}` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AppointmentTypeAndPlace(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of Users/healthcare parties contained in the group owning the providing id. In order to be returned, a healthcare party needs to be linked to a user an this user must have a property 'org.taktik.icure.public' set to a boolean true.\n * @summary List healthcare parties for a provided group id\n * @param groupId Healthcare parties group id\n */\n listHealthcarePartiesInGroup(groupId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/aa/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new UserAndHealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs\n * @param groupId MedicalLocations group id\n * @param startKey The start key for pagination\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async getPublicMedicalLocationsByGroupId(\n groupId: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n ): Promise {\n const _url =\n this.host +\n `/aa/medicallocation/byGroup/${groupId}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, undefined, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ApplicationSettings } from '../model/ApplicationSettings'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccApplicationsettingsApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create new application settings\n * @param body\n */\n createApplicationSettings(body?: ApplicationSettings): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ApplicationSettings(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all application settings\n */\n getApplicationSettings(): Promise> {\n let _body = null\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ApplicationSettings(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Update application settings\n * @param body\n */\n updateApplicationSettings(body?: ApplicationSettings): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ApplicationSettings(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationResponse } from '../model/AuthenticationResponse'\nimport { LoginCredentials } from '../model/LoginCredentials'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport enum OAuthThirdParty {\n GOOGLE = 'google',\n MICROSOFT = 'microsoft',\n APPLE = 'apple',\n LINKEDIN = 'linkedin',\n GITHUB = 'github',\n}\n\nexport class IccAuthApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Check login using groupId/userId and password\n * @summary check\n * @param body\n */\n check(body?: LoginCredentials): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/auth/check` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using username and password\n * @summary login\n * @param body\n * @param groupId the group id where to login to.\n * @param duration the duration of the returned JWT authentication token, in seconds.\n */\n login(body?: LoginCredentials, groupId?: string, duration?: number): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/auth/login` +\n '?ts=' +\n new Date().getTime() +\n (groupId ? `&groupId=${encodeURIComponent(String(groupId))}` : '') +\n (!!duration ? `&duration=${duration}` : '')\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using third party OAuth provider token\n * @summary login\n * @param thirdParty The third party OAuth service used to authenticate the user\n * @param token The token returned by the third party OAuth service\n */\n loginWithThirdPartyToken(thirdParty: string, token: string): Promise {\n let _body = null\n _body = token\n\n const _url = this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n .concat(new XHR.Header('token', token))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logout(): Promise {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'GET',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logoutPost(): Promise {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get token for subsequent operation\n * @summary token\n * @param method\n * @param path\n */\n token(method: string, path: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/token/${encodeURIComponent(String(method))}/${encodeURIComponent(String(path))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)) as string)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication and refresh JWT for a different group\n */\n switchGroup(refreshJWT: string, groupId: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication JWT using the refresh JWT\n * @summary refresh\n */\n refreshAuthenticationJWT(refreshJWT: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/refresh` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Switch groups using the refresh JWT\n * @summary switch groups\n */\n switchGroupUsingRefreshJWT(groupId: string): Promise {\n return this.authenticationProvider.getIcureTokens().then((tokens) => {\n let _body = null\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n\n const refreshToken = tokens?.refreshToken\n if (!refreshToken) {\n throw new Error('No refresh token found')\n }\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshToken)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n })\n }\n\n /**\n * Invalidates a refresh JWT\n * @summary invalidate\n */\n invalidateRefreshJWT(refreshJWT: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/invalidate` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { MapOfIds } from '../model/MapOfIds'\nimport { MessageWithBatch } from '../model/MessageWithBatch'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeefactApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary create batch and message\n * @param body\n * @param insuranceId\n * @param newMessageId\n * @param numericalRef\n */\n createBatchAndMessage(insuranceId: string, newMessageId: string, numericalRef: number, body?: MapOfIds): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_efact/${encodeURIComponent(String(insuranceId))}/${encodeURIComponent(String(newMessageId))}/${encodeURIComponent(String(numericalRef))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MessageWithBatch(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CheckSMFPatientResult } from '../model/CheckSMFPatientResult'\nimport { Content } from '../model/Content'\nimport { DiaryNoteExportInfo } from '../model/DiaryNoteExportInfo'\nimport { ImportMapping } from '../model/ImportMapping'\nimport { ImportResult } from '../model/ImportResult'\nimport { IncapacityExportInfo } from '../model/IncapacityExportInfo'\nimport { MedicationSchemeExportInfo } from '../model/MedicationSchemeExportInfo'\nimport { SoftwareMedicalFileExport } from '../model/SoftwareMedicalFileExport'\nimport { SumehrContent } from '../model/SumehrContent'\nimport { SumehrExportInfo } from '../model/SumehrExportInfo'\nimport { SumehrValidity } from '../model/SumehrValidity'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBekmehrApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Check whether patients in SMF already exists in DB\n * @param body\n * @param documentId\n * @param documentKey\n * @param patientId\n * @param language\n */\n checkIfSMFPatientsExists(\n documentId: string,\n documentKey?: string,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(documentId))}/checkIfSMFPatientsExists` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CheckSMFPatientResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr contactreport\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateContactreportExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/contactreport/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate diarynote\n * @param body\n * @param patientId\n * @param language\n */\n generateDiaryNote(patientId: string, language: string, body?: DiaryNoteExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/diarynote/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Incapacity export\n * @param patientId\n * @param language\n * @param body\n * @param xTimezoneOffset\n */\n generateIncapacityExport(patientId: string, language: string, body?: IncapacityExportInfo, xTimezoneOffset?: string): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/incapacity/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n xTimezoneOffset && (headers = headers.concat(new XHR.Header('X-Timezone-Offset', xTimezoneOffset)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr labresult\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateLabresultExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/labresult/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Medicationscheme export\n * @param body\n * @param xTimezoneOffset\n * @param patientId\n * @param language\n * @param recipientSafe\n * @param xTimezoneOffset\n * @param version\n */\n generateMedicationSchemeExport(\n patientId: string,\n language: string,\n recipientSafe: string,\n xTimezoneOffset?: string,\n version: number = 0,\n body?: MedicationSchemeExportInfo\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/medicationscheme/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientSafe ? '&recipientSafe=' + encodeURIComponent(String(recipientSafe)) : '') +\n ('&version=' + encodeURIComponent(String(version ?? 0)))\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n xTimezoneOffset && (headers = headers.concat(new XHR.Header('X-Timezone-Offset', xTimezoneOffset)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr note\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateNoteExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/note/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get KMEHR Patient Info export\n * @param patientId\n * @param language\n */\n generatePatientInfoExport(patientId: string, language?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_kmehr/patientinfo/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr prescription\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generatePrescriptionExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/prescription/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr report\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateReportExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/report/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr request\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateRequestExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/request/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr result\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateResultExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/result/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get SMF (Software Medical File) export\n * @param body\n * @param patientId\n * @param language\n */\n generateSmfExport(patientId: string, language: string, body?: SoftwareMedicalFileExport): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n generateSumehr(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n generateSumehrV2(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr elements\n * @param body\n * @param patientId\n */\n getSumehrContent(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/content` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrContent(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check sumehr signature\n * @param body\n * @param patientId\n */\n getSumehrMd5(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/md5` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr elements\n * @param body\n * @param patientId\n */\n getSumehrV2Content(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/content` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrContent(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check sumehr signature\n * @param body\n * @param patientId\n */\n getSumehrV2Md5(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/md5` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import MedicationScheme into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importMedicationScheme(\n documentId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/medicationscheme/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import SMF into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param patientId\n * @param language\n * @param dryRun\n */\n importSmf(\n documentId: string,\n documentKey?: string,\n patientId?: string,\n language?: string,\n dryRun?: boolean,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import sumehr into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importSumehr(\n documentId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import sumehr into patient(s) using existing document\n * @param body\n * @param documentId\n * @param itemId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importSumehrByItemId(\n documentId: string,\n itemId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(documentId))}/importbyitemid` +\n '?ts=' +\n new Date().getTime() +\n (itemId ? '&itemId=' + encodeURIComponent(String(itemId)) : '') +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr validity\n * @param body\n * @param patientId\n */\n isSumehrV2Valid(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/valid` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrValidity(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr validity\n * @param body\n * @param patientId\n */\n isSumehrValid(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/valid` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrValidity(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Validate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n validateSumehr(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/validate` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Validate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n validateSumehrV2(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/validate` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Appointment } from '../model/Appointment'\nimport { AppointmentImport } from '../model/AppointmentImport'\nimport { EmailOrSmsMessage } from '../model/EmailOrSmsMessage'\nimport { MikronoAppointmentTypeRest } from '../model/MikronoAppointmentTypeRest'\nimport { MikronoCredentials } from '../model/MikronoCredentials'\nimport { Unit } from '../model/Unit'\nimport { User } from '../model/User'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBemikronoApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Get appointments for patient\n * @param calendarDate\n */\n appointmentsByDate(calendarDate: number): Promise> {\n let _body = null\n\n const _url = this.host + `/be_mikrono/appointments/byDate/${encodeURIComponent(String(calendarDate))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Appointment(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get appointments for patient\n * @param patientId\n * @param from\n * @param to\n */\n appointmentsByPatient(patientId: string, from?: number, to?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_mikrono/appointments/byPatient/${encodeURIComponent(String(patientId))}` +\n '?ts=' +\n new Date().getTime() +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Appointment(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param body\n */\n createAppointmentTypes(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_mikrono/appointmentTypes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new MikronoAppointmentTypeRest(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Create appointments for owner\n * @param body\n */\n createAppointments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_mikrono/appointments` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Notify of an appointment change\n * @param appointmentId\n * @param action\n */\n notify(appointmentId: string, action: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_mikrono/notify/${encodeURIComponent(String(appointmentId))}/${encodeURIComponent(String(action))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => true)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set credentials for provided user\n * @param body\n * @param userId\n */\n register(userId: string, body?: MikronoCredentials): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_mikrono/user/${encodeURIComponent(String(userId))}/register` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Send message using mikrono from logged user\n * @param body\n */\n sendMessage(body?: EmailOrSmsMessage): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_mikrono/sendMessage` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set credentials for provided user\n * @param body\n * @param userId\n */\n setUserCredentials(userId: string, body?: MikronoCredentials): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_mikrono/user/${encodeURIComponent(String(userId))}/credentials` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeresultexportApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n */\n exportHealthOne(fromHcpId: string, toHcpId: string, patId: string, date: number, ref: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/hl1/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n * @param mimeType\n */\n exportKmehrReport(\n fromHcpId: string,\n toHcpId: string,\n patId: string,\n date: number,\n ref: string,\n mimeType?: boolean,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/kmehrreport/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime() +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n */\n exportMedidoc(fromHcpId: string, toHcpId: string, patId: string, date: number, ref: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/medidoc/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Contact } from '../model/Contact'\nimport { ResultInfo } from '../model/ResultInfo'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeresultimportApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Can we handle this document\n * @param id\n * @param enckeys\n */\n canHandle(id: string, enckeys: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_result_import/canhandle/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary import document\n * @param documentId\n * @param hcpId\n * @param language\n * @param protocolIds\n * @param formIds\n * @param planOfActionId\n * @param enckeys\n * @param ctc\n */\n doImport(\n documentId: string,\n hcpId: string,\n language: string,\n protocolIds: string,\n formIds: string,\n planOfActionId: string,\n enckeys: string,\n ctc: Contact\n ): Promise {\n let _body = null\n _body = ctc\n\n const _url =\n this.host +\n `/be_result_import/import/${encodeURIComponent(String(documentId))}/${encodeURIComponent(String(hcpId))}/${encodeURIComponent(\n String(language)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (protocolIds ? '&protocolIds=' + encodeURIComponent(String(protocolIds)) : '') +\n (formIds ? '&formIds=' + encodeURIComponent(String(formIds)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n const headers = this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Extract general infos from document\n * @param id\n * @param language\n * @param enckeys\n * @param full\n */\n getInfos(id: string, language: string, enckeys: string, full?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_result_import/infos/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '') +\n (full ? '&full=' + encodeURIComponent(String(full)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ResultInfo(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Amp } from '../model/Amp'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { Nmp } from '../model/Nmp'\nimport { PaginatedListAmp } from '../model/PaginatedListAmp'\nimport { PaginatedListNmp } from '../model/PaginatedListNmp'\nimport { PaginatedListVmp } from '../model/PaginatedListVmp'\nimport { PaginatedListVmpGroup } from '../model/PaginatedListVmpGroup'\nimport { Paragraph } from '../model/Paragraph'\nimport { PharmaceuticalForm } from '../model/PharmaceuticalForm'\nimport { SamVersion } from '../model/SamVersion'\nimport { Substance } from '../model/Substance'\nimport { Verse } from '../model/Verse'\nimport { Vmp } from '../model/Vmp'\nimport { VmpGroup } from '../model/VmpGroup'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBesamv2Api {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by dmpp code\n * @param dmppCode dmppCode\n */\n findAmpsByDmppCode(dmppCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/amp/byDmppCode/${encodeURIComponent(String(dmppCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, pagination is not supported\n * @summary Finding AMPs by amp code\n * @param ampCode ampCode\n */\n findAmpsByAmpCode(ampCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/amp/byAmpCode/${encodeURIComponent(String(ampCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by atc code with pagination.\n * @param atcCode atcCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByAtc(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byAtc/${encodeURIComponent(String(atcCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by atc code with pagination.\n * @param atcCode atcCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByAtc1(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byAtc/${encodeURIComponent(String(atcCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group with pagination.\n * @param vmpgId vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byGroupId/${encodeURIComponent(String(vmpgId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId An amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp code with pagination.\n * @param vmpCode vmpCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byVmpCode/${encodeURIComponent(String(vmpCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp id with pagination.\n * @param vmpId vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByVmpId(vmpId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byVmpId/${encodeURIComponent(String(vmpId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a paginated list of NMPs by matching label. Matches occur per word\n * @summary Finding NMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedNmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/nmp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListNmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMP groups by language label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmpgroup document ID\n * @param limit Number of rows\n */\n findPaginatedVmpGroupsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmpgroup` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmpGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMP groups by cmpgCode with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmpgroup document ID\n * @param limit Number of rows\n */\n findPaginatedVmpGroupsByVmpGroupCode(\n vmpgCode: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmpgroup/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmpGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpgId vmpgId\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byGroupId/${encodeURIComponent(String(vmpgId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a paginated list of VMPs by matching label. Matches occur per word\n * @summary Finding VMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpCode vmpCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byVmpCode/${encodeURIComponent(String(vmpCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param searchString\n * @param language\n */\n findParagraphs(searchString: string, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/search/${encodeURIComponent(String(searchString))}/${encodeURIComponent(String(language))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Paragraph(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param cnk\n * @param language\n */\n findParagraphsWithCnk(cnk: number, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/be_samv2/chap/bycnk/${encodeURIComponent(String(cnk))}/${encodeURIComponent(String(language))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Paragraph(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n * @param verseSeq\n * @param docSeq\n * @param language\n * @param response\n */\n getAddedDocument(chapterName: string, paragraphName: string, verseSeq: number, docSeq: number, language: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}/${encodeURIComponent(\n String(verseSeq)\n )}/addeddoc/${encodeURIComponent(String(docSeq))}/${encodeURIComponent(String(language))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n */\n getAmpsForParagraph(chapterName: string, paragraphName: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/amps/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Get Samv2 version.\n */\n getSamVersion(): Promise {\n let _body = null\n\n const _url = this.host + `/be_samv2/v` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SamVersion(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n */\n getVersesHierarchy(chapterName: string, paragraphName: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/verse/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Verse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n * @param language\n */\n getVtmNamesForParagraph(chapterName: string, paragraphName: string, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/vtms/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}/${encodeURIComponent(\n String(language)\n )}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by dmpp code\n * @param body\n */\n listAmpsByDmppCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byDmppCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listAmpsByGroupCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byGroupCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listAmpsByGroupIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byGroupIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp code.\n * @param body\n */\n listAmpsByVmpCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byVmpCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp id.\n * @param body\n */\n listAmpsByVmpIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byVmpIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding NMPs by cnk id.\n * @param body\n */\n listNmpsByCnks(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/nmp/byCnks` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Nmp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List all pharmaceutical forms.\n */\n listPharmaceuticalForms(): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/pharmaform` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new PharmaceuticalForm(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List all substances.\n */\n listSubstances(): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/substance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Substance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of group codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listVmpGroupsByVmpGroupCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmpgroup/byGroupCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new VmpGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group.\n * @param body\n */\n listVmpsByGroupIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmp/byGroupIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Vmp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group.\n * @param body\n */\n listVmpsByVmpCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmp/byVmpCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Vmp(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CalendarItem } from '../model/CalendarItem'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\nimport { PaginatedListCalendarItem } from '../model/PaginatedListCalendarItem'\n\nexport class IccCalendarItemApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a calendarItem\n * @param body\n */\n async createCalendarItem(body?: CalendarItem): Promise {\n const _url = this.host + `/calendarItem` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a calendarItem by id.\n *\n * @summary Deletes an calendarItem\n * @param calendarItemId the id of calendarItem to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted calendarItem.\n */\n async deleteCalendarItem(calendarItemId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/calendarItem/${encodeURIComponent(calendarItemId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of calendarItems by id.\n *\n * @summary Deletes calendarItems\n * @param body a ListOfIds containing the ids of the calendarItems to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted calendarItems.\n */\n async deleteCalendarItems(body?: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/calendarItem/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.\n * @summary Find CalendarItems by hcparty and patient\n * @param body\n * @param hcPartyId\n */\n async findCalendarItemsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n const _url =\n this.host +\n `/calendarItem/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.\n * @summary Find CalendarItems by hcparty and patient\n * @param hcPartyId\n * @param secretFKeys\n */\n async findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findCalendarItemsByRecurrenceIdWithPagination} instead.\n *\n * @summary Find CalendarItems by recurrenceId\n * @param recurrenceId\n */\n async findCalendarItemsByRecurrenceId(recurrenceId: string): Promise> {\n const _url = this.host + `/calendarItem/byRecurrenceId?ts=${new Date().getTime()}&recurrenceId=${encodeURIComponent(recurrenceId)}&limit=1000000`\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItem(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find CalendarItems by recurrenceId\n * @param recurrenceId the recurrence id.\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListAccessLog.\n */\n async findCalendarItemsByRecurrenceIdWithPagination(\n recurrenceId: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/calendarItem/byRecurrenceId?ts=${new Date().getTime()}&recurrenceId=${encodeURIComponent(recurrenceId)}` +\n (!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a calendarItem\n * @param calendarItemId\n */\n async getCalendarItem(calendarItemId: string): Promise {\n let _body = null\n\n const _url = this.host + `/calendarItem/${encodeURIComponent(String(calendarItemId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getCalendarItemsWithPagination} instead\n *\n * @summary Gets all calendarItems\n */\n async getCalendarItems(): Promise> {\n const _url = this.host + `/calendarItem?ts=${new Date().getTime()}$limit=1000000`\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItem(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary gets all Calendar Items with pagination.\n *\n * @param startDocumentId the startDocumentId provided by the previous page or null if it's the first page.\n * @param limit the size of the page\n * @return a promise that will resolve in a PaginatedListCalendarItem.\n */\n async getCalendarItemsWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/calendarItem` +\n '?ts=' +\n new Date().getTime() +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get CalendarItems by Period and HcPartyId\n * @param startDate\n * @param endDate\n * @param hcPartyId\n */\n async getCalendarItemsByPeriodAndHcPartyId(startDate: number, endDate: number, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byPeriodAndHcPartyId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get calendarItems by id\n * @param body\n */\n async getCalendarItemsWithIds(body?: ListOfIds): Promise> {\n const _url = this.host + `/calendarItem/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get CalendarItems by Period and AgendaId\n * @param startDate\n * @param endDate\n * @param agendaId\n */\n async getCalendarsByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byPeriodAndAgendaId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an calendarItem\n * @param body\n */\n async modifyCalendarItem(body?: CalendarItem): Promise {\n const _url = this.host + `/calendarItem` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareCalendarItems(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/calendarItem/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, CalendarItem)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareCalendarItemsMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/calendarItem/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List CalendarItem ids by data owner and a set of secret foreign key. The ids will be sorted by CalendarItem startTime, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the calendar item ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the calendar item ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by CalendarItem startTime\n * @return a promise that will resolve in an Array of CalendarItem ids.\n */\n async findCalendarItemIdsByDataOwnerPatientStartTime(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/calendarItem/byDataOwnerPatientStartTime?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CalendarItemType } from '../model/CalendarItemType'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListCalendarItemType } from '../model/PaginatedListCalendarItemType'\n\nexport class IccCalendarItemTypeApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a calendarItemType\n * @param body\n */\n async createCalendarItemType(body?: CalendarItemType): Promise {\n const _url = this.host + `/calendarItemType` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of calendarItemTypes.\n *\n * @param calendarItemTypeIds a ListOfIds containing the ids of the calendarItemTypes to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted calendarItemTypes.\n */\n async deleteCalendarItemTypes(calendarItemTypeIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/calendarItemType/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n calendarItemTypeIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an calendarItemType\n * @param calendarItemTypeId\n */\n async getCalendarItemType(calendarItemTypeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/calendarItemType/${encodeURIComponent(String(calendarItemTypeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getCalendarItemTypesWithPagination} instead.\n * @summary Gets all calendarItemTypes\n */\n async getCalendarItemTypes(): Promise> {\n const _url = this.host + `/calendarItemType?ts=${new Date().getTime()}&limit=1000000`\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItemType(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all calendarItemTypes with pagination.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListCalendarItemType.\n */\n async getCalendarItemTypesWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/calendarItemType?ts=${new Date().getTime()}` +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getCalendarItemTypesIncludeDeletedWithPagination} instead.\n * @summary Gets all calendarItemTypes include deleted\n */\n async getCalendarItemTypesIncludeDeleted(): Promise> {\n const _url = this.host + `/calendarItemType/includeDeleted?ts=${new Date().getTime()}&limit=1000000`\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItemType(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all calendarItemTypes including deleted entities with pagination.\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListCalendarItemType.\n */\n async getCalendarItemTypesIncludeDeletedWithPagination(\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/calendarItemType/includeDeleted?ts=${new Date().getTime()}` +\n (!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an calendarItemType\n * @param body\n */\n async modifyCalendarItemType(body?: CalendarItemType): Promise {\n const _url = this.host + `/calendarItemType` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Classification } from '../model/Classification'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\nimport { PaginatedListClassification } from '../model/PaginatedListClassification'\n\nexport class IccClassificationApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification Template.\n * @summary Create a classification with the current user\n * @param body\n */\n async createClassification(body?: Classification): Promise {\n const _url = this.host + `/classification` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of classifications.\n *\n * @param classificationIds a ListOfIds containing the ids of the classification to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted classifications.\n */\n async deleteClassifications(classificationIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/classification/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n classificationIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single classification by id.\n *\n * @param classificationId the id of the classification to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted classification.\n */\n async deleteClassification(classificationId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/classification/${encodeURIComponent(classificationId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to be delimited by comma\n * @deprecated use {@link findClassificationIdsByDataOwnerPatientCreated} instead.\n * @summary List classification Templates found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findClassificationsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/classification/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List Classification ids by data owner and a set of secret foreign key. The ids will be sorted by Classification created, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the classification ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the classification ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by Classification created\n * @return a promise that will resolve in an Array of Classification ids.\n */\n async findClassificationIdsByDataOwnerPatientCreated(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/classification/byDataOwnerPatientCreated?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a classification Template\n * @param classificationId\n */\n async getClassification(classificationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/classification/${encodeURIComponent(String(classificationId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Get a list of classifications by their ids.\n * @param ids\n */\n async getClassificationByHcPartyId(ids: ListOfIds): Promise> {\n const _url = this.host + `/classification/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, ids, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification Template.\n * @summary Modify a classification Template\n * @param body\n */\n async modifyClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classification` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareClassifications(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/classification/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Classification)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareClassificationsMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/classification/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ClassificationTemplate } from '../model/ClassificationTemplate'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { PaginatedListClassificationTemplate } from '../model/PaginatedListClassificationTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\n\nexport class IccClassificationTemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification Template.\n * @summary Create a classification Template with the current user\n * @param body\n */\n async createClassificationTemplate(body?: ClassificationTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classificationTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of classification templates.\n *\n * @param classificationTemplateIds a ListOfIds containing the ids of the classification templates to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted classification templates\n */\n async deleteClassificationTemplates(classificationTemplateIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/classificationTemplate/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n classificationTemplateIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single classification template by id.\n *\n * @param classificationTemplateId the id of the classification template to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted classification template.\n */\n async deleteClassificationTemplate(classificationTemplateId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/classificationTemplate/${encodeURIComponent(classificationTemplateId)}` + '?ts=' + new Date().getTime(),\n this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to be delimited by commas.\n * @summary List classification Templates found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findClassificationTemplatesByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/classificationTemplate/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ClassificationTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List classification Templates found By Healthcare Party and a single secret foreign key with pagination.\n * @param hcPartyId the healthcare party id.\n * @param secretFKey the secret foreign key.\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListClassificationTemplate.\n */\n async findClassificationTemplatesByHCPartyPatientForeignKey(\n hcPartyId: string,\n secretFKey: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/classificationTemplate/byHcPartySecretForeignKey?ts=${new Date().getTime()}` +\n `&hcPartyId=${encodeURIComponent(hcPartyId)}` +\n `&secretFKey=${encodeURIComponent(secretFKey)}` +\n (!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a classification Template\n * @param classificationTemplateId\n */\n async getClassificationTemplate(classificationTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/classificationTemplate/${encodeURIComponent(String(classificationTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Ids are seperated by a coma\n * @summary Get a list of classifications Templates\n * @param ids\n */\n async getClassificationTemplateByIds(ids: string): Promise> {\n let _body = null\n\n const _url = this.host + `/classificationTemplate/byIds/${encodeURIComponent(String(ids))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ClassificationTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of classification templates.\n * @summary List all classification templates with pagination\n * @param startKey A label\n * @param startDocumentId An classification template document ID\n * @param limit Number of rows\n */\n async listClassificationTemplates(startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/classificationTemplate` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification Template.\n * @summary Modify a classification Template\n * @param body\n */\n async modifyClassificationTemplate(body?: ClassificationTemplate): Promise {\n const _url = this.host + `/classificationTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a classification Template to a healthcare party (By current healthcare party). Returns the element with new delegations.\n * @summary Delegates a classification Template to a healthcare party\n * @param body\n * @param classificationTemplateId\n */\n async newClassificationTemplateDelegations(classificationTemplateId: string, body?: Array): Promise {\n const _url =\n this.host + `/classificationTemplate/${encodeURIComponent(String(classificationTemplateId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterCode } from '../model/AbstractFilterCode'\nimport { Code } from '../model/Code'\nimport { FilterChainCode } from '../model/FilterChainCode'\nimport { PaginatedListCode } from '../model/PaginatedListCode'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\n\nexport class IccCodeApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Create a code entity. Fields Type, Code and Version are required.\n * @summary Create a code\n * @param body\n */\n createCode(body?: Code): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/code` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a batch of code entities. Fields Type, Code and Version are required for each code.\n * @summary Create a batch of codes\n * @param body\n */\n createCodes(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter codes\n * @param body\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param skip Skip rows\n * @param sort Sort key\n * @param desc Descending\n */\n filterCodesBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: FilterChainCode\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/code/filter` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skip ? '&skip=' + encodeURIComponent(String(skip)) : '') +\n (sort ? '&sort=' + encodeURIComponent(String(sort)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of code types matched with given input.\n * @summary Get list of code types by region and type.\n * @param region Code region\n * @param type Code type\n */\n findCodeTypes(region?: string, type?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/codetype/byRegionType` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets list of codes by code, type and version\n * @param region Code region\n * @param type Code type\n * @param code Code code\n * @param version Code version\n */\n findCodes(region?: string, type?: string, code?: string, version?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/byRegionTypeCode` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (code ? '&code=' + encodeURIComponent(String(code)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets paginated list of codes by code, type and version.\n * @param region\n * @param type\n * @param code\n * @param version\n * @param startKey The start key for pagination\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodes(\n region?: string,\n type?: string,\n code?: string,\n version?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (code ? '&code=' + encodeURIComponent(String(code)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, pagination is not supported\n * @summary Get paginated list of codes by code, type and version.\n * @param region\n * @param types\n * @param language\n * @param label\n * @param version\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodesByLabel(\n region?: string,\n types?: string,\n language?: string,\n label?: string,\n version?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/byLabel` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (types ? '&types=' + encodeURIComponent(String(types)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets paginated list of codes by link and link type.\n * @param linkType\n * @param linkedId\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodesWithLink(\n linkType: string,\n linkedId?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/byLink/${encodeURIComponent(String(linkType))}` +\n '?ts=' +\n new Date().getTime() +\n (linkedId ? '&linkedId=' + encodeURIComponent(String(linkedId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tag types matched with given input.\n * @summary Gets list of tag types by region and type.\n * @param region Code region\n * @param type Code type\n */\n findTagTypes(region?: string, type?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/tagtype/byRegionType` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a code based on its id\n * @summary Get a code by id\n * @param codeId Code id\n */\n getCode(codeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/code/${encodeURIComponent(String(codeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a code based on (type, code, version) as query strings. (type, code, version) is unique.\n * @summary Get a code\n * @param type Code type\n * @param code Code code\n * @param version Code version\n */\n getCodeWithParts(type: string, code: string, version: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/${encodeURIComponent(String(type))}/${encodeURIComponent(String(code))}/${encodeURIComponent(String(version))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of codes by ids/keys.\n * @summary Gets a list of codes by ids\n * @param codeIds\n */\n async getCodes(codeIds: string[]): Promise> {\n const body = new ListOfIds({ ids: codeIds })\n\n const _url = this.host + `/code/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Import codes from the resources XML file depending on the passed pathVariable\n * @summary Import codes\n * @param codeType\n */\n importCodes(codeType: string): Promise {\n let _body = null\n\n const _url = this.host + `/code/${encodeURIComponent(String(codeType))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of code matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchCodesBy(body?: AbstractFilterCode): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, code, version) is not allowed.\n * @summary Modify a code\n * @param body\n */\n modifyCode(body?: Code): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/code` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, code, version) is not allowed.\n * @summary Modify a batch of codes\n * @param body\n */\n modifyCodes(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterContact } from '../model/AbstractFilterContact'\nimport { AbstractFilterService } from '../model/AbstractFilterService'\nimport { Contact } from '../model/Contact'\nimport { Content } from '../model/Content'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainContact } from '../model/FilterChainContact'\nimport { FilterChainService } from '../model/FilterChainService'\nimport { IcureStub } from '../model/IcureStub'\nimport { LabelledOccurence } from '../model/LabelledOccurence'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListContact } from '../model/PaginatedListContact'\nimport { PaginatedListService } from '../model/PaginatedListService'\nimport { Service } from '../model/Service'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccContactApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Close contacts for Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async closeForHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/close` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a contact with the current user and returns an instance of created contact afterward.\n * @summary Create a contact with the current user\n * @param body\n */\n async createContact(body?: Contact): Promise {\n const _url = this.host + `/contact` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contacts.\n * @summary Create a batch of contacts\n * @param body\n */\n async createContacts(body?: Array): Promise> {\n const _url = this.host + `/contact/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of contacts.\n *\n * @param contactIds a ListOfIds containing the ids of the contacts to delete.\n * @return a Promise that will resolve in an array of the DocIdentifiers of the successfully deleted contacts.\n */\n async deleteContacts(contactIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/contact/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n contactIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single contact by id.\n *\n * @param contactId the id of the contact to delete.\n */\n async deleteContact(contactId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/contact/${encodeURIComponent(contactId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List contacts for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Contact document ID\n * @param limit Number of rows\n */\n async filterContactsBy(startDocumentId?: string, limit?: number, body?: FilterChainContact): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListContact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List services for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Contact document ID\n * @param limit Number of rows\n */\n async filterServicesBy(startDocumentId?: string, limit?: number, body?: FilterChainService): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/service/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListService(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a list of contacts found by Healthcare Party and form's id.\n * @param hcPartyId\n * @param formId\n */\n async findByHCPartyFormId(hcPartyId: string, formId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartyFormId` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (formId ? '&formId=' + encodeURIComponent(String(formId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a list of contacts found by Healthcare Party and form's ids.\n * @param body\n * @param hcPartyId\n */\n async findByHCPartyFormIds(hcPartyId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartyFormIds` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findContactIdsByDataOwnerPatientOpeningDate} instead.\n * @summary Get a list of contacts found by Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param planOfActionsIds\n * @param skipClosedContacts\n @param body\n */\n async findByHCPartyPatientSecretFKeysUsingPost(\n hcPartyId: string,\n planOfActionsIds?: string,\n skipClosedContacts?: boolean,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (planOfActionsIds ? '&planOfActionsIds=' + encodeURIComponent(String(planOfActionsIds)) : '') +\n (skipClosedContacts ? '&skipClosedContacts=' + encodeURIComponent(String(skipClosedContacts)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findContactIdsByDataOwnerPatientOpeningDate} instead.\n * @summary Get a list of contacts found by Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n * @param planOfActionsIds\n * @param skipClosedContacts\n */\n async findByHCPartyPatientSecretFKeys(\n hcPartyId: string,\n secretFKeys: string,\n planOfActionsIds?: string,\n skipClosedContacts?: boolean\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (planOfActionsIds ? '&planOfActionsIds=' + encodeURIComponent(String(planOfActionsIds)) : '') +\n (skipClosedContacts ? '&skipClosedContacts=' + encodeURIComponent(String(skipClosedContacts)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List contacts found By Healthcare Party and service Id.\n * @param hcPartyId\n * @param serviceId\n */\n async findByHCPartyServiceId(hcPartyId: string, serviceId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartyServiceId` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (serviceId ? '&serviceId=' + encodeURIComponent(String(serviceId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List contacts found By externalId.\n * @param externalId\n */\n async findContactsByExternalId(externalId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byExternalId` +\n '?ts=' +\n new Date().getTime() +\n (externalId ? '&externalId=' + encodeURIComponent(String(externalId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findContactIdsByDataOwnerPatientOpeningDate} instead.\n * @summary Get a list of contacts found by Healthcare Party and Patient foreign keys.\n * @param body\n * @param hcPartyId\n */\n async findContactsByHCPartyPatientForeignKeys(hcPartyId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartyPatientForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Retrieves the delegation stub of the Contact which ids are passed as parameter.\n * @param contactIds the ids of the contact for which the stub should be retrieved\n */\n async findContactsDelegationsStubsByIds(contactIds: []): Promise {\n const _url = this.host + `/contact/delegations`\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, { ids: contactIds }, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findContactsDelegationsStubsByIds} instead.\n * @summary List contacts found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n async findContactsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findContactsDelegationsStubsByIds} instead.\n * @summary List contacts found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findContactsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a contact based on its id\n * @summary Get a contact\n * @param contactId\n */\n async getContact(contactId: string): Promise {\n let _body = null\n\n const _url = this.host + `/contact/${encodeURIComponent(String(contactId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a service based on its id\n * @summary Get a service\n * @param serviceId\n */\n async getService(serviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/contact/service/${encodeURIComponent(String(serviceId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Service(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of contact by ids/keys.\n * @summary Get contacts by batch\n * @param body\n */\n async getContacts(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get an empty content\n */\n async getEmptyContent(): Promise {\n let _body = null\n\n const _url = this.host + `/contact/service/content/empty` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of all used codes frequencies in services\n * @param codeType\n * @param minOccurences\n */\n async getServiceCodesOccurences(codeType: string, minOccurences: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/codes/${encodeURIComponent(String(codeType))}/${encodeURIComponent(String(minOccurences))}` +\n '?ts=' +\n new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new LabelledOccurence(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts.\n * @summary List contacts bu opening date parties with(out) pagination\n * @param startKey The contact openingDate\n * @param endKey The contact max openingDate\n * @param hcpartyid hcpartyid\n * @param startDocumentId A contact party document ID\n * @param limit Number of rows\n */\n async listContactsByOpeningDate(\n startDate: number,\n endDate: number,\n hcpartyid: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byOpeningDate` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (hcpartyid ? '&hcPartyId=' + encodeURIComponent(String(hcpartyid)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListContact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services with provided ids\n * @param body\n */\n async listServices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/service` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services by related association id\n * @param associationId\n */\n async listServicesByAssociationId(associationId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/associationId` +\n '?ts=' +\n new Date().getTime() +\n (associationId ? '&associationId=' + encodeURIComponent(String(associationId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the list of services linked to the provided health element id\n * @summary List services linked to a health element\n * @param healthElementId\n * @param hcPartyId hcPartyId\n */\n async listServicesByHealthElementId(healthElementId: string, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/healthElementId/${encodeURIComponent(String(healthElementId))}` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services linked to provided ids\n * @param body\n * @param linkType The type of the link\n */\n async listServicesLinkedTo(linkType?: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host + `/contact/service/linkedTo` + '?ts=' + new Date().getTime() + (linkType ? '&linkType=' + encodeURIComponent(String(linkType)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of contacts matching the provided filter for the current user (HcParty)\n * @param body\n */\n async matchContactsBy(body?: AbstractFilterContact): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of services matching the provided filter for the current user\n * @param body\n */\n async matchServicesBy(body?: AbstractFilterService): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/service/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contact.\n * @summary Modify a contact\n * @param body\n */\n async modifyContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contacts.\n * @summary Modify a batch of contacts\n * @param body\n */\n async modifyContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List Contact ids by data owner and a set of secret foreign key. The ids will be sorted by Contact openingDate, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the contact ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the contact ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by Contact openingDate\n * @return a promise that will resolve in an Array of Contact ids.\n */\n async findContactIdsByDataOwnerPatientOpeningDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/contact/byDataOwnerPatientOpeningDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareContacts(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/contact/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Contact)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareContactsMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/contact/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DataOwnerWithType } from '../model/DataOwnerWithType'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { CryptoActorStubWithType } from '../model/CryptoActorStub'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDataownerApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * General information about the current data owner. Note that this does not decrpyt patient data owners.\n * @summary Get the data owner corresponding to the current user\n */\n async getCurrentDataOwner(): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => DataOwnerWithType.fromJson(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Full data owner information\n * @summary Get a data owner by his ID\n * @param dataOwnerId\n */\n async getDataOwner(dataOwnerId: string): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/${encodeURIComponent(String(dataOwnerId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => DataOwnerWithType.fromJson(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the keys of a data owner\n * @summary Get a data owner by his ID\n * @param dataOwnerId\n */\n async getCryptoActorStub(dataOwnerId: string): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/stub/${encodeURIComponent(String(dataOwnerId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CryptoActorStubWithType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Updates the keys of a data owner\n */\n async modifyCryptoActorStub(stub: CryptoActorStubWithType): Promise {\n let _body = stub\n\n const _url = this.host + `/dataowner/stub` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CryptoActorStubWithType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterDevice } from '../model/AbstractFilterDevice'\nimport { Device } from '../model/Device'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainDevice } from '../model/FilterChainDevice'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListDevice } from '../model/PaginatedListDevice'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDeviceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Name, last name, date of birth, and gender are required. After creation of the device and obtaining the ID, you need to create an initial delegation.\n * @summary Create a device\n * @param body\n */\n async createDevice(body?: Device): Promise {\n const _url = this.host + `/device` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a device\n * @param body\n * @param groupId\n */\n async createDeviceInGroup(groupId: string, body?: Device): Promise {\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of created devices\n * @summary Create devices in bulk\n * @param body\n */\n createDevices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of created devices\n * @summary Create devices in bulk\n * @param body\n */\n createDevices1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response contains the id/rev of deleted device.\n * @summary Delete device.\n * @param deviceId\n */\n async deleteDevice(deviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is an array containing the id/rev of deleted devices.\n * @summary Delete devices.\n * @param body\n */\n async deleteDevices(body?: ListOfIds): Promise> {\n const _url = this.host + `/device/delete/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deleting a device. Response is an array containing the id of deleted device.\n * @summary Delete a device\n * @param groupId\n * @param deviceIds\n */\n deleteDevicesInGroup(groupId: string, deviceIds: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}/${encodeURIComponent(String(deviceIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of devices along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter devices for the current user (HcParty)\n * @param body\n * @param startDocumentId A device document ID\n * @param limit Number of rows\n */\n filterDevicesBy(startDocumentId?: string, limit?: number, body?: FilterChainDevice): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/device/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDevice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets device administrative data.\n * @summary Get Device\n * @param deviceId\n */\n getDevice(deviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param deviceId\n */\n getDeviceAesExchangeKeysForDelegate(\n deviceId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets device administrative data.\n * @summary Get devices by id\n * @param body\n */\n getDevices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Device(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the device\n * @summary Get devices by their IDs\n * @param body\n * @param groupId\n */\n getDevicesInGroup(groupId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Device(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of devices matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchDevicesBy(body?: AbstractFilterDevice): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Device.\n * @param body\n * @param groupId\n */\n modifyDeviceInGroup(groupId: string, body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the updated device\n * @summary Modify a device\n * @param body\n */\n updateDevice(body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified devices\n * @summary Modify devices in bulk\n * @param body\n */\n updateDevices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified devices\n * @summary Modify devices in bulk\n * @param body\n */\n updateDevices1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { DocumentTemplate } from '../model/DocumentTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListDocumentTemplate } from '../model/PaginatedListDocumentTemplate'\n\nexport class IccDoctemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created document template.\n * @summary Create a document template with the current user\n * @param body\n */\n async createDocumentTemplate(body?: DocumentTemplate): Promise {\n const _url = this.host + `/doctemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of document templates.\n *\n * @param documentTemplateIds a ListOfIds containing the ids of the document templates to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted document templates.\n */\n async deleteDocumentTemplates(documentTemplateIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/doctemplate/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n documentTemplateIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link listAllDocumentTemplatesWithPagination} instead.\n * @summary Gets all document templates for all users\n */\n async listAllDocumentTemplates(): Promise> {\n const _url = this.host + `/doctemplate/find/all?ts=${new Date().getTime()}&limit=1000000`\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDocumentTemplate(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all document templates for all users with pagination.\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListDocumentTemplate.\n */\n async listAllDocumentTemplatesWithPagination(startKey?: string, startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/doctemplate/find/all?ts=${new Date().getTime()}` +\n (!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates for current user\n */\n async listDocumentTemplates(loadAttachment?: boolean): Promise> {\n const _url = this.host + `/doctemplate` + '?ts=' + new Date().getTime() +\n (loadAttachment !== undefined ? '&loadAttachment=' + encodeURIComponent(String(loadAttachment)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates by Type\n * @param documentTypeCode\n */\n async findDocumentTemplatesByDocumentType(documentTypeCode: string, loadAttachment?: boolean): Promise> {\n const _url = this.host + `/doctemplate/byDocumentType/${encodeURIComponent(String(documentTypeCode))}` + '?ts=' + new Date().getTime() +\n (loadAttachment !== undefined ? '&loadAttachment=' + encodeURIComponent(String(loadAttachment)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates by Type For currentUser\n * @param documentTypeCode\n */\n async listDocumentTemplatesByDocumentTypeForCurrentUser(documentTypeCode: string, loadAttachment?: boolean): Promise> {\n const _url =\n this.host + `/doctemplate/byDocumentTypeForCurrentUser/${encodeURIComponent(String(documentTypeCode))}` + '?ts=' + new Date().getTime() +\n (loadAttachment !== undefined ? '&loadAttachment=' + encodeURIComponent(String(loadAttachment)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates\n * @param specialityCode\n */\n async listDocumentTemplatesBySpeciality(specialityCode: string, loadAttachment?: boolean): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate/bySpecialty/${encodeURIComponent(String(specialityCode))}` + '?ts=' + new Date().getTime() +\n (loadAttachment !== undefined ? '&loadAttachment=' + encodeURIComponent(String(loadAttachment)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Download a the document template attachment\n * @param documentTemplateId\n * @param attachmentId\n */\n async getAttachmentText(documentTemplateId: string, attachmentId: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachmentText/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a document template\n * @param documentTemplateId\n */\n async getDocumentTemplate(documentTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Download a the document template attachment\n * @param documentTemplateId\n * @param attachmentId\n */\n async getDocumentTemplateAttachment(documentTemplateId: string, attachmentId: string): Promise {\n const _url =\n this.host +\n `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a document's attachment\n * @param body\n * @param documentTemplateId\n */\n async setDocumentTemplateAttachment(documentTemplateId: string, body?: ArrayBuffer): Promise {\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a document's attachment\n * @param body\n * @param documentTemplateId\n */\n async setDocumentTemplateAttachmentJson(documentTemplateId: string, body?: string): Promise {\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachmentJson` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document template.\n * @summary Modify a document template with the current user\n * @param body\n * @param documentTemplateId\n */\n async updateDocumentTemplate(documentTemplateId: string, body?: DocumentTemplate): Promise {\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Document } from '../model/Document'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\nimport { PaginatedListDocument } from '../model/PaginatedListDocument'\n\nexport class IccDocumentApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Creates a document and returns an instance of created document afterward\n * @summary Create a document\n * @param body\n */\n async createDocument(body?: Document): Promise {\n const _url = this.host + `/document` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId\n */\n async deleteAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of documents and returns the list of deleted document ids.\n *\n * @param documentIds a ListOfIds containing the ids of the documents to delete.\n * @return a Promise that will resolve in an array of DocIdentifier of the successfully deleted documents.\n */\n async deleteDocuments(documentIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/document/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n documentIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single document by id.\n *\n * @param documentId the id of the document to delete.\n * @return a DocIdentifier of the document.\n */\n async deleteDocument(documentId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/document/${encodeURIComponent(documentId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findDocumentIdsByDataOwnerSecretForeignKey} instead.\n * @summary List documents found By type, By Healthcare Party and secret foreign keys.\n * @param documentTypeCode\n * @param hcPartyId\n * @param secretFKeys\n */\n async findByTypeHCPartyMessageSecretFKeys(documentTypeCode: string, hcPartyId: string, secretFKeys: string[]): Promise> {\n const body = new ListOfIds({ ids: secretFKeys })\n const _url =\n this.host +\n `/document/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (documentTypeCode ? '&documentTypeCode=' + encodeURIComponent(String(documentTypeCode)) : '') +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @deprecated use {@link findDocumentIdsByDataOwnerSecretForeignKey} instead.\n * @summary List documents found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findDocumentsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string[]): Promise> {\n const body = new ListOfIds({ ids: secretFKeys })\n const _url =\n this.host +\n `/document/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List documents found By Healthcare Party and a single secret foreign key with pagination.\n * @deprecated use {@link findDocumentIdsByDataOwnerSecretForeignKey} instead.\n * @param hcPartyId the healthcare party id.\n * @param secretFKey the secret foreign key.\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListDocument.\n */\n async findDocumentsByHCPartyPatientForeignKey(\n hcPartyId: string,\n secretFKey: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/document/byHcPartySecretForeignKey?ts=${new Date().getTime()}` +\n `&hcPartyId=${encodeURIComponent(hcPartyId)}` +\n `&secretFKey=${encodeURIComponent(secretFKey)}` +\n (!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n const headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async findDocumentIdsByDataOwnerSecretForeignKey(\n dataOwnerId: string,\n secretForeignKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/document/byDataOwnerPatientCreated?ts=${new Date().getTime()}` +\n `&dataOwnerId=${encodeURIComponent(dataOwnerId)}` +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, { ids: secretForeignKeys }, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @summary List documents with no delegation\n * @param limit\n */\n async findWithoutDelegation(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/document/woDelegation` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the document corresponding to the identifier passed in the request\n * @summary Get a document\n * @param documentId\n */\n async getDocument(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use getMainDocumentAttachment instead\n */\n async getDocumentAttachment(documentId: string, attachmentId: string, enckeys?: string, fileName?: string): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption of attachment is not allowed anymore')\n }\n return this.getMainDocumentAttachment(documentId)\n }\n\n /**\n * Get the main attachment of a document\n * @param documentId id of the document\n * @return the content of the main attachment for the document (if any)\n */\n async getMainDocumentAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get the main attachment of a document forcing usage of `application/octet-stream` in Content-Type\n * @param documentId id of the document\n * @return the content of the main attachment for the document (if any)\n */\n async getRawMainDocumentAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, 'application/octet-stream', this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the first document corresponding to the externalUuid passed in the request\n * @summary Get a document\n * @param externalUuid\n */\n async getDocumentByExternalUuid(externalUuid: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/externaluuid/${encodeURIComponent(String(externalUuid))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of document corresponding to the identifiers passed in the body\n * @summary Get a batch of document\n * @param body\n */\n async getDocuments(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/document/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of document corresponding to the externalUuid passed in the request\n * @summary Get all documents with externalUuid\n * @param externalUuid\n */\n async getDocumentsByExternalUuid(externalUuid: string): Promise> {\n let _body = null\n\n const _url = this.host + `/document/externaluuid/${encodeURIComponent(String(externalUuid))}/all` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Updates the document and returns an instance of the modified document afterward\n * @summary Update a document\n * @param body\n */\n async modifyDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/document` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified documents.\n * @summary Update a batch of documents\n * @param body\n */\n async modifyDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/document/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates or updates a main attachment for a document and returns the modified document instance afterward\n * @param documentId id of the document\n * @param documentRev revision of the document\n * @param body content of the attachment (must be compatible with XHR body)\n * @param utis an array of UTIs for the attachment. The first element will be considered as the main UTI for the document. If provided and non-empty\n * overrides existing values.\n * @param dataIsEncrypted set this to true if the body you provided is containing encrypted data. This helps to have the appropriate content type\n * for the attachment. Defaults is false\n */\n async setMainDocumentAttachment(\n documentId: string,\n documentRev: string,\n body: Object,\n utis?: Array,\n dataIsEncrypted?: boolean\n ): Promise {\n if (!documentRev) throw new Error('Document rev is required')\n let _body = body\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/attachment` +\n '?ts=' +\n new Date().getTime() +\n '&rev=' +\n encodeURIComponent(String(documentRev)) +\n (utis ? utis.map((x) => '&utis=' + encodeURIComponent(String(x))).join('') : '') +\n (dataIsEncrypted ? '&encrypted=' + encodeURIComponent(String(dataIsEncrypted)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use setMainDocumentAttachment instead\n */\n setDocumentAttachmentBody(documentId: string, documentRev: string, enckeys?: null, body?: Object, utis?: string[]): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption of attachment is not allowed anymore')\n }\n if (!body) {\n throw new Error('body is now required.')\n }\n return this.setMainDocumentAttachment(documentId, documentRev, body, utis)\n }\n\n /**\n * @deprecated use setMainDocumentAttachment instead\n */\n setDocumentAttachment(documentId: string, documentRev: string, enckeys?: null, body?: Object, utis?: string[]): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption of attachment is not allowed anymore')\n }\n if (!body) {\n throw new Error('body is now required.')\n }\n return this.setMainDocumentAttachment(documentId, documentRev, body, utis)\n }\n\n /**\n * @deprecated use setMainDocumentAttachment instead\n */\n setDocumentAttachmentMulti(attachment: ArrayBuffer, documentRev: string, documentId: string, enckeys?: null): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption of attachment is not allowed anymore')\n }\n return this.setMainDocumentAttachment(documentId, documentRev, attachment)\n }\n\n /**\n * Creates or updates a secondary attachment for a document and returns the modified document instance afterward\n * @summary Creates or modifies a secondary attachment for a document\n * @param documentId id of the document to update\n * @param key Key of the secondary attachment to update\n * @param rev Revision of the latest known version of the document. If the revision does not match the current version of the document the method\n * will fail with CONFLICT status\n * @param attachment\n * @param utis an array of UTIs for the attachment. If provided and non-empty overrides existing values.\n * @param dataIsEncrypted set this to true if the body you provided is containing encrypted data. This helps to have the appropriate content type\n * for the attachment. Defaults is false\n * @return the updated document\n */\n async setSecondaryAttachment(\n documentId: string,\n key: string,\n rev: string,\n attachment: Object,\n utis?: Array,\n dataIsEncrypted?: boolean\n ): Promise {\n const _url =\n this.host +\n `/document/` +\n encodeURIComponent(String(documentId)) +\n '/secondaryAttachments/' +\n encodeURIComponent(String(key)) +\n '?ts=' +\n new Date().getTime() +\n (rev ? '&rev=' + encodeURIComponent(String(rev)) : '') +\n (utis ? utis.map((x) => '&utis=' + encodeURIComponent(String(x))).join('') : '') +\n (dataIsEncrypted ? '&encrypted=' + encodeURIComponent(String(dataIsEncrypted)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, attachment, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get the secondary attachment with the provided key for a document\n * @summary Retrieve a secondary attachment of a document\n * @param documentId id of the document\n * @param key Key of the secondary attachment to retrieve\n * @param fileName\n * @return the content of the attachment\n */\n async getSecondaryAttachment(documentId: string, key: string, fileName?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/secondaryAttachments/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (fileName ? '&fileName=' + encodeURIComponent(String(fileName)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId id of the document\n * @param key Key of the secondary attachment to delete\n * @param rev Revision of the latest known version of the document. If the revision does not match the current version of the document the method will fail with CONFLICT status\n * @return the updated document\n */\n async deleteSecondaryAttachment(documentId: string, key: string, rev: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/secondaryAttachments/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (rev ? '&rev=' + encodeURIComponent(String(rev)) : '')\n let headers = await this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n // TODO single request multi-attachment update\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareDocument(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/document/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Document)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { EntityReference } from '../model/EntityReference'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccEntityrefApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create an entity reference\n * @param body\n */\n async createEntityReference(body?: EntityReference): Promise {\n const _url = this.host + `/entityref` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityReference(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find latest reference for a prefix\n * @param prefix\n */\n async getLatest(prefix: string): Promise {\n let _body = null\n\n const _url = this.host + `/entityref/latest/${encodeURIComponent(String(prefix))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityReference(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { EntityTemplate } from '../model/EntityTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\n\nexport class IccEntitytemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Type, EntityTemplate and Version are required.\n * @summary Create a EntityTemplate\n * @param body\n */\n async createEntityTemplate(body?: EntityTemplate): Promise {\n const _url = this.host + `/entitytemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplates.\n * @summary Create a batch of entityTemplates\n * @param body\n */\n async createEntityTemplates(body?: Array): Promise> {\n const _url = this.host + `/entitytemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of entity templates.\n *\n * @param entityTemplateIds a ListOfIds containing the ids of the entity templates to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted entity templates.\n */\n async deleteEntityTemplates(entityTemplateIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/entitytemplate/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n entityTemplateIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by entityTemplate, type and version with pagination.\n * @param type\n * @param searchString\n * @param includeEntities\n */\n async findAllEntityTemplates(type: string, searchString?: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/findAll/${encodeURIComponent(String(type))}` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by entityTemplate, type and version with pagination.\n * @param type\n * @param keyword\n * @param includeEntities\n */\n async findAllEntityTemplatesByKeyword(type: string, keyword: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/findAll/${encodeURIComponent(String(type))}/keyword/${encodeURIComponent(String(keyword))}` +\n '?ts=' +\n new Date().getTime() +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by userId, entityTemplate, type and version with pagination.\n * @param userId\n * @param type\n * @param searchString\n * @param includeEntities\n */\n async findEntityTemplates(userId: string, type: string, searchString?: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/find/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(type))}` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by userId, type and keyword.\n * @param userId\n * @param type\n * @param keyword\n * @param includeEntities\n */\n async findEntityTemplatesByKeyword(userId: string, type: string, keyword: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/find/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(type))}/keyword/${encodeURIComponent(\n String(keyword)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a entityTemplate based on ID or (entityTemplate,type,version) as query strings. (entityTemplate,type,version) is unique.\n * @summary Get a entityTemplate\n * @param entityTemplateId EntityTemplate id\n */\n async getEntityTemplate(entityTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/entitytemplate/${encodeURIComponent(String(entityTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be a list of entity template ids\n * @summary Get a list of entityTemplates by ids\n * @param entityTemplateIds\n */\n async getEntityTemplates(entityTemplateIds: ListOfIds): Promise> {\n const _url = this.host + `/entitytemplate/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, entityTemplateIds, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, entityTemplate, version) is not allowed.\n * @summary Modify a entityTemplate\n * @param body\n */\n async modifyEntityTemplate(body?: EntityTemplate): Promise {\n const _url = this.host + `/entitytemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplates.\n * @summary Modify a batch of entityTemplates\n * @param body\n */\n async modifyEntityTemplates(body?: Array): Promise> {\n const _url = this.host + `/entitytemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Form } from '../model/Form'\nimport { FormTemplate } from '../model/FormTemplate'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\nimport { PaginatedListForm } from '../model/PaginatedListForm'\n\nexport class IccFormApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n async createForm(body?: Form): Promise
{\n const _url = this.host + `/form` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form template.\n * @summary Create a form template with the current user\n * @param body\n */\n async createFormTemplate(body?: FormTemplate): Promise {\n const _url = this.host + `/form/template` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created forms.\n * @summary Create a batch of forms\n * @param body\n */\n async createForms(body?: Array): Promise> {\n const _url = this.host + `/form/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete a form template\n * @param formTemplateId\n */\n async deleteFormTemplate(formTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Delete forms by batch.\n *\n * @param formIds a ListOfIds containing the ids of the Forms to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers related to the successfully deleted Forms.\n */\n async deleteForms(formIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/form/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n formIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single form by id.\n *\n * @param formId the id of the document to delete.\n * @return a Promise that will resolve in the DocIdentifier of the form.\n */\n async deleteForm(formId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/form/${encodeURIComponent(formId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all form templates for current user\n * @param loadLayout\n * @param raw\n */\n async findFormTemplates(loadLayout?: boolean, raw?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/template` +\n '?ts=' +\n new Date().getTime() +\n (loadLayout ? '&loadLayout=' + encodeURIComponent(String(loadLayout)) : '') +\n (raw ? '&raw=' + encodeURIComponent(String(raw)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all form templates\n * @param specialityCode\n * @param loadLayout\n */\n async findFormTemplatesBySpeciality(specialityCode: string, loadLayout?: boolean, raw?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/template/bySpecialty/${encodeURIComponent(String(specialityCode))}` +\n '?ts=' +\n new Date().getTime() +\n (loadLayout ? '&loadLayout=' + encodeURIComponent(String(loadLayout)) : '') +\n (raw ? '&raw=' + encodeURIComponent(String(raw)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findFormIdsByDataOwnerPatientOpeningDate} instead.\n * @summary List forms found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param healthElementId\n * @param planOfActionId\n * @param formTemplateId\n * @param body\n */\n async findFormsByHCPartyPatientForeignKeysUsingPost(\n hcPartyId: string,\n healthElementId?: string,\n planOfActionId?: string,\n formTemplateId?: string,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (healthElementId ? '&healthElementId=' + encodeURIComponent(String(healthElementId)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (formTemplateId ? '&formTemplateId=' + encodeURIComponent(String(formTemplateId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @deprecated use {@link findFormIdsByDataOwnerPatientOpeningDate} instead.\n * @summary List forms found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n * @param healthElementId\n * @param planOfActionId\n * @param formTemplateId\n */\n async findFormsByHCPartyPatientForeignKeys(\n hcPartyId: string,\n secretFKeys: string,\n healthElementId?: string,\n planOfActionId?: string,\n formTemplateId?: string\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (healthElementId ? '&healthElementId=' + encodeURIComponent(String(healthElementId)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (formTemplateId ? '&formTemplateId=' + encodeURIComponent(String(formTemplateId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List Form ids by data owner and a set of secret foreign key. The ids will be sorted by Form openingDate, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the form ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the form ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by Form openingDate\n * @return a promise that will resolve in an Array of Form ids.\n */\n async findFormIdsByDataOwnerPatientOpeningDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/form/byDataOwnerPatientOpeningDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findFormsDelegationsStubsByIds} instead.\n * @summary List form stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n async findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findFormsDelegationsStubsByIds} instead.\n * @summary List form stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findFormsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List form stubs by form ids.\n */\n async findFormsDelegationsStubsByIds(formIds: string[]): Promise> {\n const _url = this.host + `/form/delegations`\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, { ids: formIds }, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of forms by ids\n * @param formId\n * @param hcPartyId\n */\n async getChildrenForms(formId: string, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/form/childrenOf/${encodeURIComponent(String(formId))}/${encodeURIComponent(String(hcPartyId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form\n * @param formId\n */\n async getForm(formId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/${encodeURIComponent(String(formId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets the most recent form with the given logicalUuid\n * @param logicalUuid\n */\n async getFormByLogicalUuid(logicalUuid: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/logicalUuid/${encodeURIComponent(String(logicalUuid))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets the most recent form with the given uniqueId\n * @param uniqueId\n */\n async getFormByUniqueId(uniqueId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/uniqueId/${encodeURIComponent(String(uniqueId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form template by guid\n * @param formTemplateId\n * @param raw\n */\n async getFormTemplate(formTemplateId: string, raw?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/form/template/${encodeURIComponent(String(formTemplateId))}` +\n '?ts=' +\n new Date().getTime() +\n (raw ? '&raw=' + encodeURIComponent(String(raw)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form template\n * @param formTemplateGuid\n * @param specialityCode\n * @param raw\n */\n async getFormTemplatesByGuid(formTemplateGuid: string, specialityCode: string, raw?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/template/${encodeURIComponent(String(specialityCode))}/guid/${encodeURIComponent(String(formTemplateGuid))}` +\n '?ts=' +\n new Date().getTime() +\n (raw ? '&raw=' + encodeURIComponent(String(raw)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of forms by ids\n * @param body\n */\n async getForms(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all forms with given logicalUuid\n * @param logicalUuid\n */\n async getFormsByLogicalUuid(logicalUuid: string): Promise> {\n let _body = null\n\n const _url = this.host + `/form/all/logicalUuid/${encodeURIComponent(String(logicalUuid))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all forms by uniqueId\n * @param uniqueId\n */\n async getFormsByUniqueId(uniqueId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/form/all/uniqueId/${encodeURIComponent(String(uniqueId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified form.\n * @summary Modify a form\n * @param body\n */\n async modifyForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified forms.\n * @summary Modify a batch of forms\n * @param body\n */\n async modifyForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Update a form template's layout\n * @param attachment\n * @param formTemplateId\n */\n async setTemplateAttachmentMulti(attachment: ArrayBuffer, formTemplateId: string): Promise {\n let _body = null\n if (attachment && !_body) {\n const parts = Array.isArray(attachment) ? (attachment as any[]) : [attachment as ArrayBuffer]\n const _blob = new Blob(parts, { type: 'application/octet-stream' })\n _body = new FormData()\n _body.append('attachment', _blob)\n }\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}/attachment/multipart` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'multipart/form-data'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form template.\n * @summary Modify a form template with the current user\n * @param body\n * @param formTemplateId\n */\n async updateFormTemplate(formTemplateId: string, body?: FormTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareForms(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/form/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Form)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareFormsMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/form/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FrontEndMigration } from '../model/FrontEndMigration'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccFrontendmigrationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a front end migration\n * @param body\n */\n async createFrontEndMigration(body?: FrontEndMigration): Promise {\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a front end migration\n * @param frontEndMigrationId\n */\n deleteFrontEndMigration(frontEndMigrationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/frontendmigration/${encodeURIComponent(String(frontEndMigrationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a front end migration\n * @param frontEndMigrationId\n */\n getFrontEndMigration(frontEndMigrationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/frontendmigration/${encodeURIComponent(String(frontEndMigrationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an front end migration\n * @param frontEndMigrationName\n */\n getFrontEndMigrationByName(frontEndMigrationName: string): Promise> {\n let _body = null\n\n const _url = this.host + `/frontendmigration/byName/${encodeURIComponent(String(frontEndMigrationName))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FrontEndMigration(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a front end migration\n */\n getFrontEndMigrations(): Promise> {\n let _body = null\n\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FrontEndMigration(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies a front end migration\n * @param body\n */\n modifyFrontEndMigration(body?: FrontEndMigration): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DatabaseInitialisation } from '../model/DatabaseInitialisation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Group } from '../model/Group'\nimport { GroupDatabasesInfo } from '../model/GroupDatabasesInfo'\nimport { GroupDeletionReport } from '../model/GroupDeletionReport'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { ListOfProperties } from '../model/ListOfProperties'\nimport { PaginatedListGroup } from '../model/PaginatedListGroup'\nimport { RegistrationInformation } from '../model/RegistrationInformation'\nimport { RegistrationSuccess } from '../model/RegistrationSuccess'\nimport { ReplicationInfo } from '../model/ReplicationInfo'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { RoleConfiguration } from '../model/RoleConfiguration'\nimport { UserTypeEnum } from '../model/UserTypeEnum'\n\nexport class IccGroupApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Changes the supergroup of the group passed as parameter according to the operation token\n * @summary Transfers the ownership of a group\n * @param operationToken The operation token generated by the target group\n * @param childGroupId The id of the group to transfer\n */\n changeSuperGroup(operationToken: string, childGroupId: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(childGroupId))}/transfer` + '?ts=' + new Date().getTime()\n let headers = this.headers\n operationToken && (headers = headers.concat(new XHR.Header('Operation-Token', operationToken)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a new group and associated dbs. The created group will be manageable by the users that belong to the same group as the one that called createGroup. Several tasks can be executed during the group creation like DB replications towards the created DBs, users creation and healthcare parties creation\n * @summary Create a group\n * @param body\n * @param id The id of the group, also used for subsequent authentication against the db (can only contain digits, letters, - and _)\n * @param name The name of the group\n * @param type The type of the group.\n * @param password The password of the group (can only contain digits, letters, - and _)\n * @param server The server on which the group dbs will be created\n * @param q The number of shards for patient and healthdata dbs : 3-8 is a recommended range of value\n * @param n The number of replications for dbs : 3 is a recommended value\n * @param superGroup Group parent\n */\n createGroup(\n id: string,\n name: string,\n password: string,\n server?: string,\n q?: number,\n n?: number,\n superGroup?: string,\n type?: string,\n body?: DatabaseInitialisation\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (name ? '&name=' + encodeURIComponent(String(name)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (server ? '&server=' + encodeURIComponent(String(server)) : '') +\n (q ? '&q=' + encodeURIComponent(String(q)) : '') +\n (n ? '&n=' + encodeURIComponent(String(n)) : '') +\n (superGroup ? '&superGroup=' + encodeURIComponent(String(superGroup)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete group without reset or deleteing storage\n * @summary Delete group\n * @param id The id of group to delete\n */\n deleteGroup(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes an operation token in the group of the user based on its id\n * @summary Deletes an operation token for the current group\n * @param tokenId The operation that the token will allow\n */\n deleteOperationToken(tokenId: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/operationToken/${encodeURIComponent(String(tokenId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List groups that are the children of the group with the provided parent id\n * @summary Find groups by parent\n * @param id The id of the group\n * @param startDocumentId A group document ID used as a cursor for pagination\n * @param limit Number of rows\n */\n findGroups(id: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/children` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List groups that are the children of the group with the provided parent id and that match the provided search string\n * @summary Find groups by parent and content\n * @param id The id of the group\n * @param searchString The string to search for in the group. Properties, name and id are scanned for the provided search string.\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A group document ID used as a cursor for pagination\n * @param limit Number of rows\n */\n findGroupsWithContent(id: string, searchString: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/children/search` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a group by id\n * @summary Get a group by id\n * @param id The id of the group\n */\n getGroup(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Reset storage\n * @summary Reset storage for group\n * @param body\n */\n getGroupsStorageInfos(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/group/storage/info` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new GroupDatabasesInfo(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all the parent groups of the group passed as parameter, as long as the current user has access to them\n * @param id The id of the group\n */\n getHierarchy(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/hierarchy` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a group by id\n * @summary Get a group by id\n * @param id The id of the group\n */\n getNameOfGroupParent(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/parent/name` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates an operation token with limited time and scope validity for the group of the user\n * @summary Creates an operation token for the current group\n * @param operation The operation that the token will allow\n * @param duration The duration of the token in seconds (default 3600)\n */\n getOperationToken(operation: string, duration?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/operationToken` +\n '?ts=' +\n new Date().getTime() +\n (operation ? '&operation=' + encodeURIComponent(String(operation)) : '') +\n (duration ? '&duration=' + encodeURIComponent(String(duration)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get index info\n * @param id The id of the group\n */\n getReplicationInfo1(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/r` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicationInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Hard deletes the provided group from CouchDB. This operation can only be done by an admin user\n * @summary Hard delete group\n * @param id The id of group to delete\n */\n hardDeleteGroup(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/group/hard/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new GroupDeletionReport(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Init design docs for provided group\n * @summary Init design docs\n * @param id The id of the group\n * @param clazz The class of the design doc\n * @param warmup Warmup the design doc\n * @param dryRun Do nothing\n */\n initDesignDocs(id: string, clazz?: string, warmup?: boolean, dryRun?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/dd` +\n '?ts=' +\n new Date().getTime() +\n (clazz ? '&clazz=' + encodeURIComponent(String(clazz)) : '') +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '')\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl)\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List existing groups\n * @summary List all the groups ids the current user can access\n */\n listAllGroupsIds(): Promise> {\n let _body = null\n\n const _url = this.host + `/group/all` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List available apps for user\n * @summary List apps\n */\n listApps(): Promise> {\n let _body = null\n\n const _url = this.host + `/group/apps` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Group(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List existing groups\n * @summary List groups\n */\n listGroups(): Promise> {\n let _body = null\n\n const _url = this.host + `/group` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Group(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update existing group name\n * @summary Update group name\n * @param id The id of the group\n * @param name The new name for the group\n */\n modifyGroupName(id: string, name: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/name/${encodeURIComponent(String(name))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update existing group properties\n * @summary Update group properties\n * @param body\n * @param id The id of the group\n */\n modifyGroupProperties(id: string, body?: ListOfProperties): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/properties` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Sets the default roles to assign to a certain category of users in a group.\n *\n * @param groupId the group to update.\n * @param userType the type of user.\n * @param roleIds the ids of the roles to assign by default to that type of user.\n * @return the updated group\n */\n setDefaultRoles(groupId: string, userType: UserTypeEnum, roleIds: string[]): Promise {\n const _body = new ListOfIds({ ids: roleIds })\n\n const _url = this.host + `/group/${encodeURIComponent(groupId)}/defaultRoles?userType=${userType}&ts=${new Date().getTime()}`\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n getDefaultRoles(groupId: string): Promise<{ [key in UserTypeEnum]: RoleConfiguration[] }> {\n const _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(groupId)}/defaultRoles?ts=${new Date().getTime()}`\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a new group and associated dbs. The created group will be manageable by the users that belong to the same group as the one that called createGroup. Several tasks can be executed during the group creation like DB replications towards the created DBs, users creation and healthcare parties creation\n * @summary Create a group\n * @param body\n * @param type The type of the group (default: root)\n * @param role The role of the user (default: admin)\n */\n registerNewGroupAdministrator(type?: string, role?: string, body?: RegistrationInformation): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/register/trial` +\n '?ts=' +\n new Date().getTime() +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (role ? '&role=' + encodeURIComponent(String(role)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new RegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Reset storage\n * @summary Reset storage for group\n * @param body\n * @param id The id of the group\n * @param q The number of shards for patient and healthdata dbs : 3-8 is a recommended range of value\n * @param n The number of replications for dbs : 3 is a recommended value\n */\n resetStorage(id: string, q?: number, n?: number, body?: ListOfIds): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/reset/storage` +\n '?ts=' +\n new Date().getTime() +\n (q ? '&q=' + encodeURIComponent(String(q)) : '') +\n (n ? '&n=' + encodeURIComponent(String(n)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update password for provided group\n * @summary Set group password\n * @param id The id of the group\n * @param password The new password for the group (can only contain digits, letters, - and _)\n */\n setGroupPassword(id: string, password: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/password` + '?ts=' + new Date().getTime()\n let headers = this.headers\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Solve conflicts for group\n * @summary Solve conflicts for group\n * @param id The id of the group\n * @param limit Solve at most limit conflicts\n * @param warmup Warmup the design doc\n */\n solveConflicts(id: string, limit?: number, warmup?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/conflicts` +\n '?ts=' +\n new Date().getTime() +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterHealthcareParty } from '../model/AbstractFilterHealthcareParty'\nimport { DataOwnerRegistrationSuccess } from '../model/DataOwnerRegistrationSuccess'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainHealthcareParty } from '../model/FilterChainHealthcareParty'\nimport { HealthcareParty } from '../model/HealthcareParty'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListHealthcareParty } from '../model/PaginatedListHealthcareParty'\nimport { PublicKey } from '../model/PublicKey'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccHcpartyApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a healthcare party\n * @param body\n */\n async createHealthcareParty(body?: HealthcareParty): Promise {\n const _url = this.host + `/hcparty` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a healthcare party\n * @param body\n * @param groupId\n */\n async createHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a healthcare parties in batch.\n * @param healthcarePartyIds a ListOfIds containing the ids of the healthcare parties to delete.\n * @return a Promise that will resolve in an Array of DocIdentifiers of the successfully deleted healthcare parties.\n */\n async deleteHealthcareParties(healthcarePartyIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/hcparty/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n healthcarePartyIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single healthcare party by id.\n *\n * @param healthcarePartyId the id of the healthcare party to delete.\n * @return a Promise that will resolve in the DocIdentifier of the healthcare party.\n */\n async deleteHealthcareParty(healthcarePartyId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/hcparty/${encodeURIComponent(healthcarePartyId)}` + '?ts=' + new Date().getTime(),\n this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a healthcare parties in batch in a specific group\n * @param groupId the id of the group where to delete the healthcare parties.\n * @param healthcarePartyIds a ListOfIds containing the ids of the healthcare parties to delete.\n * @return a Promise that will resolve in an Array of DocIdentifiers of the successfully deleted healthcare parties.\n */\n async deleteHealthcarePartiesInGroup(groupId: string, healthcarePartyIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/hcparty/delete/batch/inGroup/${encodeURIComponent(groupId)}` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n healthcarePartyIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single healthcare party by id in a specific group.\n *\n * @param groupId the id of the group where to delete the healthcare party.\n * @param healthcarePartyId the id of the healthcare party to delete.\n * @return a Promise that will resolve in the DocIdentifier of the healthcare party.\n */\n async deleteHealthcarePartyInGroup(groupId: string, healthcarePartyId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/hcparty/${encodeURIComponent(healthcarePartyId)}/inGroup/${encodeURIComponent(groupId)}` + '?ts=' + new Date().getTime(),\n this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare party along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter healthcare parties for the current user (HcParty)\n * @param body\n * @param startDocumentId A HealthcareParty document ID\n * @param limit Number of rows\n */\n async filterHealthPartiesBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthcareParty): Promise {\n const _url =\n this.host +\n `/hcparty/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param name The Last name search value\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n findByName(name?: string, startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/byName` +\n '?ts=' +\n new Date().getTime() +\n (name ? '&name=' + encodeURIComponent(String(name)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param type The type of the HCP (persphysician)\n * @param spec The speciality of the HCP\n * @param firstCode The first postCode for the HCP\n * @param lastCode The last postCode for the HCP\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit Number of rows\n */\n async findBySpecialityAndPostCode(\n type: string,\n spec: string,\n firstCode: string,\n lastCode: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/hcparty/bySpecialityAndPostCode/${encodeURIComponent(type)}/${encodeURIComponent(spec)}/${encodeURIComponent(\n firstCode\n )}/to/${encodeURIComponent(lastCode)}` +\n '?ts=' +\n new Date().getTime() +\n +(!!startKey ? `&startKey=${encodeURIComponent(startKey)}` : '') +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by nihii or ssin with(out) pagination\n * @param searchValue\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n async findBySsinOrNihii(\n searchValue: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n desc?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/byNihiiOrSsin/${encodeURIComponent(String(searchValue))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param healthcarePartyId\n */\n getAesExchangeKeysForDelegate(\n healthcarePartyId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the current healthcare Party\n * @summary Get the current healthcare party if logged in.\n */\n getCurrentHealthcareParty(): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get healthcareParties by their IDs\n */\n getHealthcareParties(body?: ListOfIds): Promise> {\n let _body = body\n\n const _url = this.host + '/hcparty/byIds?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Return a list of children hcp.\n * @summary Find children of an healthcare parties\n * @param parentId\n */\n getHealthcarePartiesByParentId(parentId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(parentId))}/children` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get healthcareParties by their IDs\n * @param body\n * @param groupId\n */\n getHealthcarePartiesInGroup(groupId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get a healthcareParty by his ID\n * @param healthcarePartyId\n */\n getHealthcareParty(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the public key of a healthcare party in Hex\n * @summary Get public key of a healthcare party\n * @param healthcarePartyId\n */\n getPublicKey(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}/publicKey` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PublicKey(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param name The Last name search value\n */\n listByName(name: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/byNameStrict/${encodeURIComponent(String(name))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary List healthcare parties with(out) pagination\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n listHealthcareParties(startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of healthcare party matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchHealthcarePartiesBy(body?: AbstractFilterHealthcareParty): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Healthcare Party.\n * @param body\n */\n modifyHealthcareParty(body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Healthcare Party.\n * @param body\n * @param groupId\n */\n modifyHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Register a new hcp into the system\n * @summary Register a hcp\n * @param body\n * @param groupId\n * @param parentHcPartyId\n * @param token\n * @param useShortToken\n */\n registerHealthcareParty(\n groupId: string,\n parentHcPartyId?: string,\n token?: string,\n useShortToken?: boolean,\n body?: HealthcareParty\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/hcparty/register/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (parentHcPartyId ? '&parentHcPartyId=' + encodeURIComponent(String(parentHcPartyId)) : '') +\n (token ? '&token=' + encodeURIComponent(String(token)) : '') +\n (useShortToken ? '&useShortToken=' + encodeURIComponent(String(useShortToken)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DataOwnerRegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterHealthElement } from '../model/AbstractFilterHealthElement'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainHealthElement } from '../model/FilterChainHealthElement'\nimport { HealthElement } from '../model/HealthElement'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListHealthElement } from '../model/PaginatedListHealthElement'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccHelementApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created healthcare element.\n * @summary Create a healthcare element with the current user\n * @param body\n */\n async createHealthElement(body?: HealthElement): Promise {\n const _url = this.host + `/helement` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created healthcare elements.\n * @summary Create a batch of healthcare elements\n * @param body\n */\n async createHealthElements(body?: Array): Promise> {\n const _url = this.host + `/helement/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Delete healthcare elements by batch.\n *\n * @param healthElementIds a ListOfIds containing the ids of the health elements to delete.\n * @return a Promise that will resolve in an Array containing the DocIdentifiers of the successfully delete documents.\n */\n async deleteHealthElements(healthElementIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/helement/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n healthElementIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single health element by id.\n *\n * @param healthElementId the id of the health element to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted health element.\n */\n async deleteHealthElement(healthElementId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/helement/${encodeURIComponent(healthElementId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of health elements along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter health elements for the current user (HcParty)\n * @param body\n * @param startDocumentId A HealthElement document ID\n * @param limit Number of rows\n */\n async filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/helement/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List healthcare elements found By Healthcare Party and secret foreign keys.\n * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.\n * @param body\n * @param hcPartyId\n */\n async findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.\n * @summary List healthcare elements found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findHealthElementsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List HealthElement ids by data owner and a set of secret foreign key. The ids will be sorted by HealthElement openingDate, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the health element ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the health element ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by HealthElement openingDate\n * @return a promise that will resolve in an Array of HealthElement ids.\n */\n async findHealthElementIdsByDataOwnerPatientOpeningDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/helement/byDataOwnerPatientOpeningDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findHealthElementsDelegationsStubsByIds} instead.\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n async findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @deprecated use {@link findHealthElementsDelegationsStubsByIds} instead.\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n async findHealthElementsDelegationsStubsByIds(healthElementIds: string[]): Promise> {\n const _url = this.host + `/helement/byHcPartySecretForeignKeys/delegations`\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, { ids: healthElementIds }, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a healthcare element\n * @param healthElementId\n */\n async getHealthElement(healthElementId: string): Promise {\n let _body = null\n\n const _url = this.host + `/helement/${encodeURIComponent(String(healthElementId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of healthElement by ids/keys.\n * @summary Get healthElements by batch\n * @param body\n */\n async getHealthElements(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of health element matching the provided filter for the current user (HcParty)\n * @param body\n */\n async matchHealthElementsBy(body?: AbstractFilterHealthElement): Promise> {\n const _url = this.host + `/helement/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare element.\n * @summary Modify a healthcare element\n * @param body\n */\n async modifyHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n async modifyHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareHealthElements(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/helement/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, HealthElement)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareHealthElementsMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/helement/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Contact } from '../model/Contact'\nimport { Document } from '../model/Document'\nimport { Form } from '../model/Form'\nimport { HealthElement } from '../model/HealthElement'\nimport { IndexingInfo } from '../model/IndexingInfo'\nimport { Invoice } from '../model/Invoice'\nimport { Message } from '../model/Message'\nimport { Patient } from '../model/Patient'\nimport { ReplicationInfo } from '../model/ReplicationInfo'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccIcureApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Get index info\n */\n getIndexingInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/i` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new IndexingInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get process info\n */\n getProcessInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/p` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get replication info\n */\n getReplicationInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/r` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicationInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get replication info\n * @param id\n */\n getReplicatorInfo(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/icure/r/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get user sync info\n */\n getUserSyncInfo(): Promise<{ [key: string]: { [key: string]: any } }> {\n let _body = null\n\n const _url = this.host + `/icure/sync/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get version\n */\n getVersion(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/v` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check if a user exists\n */\n isReady(): Promise {\n const _url = this.host + `/icure/ok` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param loglevel\n * @param _package\n */\n loglevel(loglevel: string, _package: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/icure/loglevel/${encodeURIComponent(String(loglevel))}` +\n '?ts=' +\n new Date().getTime() +\n (_package ? '&_package=' + encodeURIComponent(String(_package)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Resolve contacts conflicts\n * @param limit\n */\n resolveContactsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/contact` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve documents conflicts\n * @param ids\n * @param limit\n */\n resolveDocumentsConflicts(ids?: string, limit?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/icure/conflicts/document` +\n '?ts=' +\n new Date().getTime() +\n (ids ? '&ids=' + encodeURIComponent(String(ids)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve forms conflicts\n * @param limit\n */\n resolveFormsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/form` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve healthcare elements conflicts\n * @param limit\n */\n resolveHealthElementsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url =\n this.host + `/icure/conflicts/healthelement` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve invoices conflicts\n * @param limit\n */\n resolveInvoicesConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/invoice` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve messages conflicts\n * @param limit\n */\n resolveMessagesConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/message` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Resolve patients conflicts\n * @param limit\n */\n resolvePatientsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/patient` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Force update design doc\n * @param entityName\n * @param warmup\n */\n updateDesignDoc(entityName: string, warmup?: boolean): Promise {\n const _url =\n this.host +\n `/icure/dd/${encodeURIComponent(String(entityName))}` +\n '?ts=' +\n new Date().getTime() +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets the value of a property in the CouchDB configuration.\n * WARNING: this method only works with a local installation of CouchDB.\n * @param section the section of the configuration.\n * @param key the specific key to get the value.\n */\n getCouchDbConfigProperty(section: string, key: string): Promise {\n const _url = this.host + `/icure/couchdb/config/${encodeURIComponent(section)}/${encodeURIComponent(key)}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Sets the value of a property in the CouchDB configuration.\n * WARNING: this method only works with a local installation of CouchDB.\n * @param section the section of the configuration.\n * @param key the specific key to get the value.\n * @param value the value to set for the property.\n */\n setCouchDbConfigProperty(section: string, key: string, value: string): Promise {\n const _url =\n this.host +\n `/icure/couchdb/config/${encodeURIComponent(section)}/${encodeURIComponent(key)}` +\n '?ts=' +\n new Date().getTime() +\n `&value=${encodeURIComponent(value)}`\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Sets the value of a property in kraken. The current supported properties are:\n * - `useDataOwnerPartition` values: true/false\n * - `useObsoleteViews` values: true/false\n * WARNING: this method only works Kraken lite.\n * @param property the name of the property to set.\n * @param value the value to set for the property.\n */\n setLiteConfigProperty(property: string, value: string): Promise {\n const _url = this.host + `/icure/lite/config/${encodeURIComponent(property)}/${encodeURIComponent(value)}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Insurance } from '../model/Insurance'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { PaginatedListInsurance } from '../model/PaginatedListInsurance'\n\nexport class IccInsuranceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates an insurance\n * @param body\n */\n async createInsurance(body?: Insurance): Promise {\n const _url = this.host + `/insurance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an insurance\n * @param insuranceId\n */\n async deleteInsurance(insuranceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/insurance/${encodeURIComponent(insuranceId)}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceId\n */\n async getInsurance(insuranceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/insurance/${encodeURIComponent(String(insuranceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets insurances by id\n * @param body\n */\n async getInsurances(body?: ListOfIds): Promise> {\n const _url = this.host + `/insurance/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceCode\n */\n async listInsurancesByCode(insuranceCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/insurance/byCode/${encodeURIComponent(String(insuranceCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceName\n */\n async listInsurancesByName(insuranceName: string): Promise> {\n let _body = null\n\n const _url = this.host + `/insurance/byName/${encodeURIComponent(String(insuranceName))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an insurance\n * @param body\n */\n async modifyInsurance(body?: Insurance): Promise {\n const _url = this.host + `/insurance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n getAllInsurances(startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/insurance?ts=` +\n new Date().getTime() +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${encodeURIComponent(limit)}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInsurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainInvoice } from '../model/FilterChainInvoice'\nimport { IcureStub } from '../model/IcureStub'\nimport { Invoice } from '../model/Invoice'\nimport { InvoicingCode } from '../model/InvoicingCode'\nimport { LabelledOccurence } from '../model/LabelledOccurence'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListInvoice } from '../model/PaginatedListInvoice'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccInvoiceApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Append codes to new or existing invoice\n * @param body\n * @param userId\n * @param type\n * @param sentMediumType\n * @param secretFKeys\n * @param insuranceId\n * @param invoiceId\n * @param gracePeriod\n */\n async appendCodes(\n userId: string,\n type: string,\n sentMediumType: string,\n secretFKeys: string,\n insuranceId?: string,\n invoiceId?: string,\n gracePeriod?: number,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(userId))}/append/${encodeURIComponent(String(type))}/${encodeURIComponent(\n String(sentMediumType)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (insuranceId ? '&insuranceId=' + encodeURIComponent(String(insuranceId)) : '') +\n (invoiceId ? '&invoiceId=' + encodeURIComponent(String(invoiceId)) : '') +\n (gracePeriod ? '&gracePeriod=' + encodeURIComponent(String(gracePeriod)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates an invoice\n * @param body\n */\n async createInvoice(body?: Invoice): Promise {\n const _url = this.host + `/invoice` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created invoices.\n * @summary Create a batch of invoices\n * @param body\n */\n async createInvoices(body?: Array): Promise> {\n const _url = this.host + `/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an invoice\n * @param invoiceId\n */\n async deleteInvoice(invoiceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/invoice/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of invoices along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter invoices for the current user (HcParty)\n * @param body\n */\n async filterInvoicesBy(body?: FilterChainInvoice): Promise> {\n const _url = this.host + `/invoice/filter` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n * @param fromDate\n * @param toDate\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async findByAuthor(\n hcPartyId: string,\n fromDate?: number,\n toDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (fromDate ? '&fromDate=' + encodeURIComponent(String(fromDate)) : '') +\n (toDate ? '&toDate=' + encodeURIComponent(String(toDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findInvoiceIdsByDataOwnerPatientInvoiceDate} instead.\n * @summary List invoices found By Healthcare Party and secret foreign patient keys.\n * @param body\n * @param hcPartyId\n */\n async findInvoicesByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by commas.\n * @deprecated use {@link findInvoiceIdsByDataOwnerPatientInvoiceDate} instead.\n * @summary List invoices found By Healthcare Party and secret foreign patient keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findInvoicesByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List Invoice ids by data owner and a set of secret foreign key. The ids will be sorted by Invoice invoiceDate, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the invoice ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the invoice ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by Invoice invoiceDate.\n * @return a promise that will resolve in an Array of Invoice ids.\n */\n async findInvoiceIdsByDataOwnerPatientInvoiceDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/invoice/byDataOwnerPatientInvoiceDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link findInvoicesDelegationsStubsByIds} instead.\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n async findInvoicesDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @deprecated use {@link findInvoicesDelegationsStubsByIds} instead.\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n async findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n async findInvoicesDelegationsStubsByIds(invoiceIds: string[]): Promise> {\n const _url = this.host + `/invoice/delegations`\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, { ids: invoiceIds }, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an invoice\n * @param invoiceId\n */\n async getInvoice(invoiceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/invoice/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an invoice\n * @param body\n */\n async getInvoices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of all used tarifications frequencies in invoices\n * @param minOccurrences\n */\n async getTarificationsCodesOccurences(minOccurrences: number): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/codes/${encodeURIComponent(String(minOccurrences))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new LabelledOccurence(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices per status\n * @param body\n * @param status\n * @param from\n * @param to\n */\n async listAllHcpsByStatus(status: string, from?: number, to?: number, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/allHcpsByStatus/${encodeURIComponent(String(status))}` +\n '?ts=' +\n new Date().getTime() +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param body\n */\n async listByContactIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/byContacts` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices by groupId\n * @param hcPartyId\n * @param groupId\n */\n async listByHcPartyGroupId(hcPartyId: string, groupId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartyGroupId/${encodeURIComponent(String(hcPartyId))}/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices by type, sent or unsent\n * @param hcPartyId\n * @param sentMediumType\n * @param invoiceType\n * @param sent\n * @param from\n * @param to\n */\n async listByHcPartySentMediumTypeInvoiceTypeSentDate(\n hcPartyId: string,\n sentMediumType: string,\n invoiceType: string,\n sent: boolean,\n from?: number,\n to?: number\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcParty/${encodeURIComponent(String(hcPartyId))}/mediumType/${encodeURIComponent(\n String(sentMediumType)\n )}/invoiceType/${encodeURIComponent(String(invoiceType))}/sent/${encodeURIComponent(String(sent))}` +\n '?ts=' +\n new Date().getTime() +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all invoices by author, by sending mode, by status and by date\n * @param hcPartyId\n * @param sendingMode\n * @param status\n * @param from\n * @param to\n */\n async listByHcpartySendingModeStatusDate(\n hcPartyId: string,\n sendingMode?: string,\n status?: string,\n from?: number,\n to?: number\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcpartySendingModeStatusDate/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sendingMode ? '&sendingMode=' + encodeURIComponent(String(sendingMode)) : '') +\n (status ? '&status=' + encodeURIComponent(String(status)) : '') +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param invoiceIds\n */\n async listByIds(invoiceIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/byIds/${encodeURIComponent(String(invoiceIds))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param recipientIds\n */\n async listByRecipientsIds(recipientIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/to/${encodeURIComponent(String(recipientIds))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param serviceIds\n */\n async listByServiceIds(serviceIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/byServiceIds/${encodeURIComponent(String(serviceIds))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param userIds\n */\n async listToInsurances(userIds?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toInsurances` + '?ts=' + new Date().getTime() + (userIds ? '&userIds=' + encodeURIComponent(String(userIds)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param userIds\n */\n async listToInsurancesUnsent(userIds?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toInsurances/unsent` + '?ts=' + new Date().getTime() + (userIds ? '&userIds=' + encodeURIComponent(String(userIds)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n */\n async listToPatients(hcPartyId?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toPatients` + '?ts=' + new Date().getTime() + (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n */\n async listToPatientsUnsent(hcPartyId?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/toPatients/unsent` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param body\n * @param invoiceId\n */\n async mergeTo(invoiceId: string, body?: ListOfIds): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/mergeTo/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an invoice\n * @param body\n */\n async modifyInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified invoices.\n * @summary Modify a batch of invoices\n * @param body\n */\n async modifyInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an invoice\n * @param body\n */\n async reassignInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/reassign` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary removeCodes for linked serviceId\n * @param body\n * @param userId\n * @param serviceId\n * @param secretFKeys\n */\n async removeCodes(userId: string, serviceId: string, secretFKeys: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(userId))}/service/${encodeURIComponent(String(serviceId))}` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param invoiceId\n * @param scheme\n * @param forcedValue\n */\n async validate(invoiceId: string, scheme: string, forcedValue: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/validate/${encodeURIComponent(String(invoiceId))}` +\n '?ts=' +\n new Date().getTime() +\n (scheme ? '&scheme=' + encodeURIComponent(String(scheme)) : '') +\n (forcedValue ? '&forcedValue=' + encodeURIComponent(String(forcedValue)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareInvoices(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/invoice/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Invoice)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareInvoicesMinimal(request: BulkShareOrUpdateMetadataParams): Promise {\n const _url = this.host + '/invoice/bulkSharedMetadataUpdateMinimal' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new MinimalEntityBulkShareResult(x)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Keyword } from '../model/Keyword'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListKeyword } from '../model/PaginatedListKeyword'\n\nexport class IccKeywordApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created keyword.\n * @summary Create a keyword with the current user\n * @param body\n */\n async createKeyword(body?: Keyword): Promise {\n const _url = this.host + `/keyword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of keywords.\n * @param keywordIds a ListOfIds containing the ids of the keywords to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully delete keywords.\n */\n async deleteKeywords(keywordIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/keyword/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n keywordIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a keyword\n * @param keywordId\n */\n async getKeyword(keywordId: string): Promise {\n let _body = null\n\n const _url = this.host + `/keyword/${encodeURIComponent(String(keywordId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getKeywordsWithPagination} instead.\n * @summary Gets all keywords.\n */\n async getKeywords(): Promise> {\n const _url = this.host + `/keyword?ts=${new Date().getTime()}&limit=1000000`\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListKeyword(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all keywords with pagination.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListKeyword.\n */\n async getKeywordsWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/keyword?ts=${new Date().getTime()}` +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListKeyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get keywords by user\n * @param userId\n */\n async getKeywordsByUser(userId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/keyword/byUser/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Keyword(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified keyword.\n * @summary Modify a keyword\n * @param body\n */\n async modifyKeyword(body?: Keyword): Promise {\n const _url = this.host + `/keyword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainMaintenanceTask } from '../model/FilterChainMaintenanceTask'\nimport { MaintenanceTask } from '../model/MaintenanceTask'\nimport { PaginatedListMaintenanceTask } from '../model/PaginatedListMaintenanceTask'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccMaintenanceTaskApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a maintenanceTask\n * @param body\n */\n async createMaintenanceTask(body?: MaintenanceTask): Promise {\n const _url = this.host + `/maintenancetask` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of maintenanceTasks.\n *\n * @param maintenanceTaskIds a ListOfIds containing the ids of the maintenanceTasks to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted maintenanceTasks.\n */\n async deleteMaintenanceTasks(maintenanceTaskIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/maintenancetask/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n maintenanceTaskIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single maintenanceTask by id.\n *\n * @param maintenanceTaskId the id of the maintenanceTask to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted maintenanceTask.\n */\n async deleteMaintenanceTask(maintenanceTaskId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/maintenancetask/${encodeURIComponent(maintenanceTaskId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of maintenanceTasks along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter maintenanceTasks for the current user (HcParty)\n * @param body\n * @param startDocumentId A maintenanceTask document ID\n * @param limit Number of rows\n */\n async filterMaintenanceTasksBy(startDocumentId?: string, limit?: number, body?: FilterChainMaintenanceTask): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/maintenancetask/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a maintenanceTask\n * @param maintenanceTaskId\n */\n async getMaintenanceTask(maintenanceTaskId: string): Promise {\n let _body = null\n\n const _url = this.host + `/maintenancetask/${encodeURIComponent(String(maintenanceTaskId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a maintenanceTask\n * @param body\n */\n async modifyMaintenanceTask(body?: MaintenanceTask): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/maintenancetask` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareMaintenanceTask(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/maintenancetask/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, MaintenanceTask)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { MedexInfo } from '../model/MedexInfo'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccMedexApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Generate a Medex XML String\n * @param body\n */\n async generateMedex(body?: MedexInfo): Promise {\n const _url = this.host + `/medex/generate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { MedicalLocation } from '../model/MedicalLocation'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListMedicalLocation } from '../model/PaginatedListMedicalLocation'\n\nexport class IccMedicallocationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a medical location\n * @param body\n */\n async createMedicalLocation(body?: MedicalLocation): Promise {\n const _url = this.host + `/medicallocation` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of medical locations.\n *\n * @param locationIds a ListOfIds containing the ids of the medical locations to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted medical locations.\n */\n async deleteMedicalLocations(locationIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/medicallocation/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n locationIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a medical location\n * @param locationId\n */\n async getMedicalLocation(locationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/medicallocation/${encodeURIComponent(String(locationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getMedicalLocationsWithPagination} instead.\n * @summary Gets all medical locations.\n */\n async getMedicalLocations(): Promise> {\n const _url = this.host + `/medicallocation?ts=${new Date().getTime()}&limit=1000000`\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMedicalLocation(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all medical locations with pagination.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListMedicalLocation.\n */\n async getMedicalLocationsWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/medicallocation?ts=${new Date().getTime()}` +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies a medical location\n * @param body\n */\n async modifyMedicalLocation(body?: MedicalLocation): Promise {\n const _url = this.host + `/medicallocation` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { Message } from '../model/Message'\nimport { MessagesReadStatusUpdate } from '../model/MessagesReadStatusUpdate'\nimport { PaginatedListMessage } from '../model/PaginatedListMessage'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { FilterChainMessage } from '../model/FilterChainMessage'\nimport { AbstractFilterMessage } from '../model/AbstractFilterMessage'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\nimport { AccessLog } from '../model/AccessLog'\n\nexport class IccMessageApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * @summary Creates a message\n * @param body\n */\n async createMessage(body?: Message): Promise {\n const _url = this.host + `/message` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a message\n * @param body\n */\n async createMessageInTopic(body?: Message): Promise {\n const _url = this.host + `/message/topic` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of messages.\n *\n * @param messageIds a ListOfIds containing the ids of the messages to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the messages successfully deleted\n */\n async deleteMessages(messageIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/message/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n messageIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single message by id.\n *\n * @param messageId the id of the message to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted message.\n */\n async deleteMessage(messageId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/message/${encodeURIComponent(messageId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party\n * @param startKey\n * @param startDocumentId\n * @param limit\n */\n async findMessages(startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided from address\n * @param fromAddress\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n async findMessagesByFromAddress(\n fromAddress?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byFromAddress` +\n '?ts=' +\n new Date().getTime() +\n (fromAddress ? '&fromAddress=' + encodeURIComponent(String(fromAddress)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link listMessageIdsByDataOwnerPatientSentDate} instead.\n * @summary List messages found By Healthcare Party and secret foreign keys.\n * @param body\n */\n async findMessagesByHCPartyPatientForeignKeysUsingPost(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/byHcPartySecretForeignKeys` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by commas.\n * @deprecated use {@link listMessageIdsByDataOwnerPatientSentDate} instead.\n * @summary List messages found By Healthcare Party and secret foreign keys.\n * @param secretFKeys\n */\n async findMessagesByHCPartyPatientForeignKeys(secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/message/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary List Message ids by data owner and a set of secret foreign key. The ids will be sorted by Message sent, in ascending or descending\n * order according to the specified parameter value.\n *\n * @param dataOwnerId the data owner id.\n * @param secretFKeys an array of secret foreign keys.\n * @param startDate a timestamp in epoch milliseconds. If undefined, all the message ids since the beginning of time will be returned.\n * @param endDate a timestamp in epoch milliseconds. If undefined, all the message ids until the end of time will be returned.\n * @param descending whether to return the ids ordered in ascending or descending order by Message sent.\n * @return a promise that will resolve in an Array of Message ids.\n */\n async listMessageIdsByDataOwnerPatientSentDate(\n dataOwnerId: string,\n secretFKeys: string[],\n startDate?: number,\n endDate?: number,\n descending?: boolean\n ): Promise {\n const _url =\n this.host +\n `/message/byDataOwnerPatientSentDate?ts=${new Date().getTime()}` +\n '&dataOwnerId=' +\n encodeURIComponent(dataOwnerId) +\n (!!startDate ? `&startDate=${encodeURIComponent(startDate)}` : '') +\n (!!endDate ? `&endDate=${encodeURIComponent(endDate)}` : '') +\n (!!descending ? `&descending=${descending}` : '')\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n const body = new ListOfIds({ ids: secretFKeys })\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided to address\n * @param toAddress\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param reverse\n * @param hcpId\n */\n async findMessagesByToAddress(\n toAddress?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n reverse?: boolean,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byToAddress` +\n '?ts=' +\n new Date().getTime() +\n (toAddress ? '&toAddress=' + encodeURIComponent(String(toAddress)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (reverse ? '&reverse=' + encodeURIComponent(String(reverse)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided transportGuid\n * @param transportGuid\n * @param received\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n async findMessagesByTransportGuid(\n transportGuid?: string,\n received?: boolean,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byTransportGuid` +\n '?ts=' +\n new Date().getTime() +\n (transportGuid ? '&transportGuid=' + encodeURIComponent(String(transportGuid)) : '') +\n (received ? '&received=' + encodeURIComponent(String(received)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages starting by a prefix between two date\n * @param transportGuid\n * @param from\n * @param to\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n async findMessagesByTransportGuidSentDate(\n transportGuid?: string,\n from?: number,\n to?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byTransportGuidSentDate` +\n '?ts=' +\n new Date().getTime() +\n (transportGuid ? '&transportGuid=' + encodeURIComponent(String(transportGuid)) : '') +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param messageId\n */\n async getChildrenMessages(messageId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageId))}/children` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param body\n */\n async getChildrenMessagesOfList(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/children/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets a message\n * @param messageId\n */\n async getMessage(messageId: string): Promise {\n let _body = null\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets batch of messages by their ids.\n * @param messageIds the ids of the messages\n */\n async getMessages(messageIds: ListOfIds): Promise {\n const _url = this.host + `/message/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, messageIds, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param body\n */\n async listMessagesByInvoiceIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/byInvoice` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages for current HC Party and provided transportGuids\n * @param body\n * @param hcpId\n */\n async listMessagesByTransportGuids(hcpId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host + `/message/byTransportGuid/list` + '?ts=' + new Date().getTime() + (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a message\n * @param body\n */\n async modifyMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/message` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set read status for given list of messages\n * @param body\n */\n async setMessagesReadStatus(body?: MessagesReadStatusUpdate): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/readstatus` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set status bits for given list of messages\n * @param body\n * @param status\n */\n async setMessagesStatusBits(status: number, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/status/${encodeURIComponent(String(status))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareMessages(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/message/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Message)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of messages along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List messages for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Message document ID\n * @param limit Number of rows\n */\n async filterMessagesBy(body: FilterChainMessage, startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/message/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of messages matching the provided filter for the current user (HcParty)\n * @param body\n */\n async matchMessagesBy(body: AbstractFilterMessage): Promise> {\n const _url = this.host + `/message/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterPatient } from '../model/AbstractFilterPatient'\nimport { Content } from '../model/Content'\nimport { DataOwnerRegistrationSuccess } from '../model/DataOwnerRegistrationSuccess'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainPatient } from '../model/FilterChainPatient'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListPatient } from '../model/PaginatedListPatient'\nimport { PaginatedListString } from '../model/PaginatedListString'\nimport { Patient } from '../model/Patient'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccPatientApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns the id and _rev of created patients\n * @summary Create patients in bulk\n * @param body\n */\n async bulkCreatePatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified patients\n * @summary Modify patients in bulk\n * @param body\n */\n async bulkUpdatePatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/batch` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the count of patients\n * @summary Get count of patients for a specific HcParty or for the current HcParty\n * @param hcPartyId Healthcare party id\n */\n async countOfPatients(hcPartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/hcParty/${encodeURIComponent(String(hcPartyId))}/count` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Name, last name, date of birth, and gender are required. After creation of the patient and obtaining the ID, you need to create an initial delegation.\n * @summary Create a patient\n * @param body\n */\n async createPatient(body?: Patient): Promise {\n const _url = this.host + `/patient` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of patients.\n *\n * @param patientIds a ListOfIds containing the ids of the patients to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted patients.\n */\n async deletePatients(patientIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/patient/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n patientIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single patient by id.\n *\n * @param patientId the id of the patient to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted patient.\n */\n async deletePatient(patientId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/patient/${encodeURIComponent(patientId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter patients for the current user (HcParty)\n * @param body\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param skip Skip rows\n * @param sort Sort key\n * @param desc Descending\n */\n async filterPatientsBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: FilterChainPatient\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/patient/filter` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skip ? '&skip=' + encodeURIComponent(String(skip)) : '') +\n (sort ? '&sort=' + encodeURIComponent(String(sort)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Paginated List of Patients sorted by Access logs descending\n * @param userId A User ID\n * @param accessType The type of access (COMPUTER or USER)\n * @param startDate The start search epoch\n * @param startKey The start key for pagination\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async findByAccessLogUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/byAccess/${encodeURIComponent(String(userId))}` +\n '?ts=' +\n new Date().getTime() +\n (accessType ? '&accessType=' + encodeURIComponent(String(accessType)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the patient having the provided externalId\n * @param externalId A external ID\n */\n async findByExternalId(externalId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/byExternalId/${encodeURIComponent(String(externalId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Find patients for the current user (HcParty)\n * @param healthcarePartyId HealthcareParty Id. If not set, will use user's hcpId\n * @param filterValue Optional value for filtering results\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n async findByNameBirthSsinAuto(\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/byNameBirthSsinAuto` +\n '?ts=' +\n new Date().getTime() +\n (healthcarePartyId ? '&healthcarePartyId=' + encodeURIComponent(String(healthcarePartyId)) : '') +\n (filterValue ? '&filterValue=' + encodeURIComponent(String(filterValue)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Provides a paginated list of patients with duplicate name for an hecparty\n * @param hcPartyId Healthcare party id\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async findDuplicatesByName(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/duplicates/name` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Provides a paginated list of patients with duplicate ssin for an hecparty\n * @param hcPartyId Healthcare party id\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async findDuplicatesBySsin(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/duplicates/ssin` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients\n * @summary Filter patients for the current user (HcParty)\n * @param firstName The first name\n * @param lastName The last name\n * @param dateOfBirth The date of birth\n */\n async fuzzySearch(firstName?: string, lastName?: string, dateOfBirth?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/patient/fuzzy` +\n '?ts=' +\n new Date().getTime() +\n (firstName ? '&firstName=' + encodeURIComponent(String(firstName)) : '') +\n (lastName ? '&lastName=' + encodeURIComponent(String(lastName)) : '') +\n (dateOfBirth ? '&dateOfBirth=' + encodeURIComponent(String(dateOfBirth)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data.\n * @summary Get patient\n * @param patientId\n */\n async getPatient(patientId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param patientId\n */\n async getPatientAesExchangeKeysForDelegate(\n patientId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data based on the identifier (root & extension) parameters.\n * @summary Get patient by identifier\n * @param hcPartyId\n * @param id\n * @param system\n */\n async getPatientByHealthcarepartyAndIdentifier(hcPartyId: string, id: string, system?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/${encodeURIComponent(String(hcPartyId))}/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (system ? '&system=' + encodeURIComponent(String(system)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * This endpoint is used to recover all keys that have already been created and that can be used to share information with this patient. It returns a map with the following structure: ID of the owner of the encrypted AES key -> encrypted AES key. The returned encrypted AES keys will have to be decrypted using the patient's private key. { \\\"hcparty 1 delegator ID\\\": \\\"AES hcparty key (encrypted using patient public RSA key)\\\" \\\"hcparty 2 delegator ID\\\": \\\"other AES hcparty key (encrypted using patient public RSA key)\\\" }\n * @summary Get the patient (identified by patientId) hcparty keys. Those keys are AES keys (encrypted) used to share information between HCPs and a patient.\n * @param patientId The patient Id for which information is shared\n */\n async getPatientHcPartyKeysForDelegate(patientId: string): Promise<{ [key: string]: string }> {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}/keys` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data.\n * @summary Get patients by id\n * @param body\n */\n async getPatients(body?: ListOfIds): Promise> {\n const _url = this.host + `/patient/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of deleted patients, within the specified time period, if any.\n * @summary Find deleted patients\n * @param startDate Filter deletions after this date (unix epoch), included\n * @param endDate Filter deletions before this date (unix epoch), included\n * @param startKey the startKey provided by the previous page or undefined for the first page.\n * @param desc Descending\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async listDeletedPatients(\n startDate?: number,\n endDate?: number,\n desc?: boolean,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n const _url =\n this.host +\n `/patient/deleted/byDate` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(startDate) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(endDate) : '') +\n (desc ? '&desc=' + encodeURIComponent(desc) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(startKey) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(startDocumentId) : '') +\n (limit ? '&limit=' + encodeURIComponent(limit) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of deleted patients, by name and/or firstname prefix, if any.\n * @summary Find deleted patients\n * @param firstName First name prefix\n * @param lastName Last name prefix\n */\n async listDeletedPatientsByName(firstName?: string, lastName?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/patient/deleted/by_name` +\n '?ts=' +\n new Date().getTime() +\n (firstName ? '&firstName=' + encodeURIComponent(String(firstName)) : '') +\n (lastName ? '&lastName=' + encodeURIComponent(String(lastName)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients that have been merged after the provided date\n * @summary List patients that have been merged towards another patient\n * @param date\n */\n async listOfMergesAfter(date: number): Promise> {\n let _body = null\n\n const _url = this.host + `/patient/merges/${encodeURIComponent(String(date))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients that have been modified after the provided date\n * @summary List patients that have been modified after the provided date\n * @param date\n * @param startKey The start key for pagination the date of the first element of the new page\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n async listOfPatientsModifiedAfter(date: number, startKey?: number, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/modifiedAfter/${encodeURIComponent(String(date))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients for a specific HcParty\n * @param hcPartyId Healthcare party id\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n async listPatients(\n hcPartyId?: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients for a specific HcParty or for the current HcParty\n * @param hcPartyId\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n async listPatientsByHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/hcParty/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients by pages for a specific HcParty\n * @param hcPartyId Healthcare party id\n * @param startKey The page first id\n * @param startDocumentId A patient document ID\n * @param limit Page size\n */\n async listPatientsIds(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/byHcPartyId` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListString(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients of a specific HcParty or of the current HcParty\n * @param hcPartyId\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n async listPatientsOfHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/ofHcParty/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of patients matching the provided filter for the current user (HcParty)\n * @param body\n */\n async matchPatientsBy(body?: AbstractFilterPatient): Promise> {\n const _url = this.host + `/patient/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Merge a series of patients into another patient\n * @param toId\n * @param fromIds\n */\n async mergeInto(toId: string, fromIds: string): Promise {\n let _body = null\n\n const _url =\n this.host + `/patient/mergeInto/${encodeURIComponent(String(toId))}/from/${encodeURIComponent(String(fromIds))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a patient\n * @param body\n */\n async modifyPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set a patient referral doctor\n * @param patientId\n * @param referralId The referal id. Accepts 'none' for referral removal.\n * @param start Optional value for start of referral\n * @param end Optional value for end of referral\n */\n async modifyPatientReferral(patientId: string, referralId: string, start?: number, end?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/${encodeURIComponent(String(patientId))}/referral/${encodeURIComponent(String(referralId))}` +\n '?ts=' +\n new Date().getTime() +\n (start ? '&start=' + encodeURIComponent(String(start)) : '') +\n (end ? '&end=' + encodeURIComponent(String(end)) : '')\n let headers = await this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Register a new patient into the system\n * @summary Register a patient\n * @param body\n * @param hcPartyId\n * @param groupId\n * @param token\n * @param useShortToken\n */\n async registerPatient(\n hcPartyId: string,\n groupId: string,\n token?: string,\n useShortToken?: boolean,\n body?: Patient\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/patient/register/forHcp/${encodeURIComponent(String(hcPartyId))}/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (token ? '&token=' + encodeURIComponent(String(token)) : '') +\n (useShortToken ? '&useShortToken=' + encodeURIComponent(String(useShortToken)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DataOwnerRegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is an array containing the ID of undeleted patient..\n * @summary undelete previously deleted patients\n * @param patientIds\n */\n async undeletePatient(patientIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/patient/undelete/${encodeURIComponent(String(patientIds))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkSharePatients(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/patient/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Patient)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal use mergePatients from the extended api instead\n */\n async baseMergePatients(fromId: string, expectedFromRev: string, updatedInto: Patient) {\n let _body = updatedInto\n\n const _url =\n this.host +\n `/patient/mergeInto/${encodeURIComponent(String(updatedInto.id))}/from/${encodeURIComponent(String(fromId))}` +\n '?ts=' +\n new Date().getTime() +\n '&expectedFromRev=' +\n encodeURIComponent(String(expectedFromRev))\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Permission } from '../model/Permission'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPermissionApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Add a list of granted and revoked permissions to user.\n * @summary Add / Revoke permissions to user\n * @param body\n * @param userId\n */\n async modifyUserPermissions(userId: string, body?: Permission): Promise> {\n const _url = this.host + `/permissions/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Permission(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Place } from '../model/Place'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListPlace } from '../model/PaginatedListPlace'\n\nexport class IccPlaceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a place\n * @param body\n */\n async createPlace(body?: Place): Promise {\n const _url = this.host + `/place` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of places.\n *\n * @param placeIds a ListOfIds containing the ids of the places to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted places.\n */\n async deletePlaces(placeIds: ListOfIds): Promise> {\n return XHR.sendCommand(\n 'POST',\n this.host + `/place/delete/batch` + '?ts=' + new Date().getTime(),\n this.headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json')),\n placeIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a place\n * @param placeId\n */\n async getPlace(placeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/place/${encodeURIComponent(String(placeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use {@link getPlacesWithPagination} instead.\n * @summary Gets all places\n */\n async getPlaces(): Promise> {\n const _url = this.host + `/place?ts=${new Date().getTime()}&limit=1000000`\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPlace(doc.body as JSON).rows ?? [])\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Gets all places with pagination.\n * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.\n * @param limit the number of elements that the page should contain.\n * @return a promise that will resolve in a PaginatedListPlace.\n */\n async getPlacesWithPagination(startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/place?ts=${new Date().getTime()}` +\n (!!startDocumentId ? `&startDocumentId=${encodeURIComponent(startDocumentId)}` : '') +\n (!!limit ? `&limit=${limit}` : '')\n const headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPlace(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an place\n * @param body\n */\n async modifyPlace(body?: Place): Promise {\n const _url = this.host + `/place` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPubsubApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Offer auth data on previously agreed on secret bucket, data should be encrypted\n * @summary Offer auth data on secret bucket\n * @param body\n * @param bucket\n */\n offerAuth(bucket: string, body?: ArrayBuffer): Promise<{ [key: string]: boolean }> {\n let _body = null\n _body = body\n\n const _url = this.host + `/pubsub/auth/${encodeURIComponent(String(bucket))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Publish value with key\n * @summary publish data\n * @param body\n * @param key\n */\n pub(key: string, body?: ArrayBuffer): Promise<{ [key: string]: boolean }> {\n let _body = null\n _body = body\n\n const _url = this.host + `/pubsub/pub/${encodeURIComponent(String(key))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Recover auth data from bucket, data should be encrypted\n * @summary Recover auth data from secret bucket\n * @param bucket\n */\n recoverAuth(bucket: string): Promise {\n let _body = null\n\n const _url = this.host + `/pubsub/auth/recover/${encodeURIComponent(String(bucket))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Try to get published data\n * @summary subscribe to data\n * @param key\n */\n sub(key: string): Promise {\n let _body = null\n\n const _url = this.host + `/pubsub/sub/${encodeURIComponent(String(key))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Receipt } from '../model/Receipt'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccReceiptApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a receipt\n * @param body\n */\n async createReceipt(body?: Receipt): Promise {\n const _url = this.host + `/receipt` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of receipts.\n *\n * @param receiptIds a ListOfIds containing the ids of the receipts to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted receipts.\n */\n async deleteReceipts(receiptIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/receipt/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n receiptIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single receipt by id.\n *\n * @param receiptId the id of the receipt to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted receipt.\n */\n async deleteReceipt(receiptId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/receipt/${encodeURIComponent(receiptId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a receipt\n * @param receiptId\n */\n async getReceipt(receiptId: string): Promise {\n let _body = null\n\n const _url = this.host + `/receipt/${encodeURIComponent(String(receiptId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get an attachment\n * @param receiptId\n * @param attachmentId\n * @param enckeys\n */\n async getReceiptAttachment(receiptId: string, attachmentId: string, enckeys?: null): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption is not supported anymore.')\n }\n let _body = null\n\n const _url =\n this.host +\n `/receipt/${encodeURIComponent(String(receiptId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a receipt\n * @param ref\n */\n async listByReference(ref: string): Promise> {\n let _body = null\n\n const _url = this.host + `/receipt/byRef/${encodeURIComponent(String(ref))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Receipt(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a receipt\n * @param body\n */\n async modifyReceipt(body?: Receipt): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/receipt` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @deprecated use setReceiptAttachmentForBlobType instead\n */\n async setReceiptAttachment(receiptId: string, receiptRev: string, blobType: string, enckeys?: null, body?: ArrayBuffer): Promise {\n if (enckeys) {\n throw new Error('Server-side encryption is not supported anymore.')\n }\n if (!body) {\n throw new Error('Attachment content is requred')\n }\n return this.setReceiptAttachmentForBlobType(receiptId, receiptRev, blobType, body)\n }\n\n /**\n * @summary Creates a receipt's attachment\n * @param receiptId id of a receipt\n * @param receiptRev rev of the receipt\n * @param blobType receipt blob type\n * @param body content of the attachment, already encrypted\n */\n async setReceiptAttachmentForBlobType(receiptId: string, receiptRev: string, blobType: string, body: ArrayBuffer): Promise {\n if (!receiptRev) throw new Error('Receipt rev is required')\n\n let _body = body\n\n const _url =\n this.host +\n `/receipt/${encodeURIComponent(String(receiptId))}/attachment/${encodeURIComponent(String(blobType))}` +\n '?ts=' +\n new Date().getTime() +\n '&rev=' +\n receiptRev\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareReceipt(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/receipt/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Receipt)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ReplicateCommand } from '../model/ReplicateCommand'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { ReplicatorResponse } from '../model/ReplicatorResponse'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccReplicationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Create a document to start a continuous replication\n * @summary Create continuous replication document\n * @param body\n */\n createContinuousReplicationDoc(body?: ReplicateCommand): Promise {\n const _url = this.host + `/replication/continuous` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a document to start a one time replication\n * @summary Create one time replication document\n * @param body\n */\n createOneTimeReplicationDoc(body?: ReplicateCommand): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/replication/onetime` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * DocId is the id provided by a replicator document from replication/docs\n * @summary Delete replication document to stop it\n * @param docId\n */\n deleteReplicationDoc(docId: string): Promise {\n let _body = null\n\n const _url = this.host + `/replication/stop/${encodeURIComponent(String(docId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get all replication infos and states\n * @summary Get replication documents\n */\n getReplicationDocs(): Promise> {\n let _body = null\n\n const _url = this.host + `/replication/docs` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ReplicatorDocument(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","export function iccRestApiPath(host: string): string {\n if (host.includes('rest/v')) throw new Error('Host should not include api path')\n return host + '/rest/v2'\n}\n","import { XHR } from './XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { Role } from '../model/Role'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccRoleApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Gets all roles\n */\n async getRoles(): Promise> {\n const _url = this.host + `/role` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Role(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListTarification } from '../model/PaginatedListTarification'\nimport { Tarification } from '../model/Tarification'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccTarificationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Type, Tarification and Version are required.\n * @summary Create a Tarification\n * @param body\n */\n async createTarification(body?: Tarification): Promise {\n const _url = this.host + `/tarification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version with pagination.\n * @param region\n * @param type\n * @param tarification\n * @param version\n * @param startDocumentId A tarification document ID\n * @param startKey\n * @param limit Number of rows\n */\n findPaginatedTarifications(\n region?: string,\n type?: string,\n tarification?: string,\n version?: string,\n startDocumentId?: string,\n startKey?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (tarification ? '&tarification=' + encodeURIComponent(String(tarification)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListTarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version with pagination.\n * @param region\n * @param types\n * @param language\n * @param label\n * @param startKey\n * @param startDocumentId A tarification document ID\n * @param limit Number of rows\n */\n findPaginatedTarificationsByLabel(\n region?: string,\n types?: string,\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/byLabel` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (types ? '&types=' + encodeURIComponent(String(types)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListTarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version\n * @param region Tarification region\n * @param type Tarification type\n * @param tarification Tarification tarification\n * @param version Tarification version\n */\n findTarifications(region?: string, type?: string, tarification?: string, version?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/byRegionTypeTarification` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (tarification ? '&tarification=' + encodeURIComponent(String(tarification)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Tarification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a tarification based on ID or (tarification,type,version) as query strings. (tarification,type,version) is unique.\n * @summary Get a tarification\n * @param tarificationId Tarification id\n */\n getTarification(tarificationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/tarification/${encodeURIComponent(String(tarificationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a tarification based on ID or (tarification,type,version) as query strings. (tarification,type,version) is unique.\n * @summary Get a tarification\n * @param type Tarification type\n * @param tarification Tarification tarification\n * @param version Tarification version\n */\n getTarificationWithParts(type: string, tarification: string, version: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/${encodeURIComponent(String(type))}/${encodeURIComponent(String(tarification))}/${encodeURIComponent(String(version))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of tarifications by ids\n * @param body\n */\n getTarifications(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tarification/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Tarification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, tarification, version) is not allowed.\n * @summary Modify a tarification\n * @param body\n */\n modifyTarification(body?: Tarification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tarification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { TimeTable } from '../model/TimeTable'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccTimeTableApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a timeTable\n * @param body\n */\n async createTimeTable(body?: TimeTable): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/timeTable` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a batch of timeTables.\n *\n * @param timeTableIds a ListOfIds containing the ids of the timeTables to delete.\n * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted timeTables.\n */\n async deleteTimeTables(timeTableIds: ListOfIds): Promise> {\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand(\n 'POST',\n this.host + `/timeTable/delete/batch` + '?ts=' + new Date().getTime(),\n headers,\n timeTableIds,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a single timeTable by id.\n *\n * @param timeTableId the id of the timeTable to delete.\n * @return a Promise that will resolve in the DocIdentifier of the deleted timeTable.\n */\n async deleteTimeTable(timeTableId: string): Promise {\n return XHR.sendCommand(\n 'DELETE',\n this.host + `/timeTable/${encodeURIComponent(timeTableId)}` + '?ts=' + new Date().getTime(),\n await this.headers,\n null,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a timeTable\n * @param timeTableId\n */\n async getTimeTable(timeTableId: string): Promise {\n let _body = null\n\n const _url = this.host + `/timeTable/${encodeURIComponent(String(timeTableId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get TimeTables by AgendaId\n * @param agendaId\n */\n async getTimeTablesByAgendaId(agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/timeTable/byAgendaId` + '?ts=' + new Date().getTime() + (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TimeTable(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get TimeTables by Period and AgendaId\n * @param startDate\n * @param endDate\n * @param agendaId\n */\n async getTimeTablesByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/timeTable/byPeriodAndAgendaId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = await this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TimeTable(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an timeTable\n * @param body\n */\n async modifyTimeTable(body?: TimeTable): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/timeTable` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareTimeTable(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/timeTable/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, TimeTable)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Classification } from '../model/Classification'\nimport { Contact } from '../model/Contact'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Document } from '../model/Document'\nimport { EntityTemplate } from '../model/EntityTemplate'\nimport { Form } from '../model/Form'\nimport { HealthElement } from '../model/HealthElement'\nimport { Invoice } from '../model/Invoice'\nimport { Message } from '../model/Message'\nimport { PaginatedListClassification } from '../model/PaginatedListClassification'\nimport { PaginatedListDocument } from '../model/PaginatedListDocument'\nimport { PaginatedListEntityTemplate } from '../model/PaginatedListEntityTemplate'\nimport { PaginatedListForm } from '../model/PaginatedListForm'\nimport { PaginatedListHealthElement } from '../model/PaginatedListHealthElement'\nimport { PaginatedListInvoice } from '../model/PaginatedListInvoice'\nimport { PaginatedListPatient } from '../model/PaginatedListPatient'\nimport { Patient } from '../model/Patient'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccTmpApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Create a classification with the current user\n * @param body\n */\n createTmpClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Create a classification with the current user\n * @param body\n */\n createTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Create a contact with the current user\n * @param body\n */\n createTmpContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Create a contact with the current user\n * @param body\n */\n createTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Nothing happens if the database already exists\n * @summary Create tmp database for current user\n */\n createTmpDatabase(): Promise {\n let _body = null\n\n const _url = this.host + `/tmp` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Create a document with the current user\n * @param body\n */\n createTmpDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Create a document with the current user\n * @param body\n */\n createTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Create a entityTemplate with the current user\n * @param body\n */\n createTmpEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Create a entityTemplate with the current user\n * @param body\n */\n createTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n createTmpForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n createTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Create a healthElement with the current user\n * @param body\n */\n createTmpHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Create a healthElement with the current user\n * @param body\n */\n createTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Create a invoice with the current user\n * @param body\n */\n createTmpInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Create a invoice with the current user\n * @param body\n */\n createTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Create a message with the current user\n * @param body\n */\n createTmpMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Create a message with the current user\n * @param body\n */\n createTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Create a patient with the current user\n * @param body\n */\n createTmpPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Create a patient with the current user\n * @param body\n */\n createTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId\n */\n deleteTmpDocumentAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted items.\n * @summary Soft delete items.\n * @param body\n */\n deleteTmpItems(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/batch/delete` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Nothing happens if the database does not exists\n * @summary Destroy tmp database for current user\n */\n destroyTmpDatabase(): Promise {\n let _body = null\n\n const _url = this.host + `/tmp` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of classification.\n * @summary Get a classification by id\n * @param id\n */\n getTmpClassification(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/classification/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Get classifications by ids with the current user\n * @param body\n */\n getTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of contact.\n * @summary Get a contact by id\n * @param id\n */\n getTmpContact(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/contact/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Get contacts by ids with the current user\n * @param body\n */\n getTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of document.\n * @summary Get a document by id\n * @param id\n */\n getTmpDocument(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/document/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param documentId\n * @param attachmentId\n * @param enckeys\n * @param fileName\n */\n getTmpDocumentAttachment(documentId: string, attachmentId: string, enckeys?: string, fileName?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/document/${encodeURIComponent(String(documentId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '') +\n (fileName ? '&fileName=' + encodeURIComponent(String(fileName)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => true)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Get documents by ids with the current user\n * @param body\n */\n getTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of entityTemplate.\n * @summary Get a entityTemplate by id\n * @param id\n */\n getTmpEntityTemplate(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/entityTemplate/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Get entityTemplates by ids with the current user\n * @param body\n */\n getTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of form.\n * @summary Get a form by id\n * @param id\n */\n getTmpForm(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/form/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Get forms by ids with the current user\n * @param body\n */\n getTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of healthElement.\n * @summary Get a healthElement by id\n * @param id\n */\n getTmpHealthElement(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/healthElement/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Get healthElements by ids with the current user\n * @param body\n */\n getTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of invoice.\n * @summary Get a invoice by id\n * @param id\n */\n getTmpInvoice(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/invoice/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Get invoices by ids with the current user\n * @param body\n */\n getTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of message.\n * @summary Get a message by id\n * @param id\n */\n getTmpMessage(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/message/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Get messages by ids with the current user\n * @param body\n */\n getTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of patient.\n * @summary Get a patient by id\n * @param id\n */\n getTmpPatient(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/patient/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Get patients by ids with the current user\n * @param body\n */\n getTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated classifications.\n * @summary List classifications with the current user\n * @param firstClassificationId\n * @param pageSize\n */\n listTmpClassifications(firstClassificationId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/classification/list` +\n '?ts=' +\n new Date().getTime() +\n (firstClassificationId ? '&firstClassificationId=' + encodeURIComponent(String(firstClassificationId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListClassification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated contacts.\n * @summary List contacts with the current user\n * @param firstContactId\n * @param pageSize\n */\n listTmpContacts(firstContactId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/contact/list` +\n '?ts=' +\n new Date().getTime() +\n (firstContactId ? '&firstContactId=' + encodeURIComponent(String(firstContactId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated documents.\n * @summary List documents with the current user\n * @param firstDocumentId\n * @param pageSize\n */\n listTmpDocuments(firstDocumentId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/document/list` +\n '?ts=' +\n new Date().getTime() +\n (firstDocumentId ? '&firstDocumentId=' + encodeURIComponent(String(firstDocumentId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated entityTemplates.\n * @summary List entityTemplates with the current user\n * @param firstEntityTemplateId\n * @param pageSize\n */\n listTmpEntityTemplates(firstEntityTemplateId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/entityTemplate/list` +\n '?ts=' +\n new Date().getTime() +\n (firstEntityTemplateId ? '&firstEntityTemplateId=' + encodeURIComponent(String(firstEntityTemplateId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListEntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated forms.\n * @summary List forms with the current user\n * @param firstFormId\n * @param pageSize\n */\n listTmpForms(firstFormId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/form/list` +\n '?ts=' +\n new Date().getTime() +\n (firstFormId ? '&firstFormId=' + encodeURIComponent(String(firstFormId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListForm(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated healthElements.\n * @summary List healthElements with the current user\n * @param firstHealthElementId\n * @param pageSize\n */\n listTmpHealthElements(firstHealthElementId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/healthElement/list` +\n '?ts=' +\n new Date().getTime() +\n (firstHealthElementId ? '&firstHealthElementId=' + encodeURIComponent(String(firstHealthElementId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated invoices.\n * @summary List invoices with the current user\n * @param firstInvoiceId\n * @param pageSize\n */\n listTmpInvoices(firstInvoiceId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/invoice/list` +\n '?ts=' +\n new Date().getTime() +\n (firstInvoiceId ? '&firstInvoiceId=' + encodeURIComponent(String(firstInvoiceId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated messages.\n * @summary List messages with the current user\n * @param firstMessageId\n * @param pageSize\n */\n listTmpMessages(firstMessageId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/message/list` +\n '?ts=' +\n new Date().getTime() +\n (firstMessageId ? '&firstMessageId=' + encodeURIComponent(String(firstMessageId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated patients.\n * @summary List patients with the current user\n * @param firstPatientId\n * @param pageSize\n */\n listTmpPatients(firstPatientId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/patient/list` +\n '?ts=' +\n new Date().getTime() +\n (firstPatientId ? '&firstPatientId=' + encodeURIComponent(String(firstPatientId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification.\n * @summary Modify a classification\n * @param body\n */\n modifyTmpClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contact.\n * @summary Modify a contact\n * @param body\n */\n modifyTmpContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified document.\n * @summary Modify a document\n * @param body\n */\n modifyTmpDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplate.\n * @summary Modify a entityTemplate\n * @param body\n */\n modifyTmpEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified form.\n * @summary Modify a form\n * @param body\n */\n modifyTmpForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthElement.\n * @summary Modify a healthElement\n * @param body\n */\n modifyTmpHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified invoice.\n * @summary Modify a invoice\n * @param body\n */\n modifyTmpInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified message.\n * @summary Modify a message\n * @param body\n */\n modifyTmpMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified patient.\n * @summary Modify a patient\n * @param body\n */\n modifyTmpPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted items.\n * @summary Hard delete items.\n * @param body\n */\n purgeTmpItems(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/batch/purge` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param body\n * @param from\n */\n replicateToTmpDatabase(from: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/replicate/from/${encodeURIComponent(String(from))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a document's attachment and returns the modified document instance afterward\n * @summary Create a document's attachment\n * @param body\n * @param documentId\n * @param enckeys\n */\n setTmpDocumentAttachment(documentId: string, enckeys?: string, body?: Object): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/tmp/document/${encodeURIComponent(String(documentId))}/attachment` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Topic, TopicRole } from '../model/Topic'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { EntityShareOrMetadataUpdateRequest } from '../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult'\nimport { FilterChainTopic } from '../model/FilterChainTopic'\nimport { PaginatedListTopic } from '../model/PaginatedListTopic'\nimport { AbstractFilterTopic } from '../model/AbstractFilterTopic'\nimport { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams'\n\nexport class IccTopicApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Gets a topic\n * @param topicId\n */\n async getTopic(topicId: string): Promise {\n const _body = null\n\n const _url = this.host + `/topic/${encodeURIComponent(String(topicId))}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Topic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of topics by ids\n * @param body\n */\n async getTopics(body: ListOfIds): Promise> {\n const _url = this.host + `/topic/byIds` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Topic(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created topic.\n * @summary Create a topic with the current user\n * @param body\n */\n async createTopic(body: Topic): Promise {\n const _url = this.host + `/topic` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Topic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified topic.\n * @summary Modify a topic\n * @param body\n */\n async modifyTopic(body: Topic): Promise {\n const _url = this.host + `/topic` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Topic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Deletes a topic by id.\n *\n * @param topicId the id of the topic to delete\n * @return a Promise that will resolve in the DocIdentifier of the deleted topic.\n */\n async deleteTopic(topicId: string): Promise {\n const _url = this.host + `/topic/${encodeURIComponent(topicId)}` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n return XHR.sendCommand('DELETE', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted topics.\n * @summary Delete topics.\n * @param body\n */\n async deleteTopics(body: ListOfIds): Promise> {\n const _url = this.host + `/topic/delete/batch` + '?ts=' + new Date().getTime()\n const headers = (await this.headers).filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n */\n async bulkShareTopics(request: BulkShareOrUpdateMetadataParams): Promise[]> {\n const _url = this.host + '/topic/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, Topic)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of topics along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List topics for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Topic document ID\n * @param limit Number of rows\n */\n async filterTopicsBy(body: FilterChainTopic, startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/topic/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListTopic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of topics matching the provided filter for the current user (HcParty)\n * @param body\n */\n async matchTopicsBy(body: AbstractFilterTopic): Promise> {\n const _url = this.host + `/topic/match` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n async addParticipant(body: { dataOwnerId: string; topicRole: TopicRole }, topicId: string): Promise {\n const _url = this.host + `/topic/${topicId}/addParticipant` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Topic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async removeParticipant(body: { dataOwnerId: string }, topicId: string): Promise {\n const _url = this.host + `/topic/${topicId}/removeParticipant` + '?ts=' + new Date().getTime()\n let headers = await this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Topic(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterUser } from '../model/AbstractFilterUser'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainUser } from '../model/FilterChainUser'\nimport { PaginatedListUser } from '../model/PaginatedListUser'\nimport { PropertyStub } from '../model/PropertyStub'\nimport { TokenWithGroup } from '../model/TokenWithGroup'\nimport { Unit } from '../model/Unit'\nimport { User } from '../model/User'\nimport { UserGroup } from '../model/UserGroup'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\nimport { ListOfIds } from '../model/ListOfIds'\n\nexport class IccUserApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * UserDto gets returned.\n * @summary Assign a healthcare party ID to current user\n * @param healthcarePartyId\n */\n assignHealthcareParty(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/current/hcparty/${encodeURIComponent(String(healthcarePartyId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check token validity\n * @param userId\n * @param token\n */\n checkTokenValidity(userId: string, token: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/token/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a user. HealthcareParty ID should be set. Email or Login have to be set. If login hasn't been set, Email will be used for Login instead.\n * @summary Create a user\n * @param body\n */\n createUser(body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a user. HealthcareParty ID should be set. Email has to be set and the Login has to be null. On server-side, Email will be used for Login.\n * @summary Create a user\n * @param body\n * @param groupId\n */\n createUserInGroup(groupId: string, body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Creates a new admin user in the group of the current user.\n * @param body the user to create.\n * @return a promise that will resolve to the created user.\n */\n createAdminUser(body?: User): Promise {\n const _url = this.host + `/user/admin` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Creates a new admin user in a group of the current user.\n * @param body the user to create.\n * @param groupId the id of the group where to create the user.\n * @return a promise that will resolve to the created user.\n */\n createAdminUserInGroup(groupId: string, body?: User): Promise {\n const _url = this.host + `/user/admin/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete a User based on his/her ID. The return value is an array containing the ID of deleted user.\n * @summary Delete a User based on his/her ID.\n * @param userId\n */\n deleteUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete a User based on his/her ID. The return value is an array containing the ID of deleted user.\n * @summary Delete a User based on his/her ID.\n * @param groupId\n * @param userId\n */\n deleteUserInGroup(groupId: string, userId: string): Promise {\n let _body = null\n\n const _url =\n this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param password\n */\n encodePassword(password: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/encodePassword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter users for the current user (HcParty)\n * @param body\n * @param startDocumentId A User document ID\n * @param limit Number of rows\n */\n filterUsersBy(startDocumentId?: string, limit?: number, body?: FilterChainUser): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/user/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter users for the current user (HcParty) for a provided groupId\n * @param body\n * @param groupId\n * @param startDocumentId A User document ID\n * @param limit Number of rows\n */\n filterUsersInGroupBy(groupId: string, startDocumentId?: string, limit?: number, body?: FilterChainUser): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/user/filter/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of users by healthcare party id\n * @param id\n */\n findByHcpartyId(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/user/byHealthcarePartyId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of users by patient id\n * @param id\n */\n findByPatientId(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/user/byPatientId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get current user.\n * @summary Get presently logged-in user.\n */\n getCurrentUser(): Promise {\n let _body = null\n\n const _url = this.host + `/user/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get current user.\n * @summary Get presently logged-in user.\n */\n getMatchingUsers(): Promise> {\n let _body = null\n\n const _url = this.host + `/user/matches` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new UserGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Request a new temporary token for authentication\n * @param userId\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param tokenValidity The token validity in seconds\n * @param token\n */\n getToken(userId: string, key: string, tokenValidity?: number, token?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/token/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Require a new temporary token for authentication inside all groups\n * @param userIdentifier\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param token\n * @param tokenValidity The token validity in seconds\n */\n getTokenInAllGroups(userIdentifier: string, key: string, token?: string, tokenValidity?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/user/inAllGroups/token/${encodeURIComponent(String(userIdentifier))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TokenWithGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Require a new temporary token for authentication inside provided group\n * @param groupId\n * @param userId\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param token\n * @param tokenValidity The token validity in seconds\n */\n getTokenInGroup(groupId: string, userId: string, key: string, token?: string, tokenValidity?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/inGroup/${encodeURIComponent(String(groupId))}/token/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the user\n * @summary Get a user by his ID\n * @param userId\n */\n getUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Sets the roles of a user to the ones passed as parameter.\n *\n * @param userId the Id of the user to update.\n * @param roleIds the ids of the roles to add to the user.\n */\n setRoles(userId: string, roleIds: string[]): Promise {\n const _body = new ListOfIds({ ids: roleIds })\n\n const _url = this.host + `/user/${encodeURIComponent(userId)}/roles/set?ts=${new Date().getTime()}'`\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Sets the roles of a user in a group to the ones passed as parameter.\n *\n * @param userId the Id of the user to update.\n * @param groupId the Id of the group the user belongs to.\n * @param roleIds the ids of the roles to add to the user.\n */\n setRolesInGroup(userId: string, groupId: string, roleIds: string[]): Promise {\n const _body = new ListOfIds({ ids: roleIds })\n\n const _url = this.host + `/user/${encodeURIComponent(userId)}/inGroup/${encodeURIComponent(groupId)}/roles/set?ts=${new Date().getTime()}'`\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Reset the roles of a user to the default ones for their type.\n *\n * @param userId the Id of the user to update.\n */\n resetRoles(userId: string): Promise {\n const _url = this.host + `/user/${encodeURIComponent(userId)}/roles/reset?ts=${new Date().getTime()}'`\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Reset the roles of a user in a group to the default ones for their type.\n *\n * @param userId the Id of the user to update.\n * @param groupId the Id of the group the user belongs to.\n */\n resetRolesInGroup(userId: string, groupId: string): Promise {\n const _url = this.host + `/user/${encodeURIComponent(userId)}/inGroup/${encodeURIComponent(groupId)}/roles/reset?ts=${new Date().getTime()}'`\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the user\n * @summary Get a user by his Email/Login\n * @param email\n */\n getUserByEmail(email: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/byEmail/${encodeURIComponent(String(email))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @summary Get a user by his phone number.\n * @param phoneNumber\n * @return a promise that resolves to the specified user.\n */\n getUserByPhoneNumber(phoneNumber: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/byPhoneNumber/${encodeURIComponent(String(phoneNumber))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users.\n * @summary List users with(out) pagination\n * @param startKey An user email\n * @param startDocumentId An user document ID\n * @param limit Number of rows\n * @param skipPatients Filter out patient users\n */\n listUsers(startKey?: string, startDocumentId?: string, limit?: number, skipPatients?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skipPatients !== undefined ? '&skipPatients=' + encodeURIComponent(String(skipPatients)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users.\n * @summary List users with pagination\n * @param groupId\n * @param startKey An user login\n * @param startDocumentId An user document ID\n * @param limit Number of rows\n */\n listUsersInGroup(groupId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of healthcare party matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchUsersBy(body?: AbstractFilterUser): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modify a User properties based on his/her ID. The return value is the modified user.\n * @summary Modify a User property\n * @param body\n * @param userId\n */\n modifyProperties(userId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}/properties` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a user.\n * @param body\n */\n modifyUser(body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a user.\n * @param body\n * @param groupId\n */\n modifyUserInGroup(groupId: string, body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n enable2fa(userId: string, secret: string): Promise {\n let _body = { secret }\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}/2fa` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then(() => {})\n .catch((err) => this.handleError(err))\n }\n\n disable2fa(userId: string): Promise {\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}/2fa` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('DELETE', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then(() => {})\n .catch((err) => this.handleError(err))\n }\n}\n","import { ua2b64 } from '../model/ModelHelper'\nimport { NoAuthService } from '../../icc-x-api/auth/NoAuthService'\nimport { AuthService } from '../../icc-x-api/auth/AuthService'\n\nexport namespace XHR {\n export class Header {\n header: string\n data: string\n\n constructor(header: string, data: string) {\n this.header = header\n this.data = data\n }\n }\n\n export class Data {\n statusCode: number\n contentType: string\n body: JSON | Array | any //stream bytes|json|array\n\n constructor(status: number, contentType: string, body: JSON | Array | any) {\n this.statusCode = status\n this.contentType = contentType\n this.body = body\n }\n }\n\n export class XHRError extends Error {\n statusCode: number\n errorCode: string\n headers: Headers\n message: string\n url: string\n\n constructor(url: string, message: string, status: number, errorCode: string, headers: Headers) {\n super(message)\n this.url = url\n this.statusCode = status\n this.message = message\n this.errorCode = errorCode\n this.headers = headers\n }\n }\n\n function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeout = 10000,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ): Promise {\n return new Promise((resolve, reject) => {\n // Set timeout timer\n let timer = setTimeout(() => reject({ message: 'Request timed out', status: 'Request timed out' }), timeout)\n fetchImpl(url, init)\n .then((response) => {\n clearTimeout(timer)\n resolve(response)\n })\n .catch((err) => {\n clearTimeout(timer)\n reject(err)\n })\n })\n }\n\n export async function sendCommand(\n method: string,\n url: string,\n headers: Array
| null,\n data: string | any = '',\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n contentTypeOverride?: 'application/json' | 'text/plain' | 'application/octet-stream',\n headerProvider: AuthService = new NoAuthService(),\n minimumAuthenticationClass: number | undefined = undefined\n ): Promise {\n const authHeaders = await headerProvider.getAuthHeaders(minimumAuthenticationClass)\n const contentType = headers && headers.find((it) => (it.header ? it.header.toLowerCase() === 'content-type' : false))\n const clientTimeout = headers && headers.find((it) => (it.header ? it.header.toUpperCase() === 'X-CLIENT-SIDE-TIMEOUT' : false))\n const timeout = clientTimeout ? Number(clientTimeout.data) : 600000\n return fetchWithTimeout(\n url,\n Object.assign(\n {\n method: method,\n credentials: 'include' as RequestCredentials,\n headers: (headers ?? [])\n .concat(authHeaders)\n .filter(\n (h) =>\n (h.header?.toLowerCase() !== 'content-type' || h.data !== 'multipart/form-data') &&\n h.header?.toUpperCase() !== 'X-CLIENT-SIDE-TIMEOUT' &&\n h.header?.toLowerCase() !== 'force-authentication'\n )\n .reduce(\n (acc: { [key: string]: string }, h) => {\n acc[h.header] = h.data\n return acc\n },\n { 'X-Requested-With': 'XMLHttpRequest' }\n ),\n },\n method === 'POST' || method === 'PUT'\n ? {\n body:\n !contentType || contentType.data === 'application/json'\n ? JSON.stringify(data, (k, v) => {\n return v instanceof ArrayBuffer || v instanceof Uint8Array ? ua2b64(v) : v\n })\n : data,\n }\n : {}\n ),\n timeout,\n fetchImpl\n ).then(async function (response) {\n if (response.status === 401) {\n headerProvider.invalidateHeader(new XHRError(url, await response.text(), response.status, response.statusText, response.headers))\n const requiredAuthLevelHeader = response.headers.get('Icure-Minimum-Required-Auth-Level')\n return sendCommand(\n method,\n url,\n headers,\n data,\n fetchImpl,\n contentTypeOverride,\n headerProvider,\n requiredAuthLevelHeader ? parseInt(requiredAuthLevelHeader) : undefined\n )\n } else if (response.status >= 400) {\n const error: {\n error: string\n message: string\n status: number\n } = { error: response.statusText, message: await response.text(), status: response.status }\n console.warn(`XHR Error: ${method} ${url} - ${error.status} - ${error.error}`, error.message)\n throw new XHRError(url, error.message, error.status, error.error, response.headers)\n } else {\n const ct = contentTypeOverride || response.headers.get('content-type') || 'text/plain'\n return (\n ct.startsWith('application/json')\n ? response.json()\n : ct.startsWith('application/xml') || ct.startsWith('text/')\n ? response.text()\n : response.arrayBuffer()\n ).then((d) => new Data(response.status, ct, d))\n }\n })\n }\n}\n","import { XHR } from '../XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../../icc-x-api'\nimport { ExchangeData } from '../../model/internal/ExchangeData'\nimport { PaginatedListExchangeData } from '../../model/PaginatedListExchangeData'\nimport { iccRestApiPath } from '../IccRestApiPath'\nimport { ListOfIds } from '../../model/ListOfIds'\n\nexport class IccExchangeDataApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n async createExchangeData(body?: ExchangeData): Promise {\n const _url = this.host + `/exchangedata` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ExchangeData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async modifyExchangeData(body?: ExchangeData): Promise {\n const _url = this.host + `/exchangedata` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ExchangeData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async getExchangeDataById(exchangeDataId: string): Promise {\n const _url = this.host + `/exchangedata/${encodeURIComponent(String(exchangeDataId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ExchangeData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async getExchangeDataByIds(body: ListOfIds): Promise {\n const _url = this.host + `/exchangedata/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ExchangeData(it)))\n .catch((err) => this.handleError(err))\n }\n\n async getExchangeDataByDelegatorDelegate(delegatorId: string, delegateId: string): Promise {\n const _url =\n this.host +\n `/exchangedata/byDelegatorDelegate/${encodeURIComponent(String(delegatorId))}/${encodeURIComponent(String(delegateId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ExchangeData(it)))\n .catch((err) => this.handleError(err))\n }\n\n async getExchangeDataByParticipant(dataOwnerId: string, startDocumentId?: string, limit?: number): Promise {\n const _url =\n this.host +\n `/exchangedata/byParticipant/${encodeURIComponent(String(dataOwnerId))}` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListExchangeData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async getExchangeDataParticipantCounterparts(dataOwnerId: string, counterpartTypes: string): Promise {\n const _url =\n this.host +\n `/exchangedata/byParticipant/${encodeURIComponent(String(dataOwnerId))}/counterparts` +\n '?ts=' +\n new Date().getTime() +\n '&counterpartsTypes=' +\n encodeURIComponent(String(counterpartTypes))\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n}\n","import { XHR } from '../XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../../icc-x-api'\nimport { iccRestApiPath } from '../IccRestApiPath'\nimport { ExchangeDataMap } from '../../model/internal/ExchangeDataMap'\nimport { ExchangeDataMapCreationBatch } from '../../model/ExchangeDataMapCreationBatch'\nimport { ListOfIds } from '../../model/ListOfIds'\n\nexport class IccExchangeDataMapApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n async getExchangeDataMapByBatch(ids: string[]): Promise {\n const _url = this.host + `/exchangedatamap/batch` + '?ts=' + new Date().getTime()\n const body = new ListOfIds({ ids })\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body as ExchangeDataMap[])\n .catch((err) => this.handleError(err))\n }\n\n async createExchangeDataMapBatch(body: ExchangeDataMapCreationBatch): Promise {\n const _url = this.host + `/exchangedatamap/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body as string)\n .catch((err) => this.handleError(err))\n }\n}\n","import { XHR } from '../XHR'\nimport { RecoveryData } from '../../model/internal/RecoveryData'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../../icc-x-api'\nimport { iccRestApiPath } from '../IccRestApiPath'\nimport { DocIdentifier } from '../../model/DocIdentifier'\nimport { Content } from '../../model/Content'\n\nexport class IccRecoveryDataApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n async createRecoveryData(body?: RecoveryData): Promise {\n const _url = this.host + `/recoverydata` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new RecoveryData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async getRecoveryData(recoveryDataId: string): Promise {\n const _url = this.host + `/recoverydata/${encodeURIComponent(String(recoveryDataId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('GET', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new RecoveryData(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async deleteRecoveryData(recoveryDataId: string): Promise {\n const _url = this.host + `/recoverydata/${encodeURIComponent(String(recoveryDataId))}` + '?ts=' + new Date().getTime()\n return XHR.sendCommand('DELETE', _url, this.headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async deleteAllRecoveryDataForRecipient(recipientId: string): Promise {\n const _url = this.host + `/recoverydata/forRecipient/${encodeURIComponent(String(recipientId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('DELETE', _url, headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async deleteAllRecoveryDataOfTypeForRecipient(type: string, recipientId: string): Promise {\n const _url =\n this.host +\n `/recoverydata/forRecipient/${encodeURIComponent(String(recipientId))}/ofType/${encodeURIComponent(String(type))}` +\n '?ts=' +\n new Date().getTime()\n return XHR.sendCommand('DELETE', _url, this.headers, null, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","import { EntityShareOrMetadataUpdateRequest } from '../../model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../../model/requests/EntityBulkShareResult'\nimport { XHR } from '../XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../../icc-x-api'\nimport { iccRestApiPath } from '../IccRestApiPath'\nimport { SecureDelegationKeyMap } from '../../model/internal/SecureDelegationKeyMap'\nimport { ListOfIds } from '../../model/ListOfIds'\nimport { BulkShareOrUpdateMetadataParams } from '../../model/requests/BulkShareOrUpdateMetadataParams'\n\n/**\n * @internal this class is for internal use only and may be changed without notice.\n */\nexport class IccSecureDelegationKeyMapApi {\n host: string\n _headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this._headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n get headers(): Promise> {\n return Promise.resolve(this._headers)\n }\n\n setHeaders(h: Array) {\n this._headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n async getByDelegationKeys(delegationKeys: ListOfIds, proofOfAccessHeaders: XHR.Header[]): Promise {\n let _body = delegationKeys\n\n const _url = this.host + `/securedelegationkeymap/bydelegationkeys` + '?ts=' + new Date().getTime()\n let headers = [...(await this.headers), ...proofOfAccessHeaders]\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new SecureDelegationKeyMap(it)))\n .catch((err) => this.handleError(err))\n }\n\n async create(delegationKeyMap: SecureDelegationKeyMap, proofOfAccessHeader: XHR.Header): Promise {\n let _body = delegationKeyMap\n\n const _url = this.host + `/securedelegationkeymap` + '?ts=' + new Date().getTime()\n let headers = [...(await this.headers), proofOfAccessHeader]\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SecureDelegationKeyMap(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n async bulkShareSecureDelegationKeyMap(\n request: BulkShareOrUpdateMetadataParams,\n proofOfAccessHeaders: XHR.Header[]\n ): Promise[]> {\n const _url = this.host + '/securedelegationkeymap/bulkSharedMetadataUpdate' + '?ts=' + new Date().getTime()\n let headers = [...(await this.headers), ...proofOfAccessHeaders]\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, request, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((x) => new EntityBulkShareResult(x, SecureDelegationKeyMap)))\n .catch((err) => this.handleError(err))\n }\n}\n","export * from './api/IccAccesslogApi'\nexport * from './api/IccAgendaApi'\nexport * from './api/IccAnonymousAccessApi'\nexport * from './api/IccApplicationsettingsApi'\nexport * from './api/IccAuthApi'\nexport * from './api/IccBeefactApi'\nexport * from './api/IccBekmehrApi'\nexport * from './api/IccBemikronoApi'\nexport * from './api/IccBeresultexportApi'\nexport * from './api/IccBeresultimportApi'\nexport * from './api/IccBesamv2Api'\nexport * from './api/IccCalendarItemApi'\nexport * from './api/IccCalendarItemTypeApi'\nexport * from './api/IccClassificationApi'\nexport * from './api/IccClassificationTemplateApi'\nexport * from './api/IccCodeApi'\nexport * from './api/IccContactApi'\nexport * from './api/IccDeviceApi'\nexport * from './api/IccDoctemplateApi'\nexport * from './api/IccDocumentApi'\nexport * from './api/IccEntityrefApi'\nexport * from './api/IccEntitytemplateApi'\nexport * from './api/IccFormApi'\nexport * from './api/IccFrontendmigrationApi'\nexport * from './api/IccGroupApi'\nexport * from './api/IccHcpartyApi'\nexport * from './api/IccHelementApi'\nexport * from './api/IccIcureApi'\nexport * from './api/IccInsuranceApi'\nexport * from './api/IccInvoiceApi'\nexport * from './api/IccKeywordApi'\nexport * from './api/IccMedexApi'\nexport * from './api/IccMedicallocationApi'\nexport * from './api/IccMessageApi'\nexport * from './api/IccPatientApi'\nexport * from './api/IccPermissionApi'\nexport * from './api/IccPlaceApi'\nexport * from './api/IccPubsubApi'\nexport * from './api/IccReceiptApi'\nexport * from './api/IccReplicationApi'\nexport * from './api/IccTarificationApi'\nexport * from './api/IccTimeTableApi'\nexport * from './api/IccTmpApi'\nexport * from './api/IccUserApi'\nexport * from './api/IccTopicApi'\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterCode {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterCode, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterContact {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterContact, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterDevice {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterDevice, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterHealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterHealthElement, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterHealthcareParty, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterInvoice, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterMaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterMaintenanceTask, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterMessage {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterMessage, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterPatient {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterPatient, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterService {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterService, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterTopic {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterTopic, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterUser {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterUser, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\n/**\n * This entity represents Access Log.\n */\nexport class AccessLog {\n constructor(json: JSON | any) {\n Object.assign(this as AccessLog, json)\n }\n\n /**\n * The Id of the Access log. We encourage using either a v4 UUID or a HL7 Id\n */\n id?: string\n /**\n * The revision of the access log in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Id of the object that is being requested.\n */\n objectId?: string\n /**\n * The type of access\n */\n accessType?: string\n /**\n * Id of the user making the requests\n */\n user?: string\n /**\n * Further details about the access\n */\n detail?: string\n /**\n * The date (unix epoch in ms) of logging, is filled instantaneously.\n */\n date?: number\n patientId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AddedDocument {\n constructor(json: JSON | any) {\n Object.assign(this as AddedDocument, json)\n }\n\n from?: number\n to?: number\n verseSeq?: number\n documentSeq?: number\n mimeType?: string\n addressUrl?: string\n descrNl?: string\n descrFr?: string\n localPath?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Telecom } from './Telecom'\nimport { Annotation } from './Annotation'\nimport { CodeStub } from \"./CodeStub\"\nimport { Identifier } from \"./Identifier\"\n\n/**\n * This entity represents an Address\n */\nexport class Address {\n constructor(json: JSON | any) {\n Object.assign(this as Address, json)\n }\n\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity.\n */\n codes?: Array\n /**\n * The identifiers of the Address\n */\n identifier?: Array\n\n /**\n * The type of place the address represents, ex: home, office, hospital, clinic, etc.\n */\n addressType?: Address.AddressTypeEnum\n /**\n * Descriptive notes about the address\n */\n descr?: string\n /**\n * Street name\n */\n street?: string\n /**\n * Building / house number\n */\n houseNumber?: string\n /**\n * Post / PO box number\n */\n postboxNumber?: string\n /**\n * Postal/PIN/ZIP/Area code\n */\n postalCode?: string\n /**\n * Name of city in the address\n */\n city?: string\n /**\n * Name of state in the Address\n */\n state?: string\n /**\n * Name / code of country in the address\n */\n country?: string\n /**\n * Additional notes\n * @deprecated replaced by notes\n */\n note?: string\n /**\n * Additional notes\n */\n notes?: Annotation[]\n /**\n * List of other contact details available through telecom services, ex: email, phone number, fax, etc.\n */\n telecoms?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Address {\n export type AddressTypeEnum =\n | 'home'\n | 'work'\n | 'vacation'\n | 'hospital'\n | 'clinic'\n | 'hq'\n | 'other'\n | 'temporary'\n | 'postal'\n | 'diplomatic'\n | 'reference'\n | 'careaddress'\n export const AddressTypeEnum = {\n Home: 'home' as AddressTypeEnum,\n Work: 'work' as AddressTypeEnum,\n Vacation: 'vacation' as AddressTypeEnum,\n Hospital: 'hospital' as AddressTypeEnum,\n Clinic: 'clinic' as AddressTypeEnum,\n Hq: 'hq' as AddressTypeEnum,\n Other: 'other' as AddressTypeEnum,\n Temporary: 'temporary' as AddressTypeEnum,\n Postal: 'postal' as AddressTypeEnum,\n Diplomatic: 'diplomatic' as AddressTypeEnum,\n Reference: 'reference' as AddressTypeEnum,\n Careaddress: 'careaddress' as AddressTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class AdministrationQuantity {\n constructor(json: JSON | any) {\n Object.assign(this as AdministrationQuantity, json)\n }\n\n quantity?: number\n administrationUnit?: CodeStub\n unit?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Right } from './Right'\n\nexport class Agenda {\n constructor(json: JSON | any) {\n Object.assign(this as Agenda, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n userId?: string\n rights?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AgreementAppendix {\n constructor(json: JSON | any) {\n Object.assign(this as AgreementAppendix, json)\n }\n\n docSeq?: number\n verseSeq?: number\n documentId?: string\n path?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AmpComponent } from './AmpComponent'\nimport { Ampp } from './Ampp'\nimport { Company } from './Company'\nimport { SamText } from './SamText'\nimport { VmpStub } from './VmpStub'\n\nexport class Amp {\n constructor(json: JSON | any) {\n Object.assign(this as Amp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n vmp?: VmpStub\n officialName?: string\n status?: Amp.StatusEnum\n name?: SamText\n blackTriangle?: boolean\n medicineType?: Amp.MedicineTypeEnum\n company?: Company\n abbreviatedName?: SamText\n proprietarySuffix?: SamText\n prescriptionName?: SamText\n ampps?: Array\n components?: Array\n}\nexport namespace Amp {\n export type StatusEnum = 'AUTHORIZED' | 'SUSPENDED' | 'REVOKED'\n export const StatusEnum = {\n AUTHORIZED: 'AUTHORIZED' as StatusEnum,\n SUSPENDED: 'SUSPENDED' as StatusEnum,\n REVOKED: 'REVOKED' as StatusEnum,\n }\n export type MedicineTypeEnum = 'ALLOPATHIC' | 'HOMEOPATHIC'\n export const MedicineTypeEnum = {\n ALLOPATHIC: 'ALLOPATHIC' as MedicineTypeEnum,\n HOMEOPATHIC: 'HOMEOPATHIC' as MedicineTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Ingredient } from './Ingredient'\nimport { PharmaceuticalFormStub } from './PharmaceuticalFormStub'\nimport { RouteOfAdministration } from './RouteOfAdministration'\nimport { SamText } from './SamText'\n\nexport class AmpComponent {\n constructor(json: JSON | any) {\n Object.assign(this as AmpComponent, json)\n }\n\n from?: number\n to?: number\n ingredients?: Array\n pharmaceuticalForms?: Array\n routeOfAdministrations?: Array\n dividable?: string\n scored?: string\n crushable?: AmpComponent.CrushableEnum\n containsAlcohol?: AmpComponent.ContainsAlcoholEnum\n sugarFree?: boolean\n modifiedReleaseType?: number\n specificDrugDevice?: number\n dimensions?: string\n name?: SamText\n note?: SamText\n}\nexport namespace AmpComponent {\n export type CrushableEnum = 'Y' | 'N' | 'X'\n export const CrushableEnum = {\n Y: 'Y' as CrushableEnum,\n N: 'N' as CrushableEnum,\n X: 'X' as CrushableEnum,\n }\n export type ContainsAlcoholEnum = 'Y' | 'N' | 'X'\n export const ContainsAlcoholEnum = {\n Y: 'Y' as ContainsAlcoholEnum,\n N: 'N' as ContainsAlcoholEnum,\n X: 'X' as ContainsAlcoholEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AmppComponent } from './AmppComponent'\nimport { Atc } from './Atc'\nimport { Commercialization } from './Commercialization'\nimport { Company } from './Company'\nimport { Dmpp } from './Dmpp'\nimport { Quantity } from './Quantity'\nimport { SamText } from './SamText'\nimport { SupplyProblem } from './SupplyProblem'\n\nexport class Ampp {\n constructor(json: JSON | any) {\n Object.assign(this as Ampp, json)\n }\n\n from?: number\n to?: number\n index?: number\n ctiExtended?: string\n orphan?: boolean\n leafletLink?: SamText\n spcLink?: SamText\n rmaPatientLink?: SamText\n rmaProfessionalLink?: SamText\n parallelCircuit?: number\n parallelDistributor?: string\n packMultiplier?: number\n packAmount?: Quantity\n packDisplayValue?: SamText\n status?: Ampp.StatusEnum\n atcs?: Array\n crmLink?: SamText\n deliveryModusCode?: string\n deliveryModus?: SamText\n deliveryModusSpecificationCode?: string\n deliveryModusSpecification?: SamText\n dhpcLink?: SamText\n distributorCompany?: Company\n singleUse?: boolean\n speciallyRegulated?: number\n abbreviatedName?: SamText\n prescriptionName?: SamText\n note?: SamText\n posologyNote?: SamText\n noGenericPrescriptionReasons?: Array\n exFactoryPrice?: number\n reimbursementCode?: number\n definedDailyDose?: Quantity\n officialExFactoryPrice?: number\n realExFactoryPrice?: number\n pricingInformationDecisionDate?: number\n components?: Array\n commercializations?: Array\n supplyProblems?: Array\n dmpps?: Array\n vaccineIndicationCodes?: Array\n rmaKeyMessages?: SamText\n genericPrescriptionRequired?: boolean\n}\n\nexport namespace Ampp {\n export type StatusEnum = 'AUTHORIZED' | 'SUSPENDED' | 'REVOKED'\n export const StatusEnum = {\n AUTHORIZED: 'AUTHORIZED' as StatusEnum,\n SUSPENDED: 'SUSPENDED' as StatusEnum,\n REVOKED: 'REVOKED' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DeviceType } from './DeviceType'\nimport { PackagingType } from './PackagingType'\nimport { SamText } from './SamText'\n\nexport class AmppComponent {\n constructor(json: JSON | any) {\n Object.assign(this as AmppComponent, json)\n }\n\n from?: number\n to?: number\n contentType?: AmppComponent.ContentTypeEnum\n contentMultiplier?: number\n packSpecification?: SamText\n deviceType?: DeviceType\n packagingType?: PackagingType\n}\nexport namespace AmppComponent {\n export type ContentTypeEnum = 'ACTIVE_COMPONENT' | 'SOLVENT' | 'DEVICE' | 'EXCIPIENT'\n export const ContentTypeEnum = {\n ACTIVECOMPONENT: 'ACTIVE_COMPONENT' as ContentTypeEnum,\n SOLVENT: 'SOLVENT' as ContentTypeEnum,\n DEVICE: 'DEVICE' as ContentTypeEnum,\n EXCIPIENT: 'EXCIPIENT' as ContentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { ISO639_1 } from './ISO639_1'\nimport { CodeStub } from './CodeStub'\n\n/**\n * Text node with attribution. Could be written by a healthcare party, as a side node of a |medical record. For example, after taking a temperature, the HCP adds a node explaining the |thermometer is faulty.\n */\nexport class Annotation {\n constructor(json: JSON | any) {\n Object.assign(this as Annotation, json)\n }\n\n /**\n * The Id of the Annotation. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n author?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this note, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The timestamp (unix epoch in ms) of the latest modification of this note, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * Text contained in the note, written as markdown.\n * @deprecated use markdown instead\n */\n text?: string\n\n /**\n * Text contained in the note, written as markdown.\n */\n markdown?: { [lang in ISO639_1]?: string }\n\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n\n /**\n * Defines to which part of the corresponding information the note is related to.\n */\n location?: string\n\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class ApplicationSettings {\n constructor(json: JSON | any) {\n Object.assign(this as ApplicationSettings, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n settings?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Appointment {\n constructor(json: JSON | any) {\n Object.assign(this as Appointment, json)\n }\n\n zoneId?: string\n patientId?: string\n userId?: string\n prescriptorComment?: string\n patientComment?: string\n comment?: string\n type?: string\n location?: string\n status?: string\n paid?: boolean\n amount?: number\n startTime?: number\n endTime?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class AppointmentTypeAndPlace {\n constructor(json: JSON | any) {\n Object.assign(this as AppointmentTypeAndPlace, json)\n }\n\n calendarItemTypeId?: string\n name?: string\n color?: string\n duration?: number\n subjectByLanguage?: { [key: string]: string }\n placeId?: string\n address?: Address\n acceptsNewPatients?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class Article {\n constructor(json: JSON | any) {\n Object.assign(this as Article, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n content?: Array\n classification?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Atc {\n constructor(json: JSON | any) {\n Object.assign(this as Atc, json)\n }\n\n code?: string\n description?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Metadata for new attachments or attachments which will be updated, by key. The key for the main attachment is the document id.\n */\nexport class AttachmentMetadata {\n constructor(json: JSON | any) {\n Object.assign(this as AttachmentMetadata, json)\n }\n\n /**\n * The Uniform Type Identifiers (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE) of the attachment. This is a list to allow representing a priority, but each UTI must be unique.\n */\n utis?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AuthenticationResponse {\n constructor(json: JSON | any) {\n Object.assign(this as AuthenticationResponse, json)\n }\n\n groupId?: string\n userId?: string\n dataOwnerId?: string\n healthcarePartyId?: string\n reason?: string\n successful?: boolean\n username?: string\n token?: string\n refreshToken?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Encrypted and time-limited Authentication tokens used for inter-applications authentication\n */\nexport class AuthenticationToken {\n constructor(json: JSON | any) {\n Object.assign(this as AuthenticationToken, json)\n }\n\n /**\n * Encrypted token\n */\n token?: string\n /**\n * Validity starting time of the token\n */\n creationTime?: number\n /**\n * Token validity in seconds\n */\n validity?: number\n\n deletionDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Basic {\n constructor(json: JSON | any) {\n Object.assign(this as Basic, json)\n }\n\n username?: string\n password?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { b64_2ab } from './ModelHelper'\nexport class Body {\n constructor(json: JSON | any) {\n Object.assign(this as Body, json, json.attachment ? { attachment: b64_2ab(json.attachment) } : {})\n }\n\n attachment?: ArrayBuffer\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AttachmentMetadata } from './AttachmentMetadata'\n\n/**\n * Describes the operations to execute with this update.\n */\nexport class BulkAttachmentUpdateOptions {\n constructor(json: JSON | any) {\n Object.assign(this as BulkAttachmentUpdateOptions, json)\n }\n\n /**\n * Metadata for new attachments or attachments which will be updated, by key. The key for the main attachment is the document id.\n */\n updateAttachmentsMetadata?: { [key: string]: AttachmentMetadata }\n /**\n * Keys of attachments to delete. The key for the main attachment is the document id.\n */\n deleteAttachments?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CalendarItemTag } from './CalendarItemTag'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { FlowItem } from './FlowItem'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class CalendarItem {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItem, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n title?: string\n calendarItemTypeId?: string\n masterCalendarItemId?: string\n patientId?: string\n important?: boolean\n homeVisit?: boolean\n phoneNumber?: string\n placeId?: string\n address?: Address\n addressText?: string\n startTime?: number\n endTime?: number\n confirmationTime?: number\n confirmationId?: string\n cancellationTimestamp?: number\n duration?: number\n allDay?: boolean\n details?: string\n wasMigrated?: boolean\n agendaId?: string\n hcpId?: string\n recurrenceId?: string\n meetingTags?: Array\n flowItem?: FlowItem\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CalendarItemTag {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItemTag, json)\n }\n\n code?: string\n date?: number\n userId?: string\n userName?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CalendarItemType {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItemType, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n color?: string\n duration?: number\n externalRef?: string\n mikronoId?: string\n docIds?: Array\n otherInfos?: { [key: string]: string }\n subjectByLanguage?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\n/**\n * List of care team members assigned for the healthcare element.\n */\nexport class CareTeamMember {\n constructor(json: JSON | any) {\n Object.assign(this as CareTeamMember, json)\n }\n\n id?: string\n careTeamMemberType?: CareTeamMember.CareTeamMemberTypeEnum\n healthcarePartyId?: string\n quality?: CodeStub\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace CareTeamMember {\n export type CareTeamMemberTypeEnum = 'physician' | 'specialist' | 'other'\n export const CareTeamMemberTypeEnum = {\n Physician: 'physician' as CareTeamMemberTypeEnum,\n Specialist: 'specialist' as CareTeamMemberTypeEnum,\n Other: 'other' as CareTeamMemberTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Members of the careteam involved in this approach\n */\nexport class CareTeamMembership {\n constructor(json: JSON | any) {\n Object.assign(this as CareTeamMembership, json)\n }\n\n startDate?: number\n endDate?: number\n careTeamMemberId?: string\n membershipType?: CareTeamMembership.MembershipTypeEnum\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace CareTeamMembership {\n export type MembershipTypeEnum = 'doctor' | 'mutuality' | 'patient' | 'specialist' | 'other'\n export const MembershipTypeEnum = {\n Doctor: 'doctor' as MembershipTypeEnum,\n Mutuality: 'mutuality' as MembershipTypeEnum,\n Patient: 'patient' as MembershipTypeEnum,\n Specialist: 'specialist' as MembershipTypeEnum,\n Other: 'other' as MembershipTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CheckSMFPatientResult {\n constructor(json: JSON | any) {\n Object.assign(this as CheckSMFPatientResult, json)\n }\n\n firstName?: string\n lastName?: string\n ssin?: string\n dateOfBirth?: number\n exists?: boolean\n existingPatientId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class Classification {\n constructor(json: JSON | any) {\n Object.assign(this as Classification, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n parentId?: string\n label?: string\n templateId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\n\nexport class ClassificationTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as ClassificationTemplate, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n parentId?: string\n label?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Periodicity } from './Periodicity'\n\nexport class Code {\n constructor(json: JSON | any) {\n Object.assign(this as Code, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n context?: string\n type?: string\n code?: string\n version?: string\n label?: { [key: string]: string }\n author?: string\n regions?: Array\n periodicity?: Array\n level?: number\n links?: Array\n qualifiedLinks?: { [key: string]: Array }\n flags?: Array\n searchTerms?: { [key: string]: Array }\n data?: string\n appendices?: { [key: string]: string }\n disabled?: boolean\n}\nexport namespace Code {\n export type FlagsEnum =\n | 'male_only'\n | 'female_only'\n | 'deptkinesitherapy'\n | 'deptnursing'\n | 'deptgeneralpractice'\n | 'deptsocialworker'\n | 'deptpsychology'\n | 'deptadministrative'\n | 'deptdietetics'\n | 'deptspeechtherapy'\n | 'deptdentistry'\n | 'deptoccupationaltherapy'\n | 'depthealthcare'\n | 'deptgynecology'\n | 'deptpediatry'\n | 'deptalgology'\n | 'deptanatomopathology'\n | 'deptanesthesiology'\n | 'deptbacteriology'\n | 'deptcardiacsurgery'\n | 'deptcardiology'\n | 'deptchildandadolescentpsychiatry'\n | 'deptdermatology'\n | 'deptdiabetology'\n | 'deptemergency'\n | 'deptendocrinology'\n | 'deptgastroenterology'\n | 'deptgenetics'\n | 'deptgeriatry'\n | 'depthandsurgery'\n | 'depthematology'\n | 'deptinfectiousdisease'\n | 'deptintensivecare'\n | 'deptlaboratory'\n | 'deptmajorburns'\n | 'deptmaxillofacialsurgery'\n | 'deptmedicine'\n | 'deptmolecularbiology'\n | 'deptneonatalogy'\n | 'deptnephrology'\n | 'deptneurology'\n | 'deptneurosurgery'\n | 'deptnte'\n | 'deptnuclear'\n | 'deptnutritiondietetics'\n | 'deptobstetrics'\n | 'deptoncology'\n | 'deptophtalmology'\n | 'deptorthopedy'\n | 'deptpalliativecare'\n | 'deptpediatricintensivecare'\n | 'deptpediatricsurgery'\n | 'deptpharmacy'\n | 'deptphysicalmedecine'\n | 'deptphysiotherapy'\n | 'deptplasticandreparatorysurgery'\n | 'deptpneumology'\n | 'deptpodiatry'\n | 'deptpsychiatry'\n | 'deptradiology'\n | 'deptradiotherapy'\n | 'deptrevalidation'\n | 'deptrheumatology'\n | 'deptrhumatology'\n | 'deptsenology'\n | 'deptsocialservice'\n | 'deptsportsmedecine'\n | 'deptstomatology'\n | 'deptsurgery'\n | 'deptthoracicsurgery'\n | 'depttoxicology'\n | 'depttropicalmedecine'\n | 'depturology'\n | 'deptvascularsurgery'\n | 'deptvisceraldigestiveabdominalsurgery'\n | 'depttransplantsurgery'\n | 'deptpercutaneous'\n | 'deptchildbirth'\n export const FlagsEnum = {\n MaleOnly: 'male_only' as FlagsEnum,\n FemaleOnly: 'female_only' as FlagsEnum,\n Deptkinesitherapy: 'deptkinesitherapy' as FlagsEnum,\n Deptnursing: 'deptnursing' as FlagsEnum,\n Deptgeneralpractice: 'deptgeneralpractice' as FlagsEnum,\n Deptsocialworker: 'deptsocialworker' as FlagsEnum,\n Deptpsychology: 'deptpsychology' as FlagsEnum,\n Deptadministrative: 'deptadministrative' as FlagsEnum,\n Deptdietetics: 'deptdietetics' as FlagsEnum,\n Deptspeechtherapy: 'deptspeechtherapy' as FlagsEnum,\n Deptdentistry: 'deptdentistry' as FlagsEnum,\n Deptoccupationaltherapy: 'deptoccupationaltherapy' as FlagsEnum,\n Depthealthcare: 'depthealthcare' as FlagsEnum,\n Deptgynecology: 'deptgynecology' as FlagsEnum,\n Deptpediatry: 'deptpediatry' as FlagsEnum,\n Deptalgology: 'deptalgology' as FlagsEnum,\n Deptanatomopathology: 'deptanatomopathology' as FlagsEnum,\n Deptanesthesiology: 'deptanesthesiology' as FlagsEnum,\n Deptbacteriology: 'deptbacteriology' as FlagsEnum,\n Deptcardiacsurgery: 'deptcardiacsurgery' as FlagsEnum,\n Deptcardiology: 'deptcardiology' as FlagsEnum,\n Deptchildandadolescentpsychiatry: 'deptchildandadolescentpsychiatry' as FlagsEnum,\n Deptdermatology: 'deptdermatology' as FlagsEnum,\n Deptdiabetology: 'deptdiabetology' as FlagsEnum,\n Deptemergency: 'deptemergency' as FlagsEnum,\n Deptendocrinology: 'deptendocrinology' as FlagsEnum,\n Deptgastroenterology: 'deptgastroenterology' as FlagsEnum,\n Deptgenetics: 'deptgenetics' as FlagsEnum,\n Deptgeriatry: 'deptgeriatry' as FlagsEnum,\n Depthandsurgery: 'depthandsurgery' as FlagsEnum,\n Depthematology: 'depthematology' as FlagsEnum,\n Deptinfectiousdisease: 'deptinfectiousdisease' as FlagsEnum,\n Deptintensivecare: 'deptintensivecare' as FlagsEnum,\n Deptlaboratory: 'deptlaboratory' as FlagsEnum,\n Deptmajorburns: 'deptmajorburns' as FlagsEnum,\n Deptmaxillofacialsurgery: 'deptmaxillofacialsurgery' as FlagsEnum,\n Deptmedicine: 'deptmedicine' as FlagsEnum,\n Deptmolecularbiology: 'deptmolecularbiology' as FlagsEnum,\n Deptneonatalogy: 'deptneonatalogy' as FlagsEnum,\n Deptnephrology: 'deptnephrology' as FlagsEnum,\n Deptneurology: 'deptneurology' as FlagsEnum,\n Deptneurosurgery: 'deptneurosurgery' as FlagsEnum,\n Deptnte: 'deptnte' as FlagsEnum,\n Deptnuclear: 'deptnuclear' as FlagsEnum,\n Deptnutritiondietetics: 'deptnutritiondietetics' as FlagsEnum,\n Deptobstetrics: 'deptobstetrics' as FlagsEnum,\n Deptoncology: 'deptoncology' as FlagsEnum,\n Deptophtalmology: 'deptophtalmology' as FlagsEnum,\n Deptorthopedy: 'deptorthopedy' as FlagsEnum,\n Deptpalliativecare: 'deptpalliativecare' as FlagsEnum,\n Deptpediatricintensivecare: 'deptpediatricintensivecare' as FlagsEnum,\n Deptpediatricsurgery: 'deptpediatricsurgery' as FlagsEnum,\n Deptpharmacy: 'deptpharmacy' as FlagsEnum,\n Deptphysicalmedecine: 'deptphysicalmedecine' as FlagsEnum,\n Deptphysiotherapy: 'deptphysiotherapy' as FlagsEnum,\n Deptplasticandreparatorysurgery: 'deptplasticandreparatorysurgery' as FlagsEnum,\n Deptpneumology: 'deptpneumology' as FlagsEnum,\n Deptpodiatry: 'deptpodiatry' as FlagsEnum,\n Deptpsychiatry: 'deptpsychiatry' as FlagsEnum,\n Deptradiology: 'deptradiology' as FlagsEnum,\n Deptradiotherapy: 'deptradiotherapy' as FlagsEnum,\n Deptrevalidation: 'deptrevalidation' as FlagsEnum,\n Deptrheumatology: 'deptrheumatology' as FlagsEnum,\n Deptrhumatology: 'deptrhumatology' as FlagsEnum,\n Deptsenology: 'deptsenology' as FlagsEnum,\n Deptsocialservice: 'deptsocialservice' as FlagsEnum,\n Deptsportsmedecine: 'deptsportsmedecine' as FlagsEnum,\n Deptstomatology: 'deptstomatology' as FlagsEnum,\n Deptsurgery: 'deptsurgery' as FlagsEnum,\n Deptthoracicsurgery: 'deptthoracicsurgery' as FlagsEnum,\n Depttoxicology: 'depttoxicology' as FlagsEnum,\n Depttropicalmedecine: 'depttropicalmedecine' as FlagsEnum,\n Depturology: 'depturology' as FlagsEnum,\n Deptvascularsurgery: 'deptvascularsurgery' as FlagsEnum,\n Deptvisceraldigestiveabdominalsurgery: 'deptvisceraldigestiveabdominalsurgery' as FlagsEnum,\n Depttransplantsurgery: 'depttransplantsurgery' as FlagsEnum,\n Deptpercutaneous: 'deptpercutaneous' as FlagsEnum,\n Deptchildbirth: 'deptchildbirth' as FlagsEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CodeStub {\n constructor(json: JSON | any) {\n Object.assign(this as CodeStub, json)\n }\n\n id?: string\n context?: string\n contextLabel?: string\n type?: string\n code?: string\n version?: string\n label?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CodeType {\n constructor(json: JSON | any) {\n Object.assign(this as CodeType, json)\n }\n\n type?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class CommentedClassification {\n constructor(json: JSON | any) {\n Object.assign(this as CommentedClassification, json)\n }\n\n title?: SamText\n url?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Commercialization {\n constructor(json: JSON | any) {\n Object.assign(this as Commercialization, json)\n }\n\n from?: number\n to?: number\n reason?: SamText\n endOfComercialization?: SamText\n impact?: SamText\n additionalInformation?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Company {\n constructor(json: JSON | any) {\n Object.assign(this as Company, json)\n }\n\n from?: number\n to?: number\n authorisationNr?: string\n vatNr?: { [key: string]: string }\n europeanNr?: string\n denomination?: string\n legalForm?: string\n building?: string\n streetName?: string\n streetNum?: string\n postbox?: string\n postcode?: string\n city?: string\n countryCode?: string\n phone?: string\n language?: string\n website?: string\n}\n","import {ConnectionStatus, WebSocketWrapper} from \"../../icc-x-api\"\n\nexport interface Connection {\n close(): void\n onConnected(callback: () => void): Connection\n onClosed(callback: () => void): Connection\n onError(callback: (e?: Error) => void): Connection\n}\n\nexport class ConnectionImpl implements Connection {\n wsw: WebSocketWrapper\n connectionStatus: ConnectionStatus\n\n constructor(rs: WebSocketWrapper) {\n this.wsw = rs\n this.connectionStatus = 'NOT_CONNECTED'\n }\n\n close() {\n this.wsw.close()\n }\n\n onConnected(callback: () => void): Connection {\n this.wsw?.addStatusCallback('CONNECTED', (ws: WebSocketWrapper) => {\n this.connectionStatus = 'CONNECTED'\n callback()\n })\n return this\n }\n\n onClosed(callback: () => void): Connection {\n this.wsw?.addStatusCallback('CLOSED', (ws: WebSocketWrapper) => {\n this.connectionStatus = 'CLOSED'\n callback()\n })\n return this\n }\n\n onError(callback: (e?: Error) => void): Connection {\n this.wsw?.addStatusCallback('ERROR', (ws: WebSocketWrapper, e?: Error) => {\n this.connectionStatus = 'ERROR'\n callback(e)\n })\n return this\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\nimport { Service } from './Service'\nimport { SubContact } from './SubContact'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport {Annotation} from \"./Annotation\"\nimport {Address} from \"./Address\"\n\n/**\n * This entity is a root-level object. It represents a contact. It is serialized in JSON and saved in the underlying icure-contact CouchDB database. The contact is the entity that records the medical information about the patient chronologically. A visit to the patient's house, a consultation at the practice, a phone call between the patient and the healthcare party or integrating lab reports into the medical file are examples of when a contact can be recorded. A contact can occur with or without direct interaction between the patient and the healthcare party. For example, when a healthcare party encodes data received from laboratory's test result, this is done in the absence of a patient. A contact groups together pieces of information collected during one single event, for one single patient and for one or more healthcare parties. Patient's complaints, the diagnosis of a new problem, a surgical procedure, etc. are collected inside a contact. The main sub-element of the contact is the service. Each atomic piece of information collected during a contact is a service and is stored inside the services list of a contact.\n */\nexport class Contact {\n constructor(json: JSON | any) {\n Object.assign(\n this as Contact,\n json,\n )\n\n if (!!this.services) {\n this.services = this.services.map((service: JSON | any) => new Service(service))\n }\n }\n\n /**\n * the Id of the contact. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the contact in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * The identifiers of the Contact\n */\n identifier?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Separate contacts can merged in one logical contact if they share the same groupId. When a contact must be split to selectively assign rights to healthcare parties, the split contacts all share the same groupId\n */\n groupId?: string\n /**\n * The date (YYYYMMDDhhmmss) of the start of the contact.\n */\n openingDate?: number\n /**\n * The date (YYYYMMDDhhmmss) marking the end of the contact.\n */\n closingDate?: number\n /**\n * Description of the contact\n */\n descr?: string\n /**\n * Location where the contact was recorded.\n */\n location?: string\n /**\n * An external (from another source) id with no guarantee or requirement for unicity.\n */\n externalId?: string\n /**\n * The location where the encounter took place\n */\n encounterLocation?: Address\n encounterType?: CodeStub\n /**\n * Set of all sub-contacts recorded during the given contact. Sub-contacts are used to link services embedded inside this contact to healthcare elements, healthcare approaches and/or forms.\n */\n subContacts?: Array\n /**\n * Set of all services provided to the patient during the contact.\n */\n services?: Array\n /**\n * The participants to the contact. The key is the type of participant, the value is the id of the participant data owner id\n */\n participants?: Record\n healthcarePartyId?: string\n modifiedContactId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n /**\n * Comments - Notes recorded by a HCP about this service\n */\n notes?: Array\n}\n\nexport type ParticipantType =\n | 'admitter'\n | 'attender'\n | 'callback'\n | 'consultant'\n | 'discharger'\n | 'escort'\n | 'referrer'\n | 'secondaryPerformer'\n | 'primaryPerformer'\n | 'participation'\n | 'translator'\n | 'emergency'\n | 'location'\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Measure } from './Measure'\nimport { Medication } from './Medication'\nimport { Service } from './Service'\nimport { TimeSeries } from './TimeSeries'\n\n/**\n * Information contained in the service. Content is localized, using ISO language code as key\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Content {\n constructor(json: JSON | any) {\n let binaryData: { binaryValue?: ArrayBuffer } = {}\n if (!!json.binaryValue) {\n if (typeof json.binaryValue === 'string') {\n binaryData.binaryValue = b64_2ab(json.binaryValue)\n } else if (json.binaryValue instanceof ArrayBuffer || ArrayBuffer.isView(json.binaryValue)) {\n binaryData.binaryValue = json.binaryValue\n } else {\n throw new Error(`Invalid type for binaryValue: ${typeof json.binaryValue}`)\n }\n }\n Object.assign(this as Content, json, binaryData)\n\n if (!!json?.measureValue) {\n this.measureValue = new Measure(json.measureValue)\n }\n\n if (!!json?.compoundValue) {\n this.compoundValue = json.compoundValue.map((service: JSON | any) => new Service(service))\n }\n }\n\n stringValue?: string\n numberValue?: number\n booleanValue?: boolean\n instantValue?: number\n /**\n * Value as date. The format could have a all three (day, month and year) or values on any of these three, whatever is known.\n */\n fuzzyDateValue?: number\n binaryValue?: ArrayBuffer\n /**\n * Linked document.\n */\n documentId?: string\n measureValue?: Measure\n medicationValue?: Medication\n timeSeries?: TimeSeries\n compoundValue?: Array\n ratio?: Array\n range?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Copayment {\n constructor(json: JSON | any) {\n Object.assign(this as Copayment, json)\n }\n\n regimeType?: number\n from?: number\n to?: number\n feeAmount?: string\n}\n","import { DataOwnerTypeEnum } from './DataOwnerTypeEnum'\nimport { DataOwnerWithType } from './DataOwnerWithType'\nimport { Patient } from './Patient'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Device } from './Device'\nimport {CodeStub} from \"./CodeStub\"\n\nexport class CryptoActorStub {\n constructor(json: JSON | any) {\n Object.assign(this as CryptoActorStub, json)\n }\n\n static fromDataOwner(dataOwnerWithType: Patient | HealthcareParty | Device) {\n return new CryptoActorStub({\n id: dataOwnerWithType.id,\n rev: dataOwnerWithType.rev,\n hcPartyKeys: dataOwnerWithType.hcPartyKeys,\n aesExchangeKeys: dataOwnerWithType.aesExchangeKeys,\n transferKeys: dataOwnerWithType.transferKeys,\n privateKeyShamirPartitions: dataOwnerWithType.privateKeyShamirPartitions,\n publicKeysForOaepWithSha256: dataOwnerWithType.publicKeysForOaepWithSha256,\n publicKey: dataOwnerWithType.publicKey,\n tags: dataOwnerWithType.tags,\n })\n }\n\n readonly id!: string\n readonly rev?: string\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public keys of this actor which should be used for RSA-OAEP with sha256 encryption.\n */\n publicKeysForOaepWithSha256?: string[]\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n}\nexport class CryptoActorStubWithType {\n constructor(json: JSON | any) {\n this.stub = new CryptoActorStub(json.stub)\n this.type = json.type as DataOwnerTypeEnum\n }\n\n static fromDataOwner(dataOwnerWithType: DataOwnerWithType) {\n return new CryptoActorStubWithType({\n stub: CryptoActorStub.fromDataOwner(dataOwnerWithType.dataOwner),\n type: dataOwnerWithType.type,\n })\n }\n\n stub: CryptoActorStub\n type: DataOwnerTypeEnum\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Data {\n constructor(json: JSON | any) {\n Object.assign(this as Data, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Represent an attachment holding some additional data for an entity.\n */\nexport class DataAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as DataAttachment, json)\n }\n\n /**\n * Id of the attachment, if stored as a couchdb attachment\n */\n couchDbAttachmentId?: string\n /**\n * Id of the attachment, if stored using the object storage service\n */\n objectStoreAttachmentId?: string\n /**\n * The Uniform Type Identifiers (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE) of the attachment.\n * This is an array to allow representing a priority, but each UTI must be unique.\n */\n utis?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DataOwnerRegistrationSuccess {\n constructor(json: JSON | any) {\n Object.assign(this as DataOwnerRegistrationSuccess, json)\n }\n\n userLogin?: string\n userId?: string\n token?: string\n}\n","/**\n * Represents the type of a data owner\n */\nexport enum DataOwnerTypeEnum {\n Patient = 'patient',\n Hcp = 'hcp',\n Device = 'device',\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DataOwnerTypeEnum } from './DataOwnerTypeEnum'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Patient } from './Patient'\nimport { Device } from './Device'\n\nexport type DataOwnerWithType =\n | { type: DataOwnerTypeEnum.Hcp; dataOwner: HealthcareParty }\n | { type: DataOwnerTypeEnum.Patient; dataOwner: Patient }\n | { type: DataOwnerTypeEnum.Device; dataOwner: Device }\nexport namespace DataOwnerWithType {\n export function fromJson(json: any | JSON): DataOwnerWithType {\n if (json.type === DataOwnerTypeEnum.Hcp) {\n return { type: DataOwnerTypeEnum.Hcp, dataOwner: new HealthcareParty(json.dataOwner) }\n } else if (json.type === DataOwnerTypeEnum.Patient) {\n return { type: DataOwnerTypeEnum.Patient, dataOwner: new Patient(json.dataOwner) }\n } else if (json.type === DataOwnerTypeEnum.Device) {\n return { type: DataOwnerTypeEnum.Device, dataOwner: new Device(json.dataOwner) }\n } else throw new Error(`Unknown data owner type ${json.type}`)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DatabaseInfo {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseInfo, json)\n }\n\n id?: string\n updateSeq?: string\n fileSize?: number\n externalSize?: number\n activeSize?: number\n docs?: number\n q?: number\n n?: number\n w?: number\n r?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Replication } from './Replication'\nimport { User } from './User'\n\n/**\n * initialisationData is an object that contains the initial replications (target must be an internalTarget of value base, healthdata or patient) and the users and healthcare parties to be created\n */\nexport class DatabaseInitialisation {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseInitialisation, json)\n }\n\n users?: Array\n healthcareParties?: Array\n replication?: Replication\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DatabaseSynchronization {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseSynchronization, json)\n }\n\n source?: string\n target?: string\n filter?: string\n localTarget?: DatabaseSynchronization.LocalTargetEnum\n}\nexport namespace DatabaseSynchronization {\n export type LocalTargetEnum = 'base' | 'healthdata' | 'patient'\n export const LocalTargetEnum = {\n Base: 'base' as LocalTargetEnum,\n Healthdata: 'healthdata' as LocalTargetEnum,\n Patient: 'patient' as LocalTargetEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\nexport class Delegation {\n constructor(json: JSON | any) {\n Object.assign(this as Delegation, json)\n }\n\n owner?: string\n delegatedTo?: string\n key?: string\n /**\n * @deprecated replaced by access control\n */\n tags?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Represents an attachment which was deleted from an entity.\n */\nexport class DeletedAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as DeletedAttachment, json)\n }\n\n /**\n * If the attachment was stored as a couchdb attachment this holds the id of the attachment, else null.\n */\n couchDbAttachmentId?: string\n /**\n * If the attachment was stored using the object storage service this holds the id of the attachment, else null.\n */\n objectStoreAttachmentId?: string\n /**\n * If the attachment was associated to a key this was its key, else null.\n */\n key?: string\n\n /**\n * Instant the attachment was deleted, as epoch timestamp in ms.\n */\n deletionTime?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Identifier } from './Identifier'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity is a root level object. It represents a device. It is serialized in JSON and saved in the underlying icure-base CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Device {\n constructor(json: JSON | any) {\n Object.assign(this as Device, json, json.picture ? { picture: b64_2ab(json.picture) } : {})\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n identifiers?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n externalId?: string\n name?: string\n type?: string\n brand?: string\n model?: string\n serialNumber?: string\n parentId?: string\n picture?: ArrayBuffer\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this device private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this device\n */\n publicKey?: string\n /**\n * The public keys of this actor that are generates using the OAEP Sha-256 standard\n */\n publicKeysForOaepWithSha256?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class DeviceType {\n constructor(json: JSON | any) {\n Object.assign(this as DeviceType, json)\n }\n\n code?: string\n name?: SamText\n edqmCode?: string\n edqmDefinition?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\n\nexport class DiaryNoteExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as DiaryNoteExportInfo, json)\n }\n\n encryptionDecryptionKeys?: Array\n excludedIds?: Array\n recipient?: HealthcareParty\n softwareName?: string\n softwareVersion?: string\n tags?: Array\n contexts?: Array\n psy?: boolean\n documentId?: string\n attachmentId?: string\n note?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Reimbursement } from './Reimbursement'\n\nexport class Dmpp {\n constructor(json: JSON | any) {\n Object.assign(this as Dmpp, json)\n }\n\n id?: string\n from?: number\n to?: number\n deliveryEnvironment?: Dmpp.DeliveryEnvironmentEnum\n code?: string\n codeType?: Dmpp.CodeTypeEnum\n price?: string\n cheap?: boolean\n cheapest?: boolean\n reimbursable?: boolean\n reimbursements?: Array\n productId?: string\n}\nexport namespace Dmpp {\n export type DeliveryEnvironmentEnum = 'P' | 'A' | 'H' | 'R'\n export const DeliveryEnvironmentEnum = {\n P: 'P' as DeliveryEnvironmentEnum,\n A: 'A' as DeliveryEnvironmentEnum,\n H: 'H' as DeliveryEnvironmentEnum,\n R: 'R' as DeliveryEnvironmentEnum,\n }\n export type CodeTypeEnum = 'CNK' | 'PSEUDO'\n export const CodeTypeEnum = {\n CNK: 'CNK' as CodeTypeEnum,\n PSEUDO: 'PSEUDO' as CodeTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DocIdentifier {\n constructor(json: JSON | any) {\n Object.assign(this as DocIdentifier, json)\n }\n\n id?: string\n rev?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { DataAttachment } from './DataAttachment'\nimport { DeletedAttachment } from './DeletedAttachment'\n\n/**\n * This entity is a root level object. It represents a Document. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\nexport class Document {\n constructor(json: JSON | any) {\n Object.assign(\n this as Document,\n json,\n json.encryptedAttachment ? { encryptedAttachment: b64_2ab(json.encryptedAttachment) } : {},\n json.decryptedAttachment ? { decryptedAttachment: b64_2ab(json.decryptedAttachment) } : {}\n )\n }\n\n /**\n * The Id of the document. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the document in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Location of the document\n */\n documentLocation?: Document.DocumentLocationEnum\n /**\n * The type of document, ex: admission, clinical path, document report,invoice, etc.\n */\n documentType?: Document.DocumentTypeEnum\n /**\n * The status of the development of the document. Ex: Draft, finalized, reviewed, signed, etc.\n */\n documentStatus?: Document.DocumentStatusEnum\n /**\n * When the document is stored in an external repository, this is the uri of the document in that repository\n */\n externalUri?: string\n /**\n * Name of the document\n */\n name?: string\n /**\n * The document version\n */\n version?: string\n /**\n * The ICureDocument (Form, Contact, ...) that has been used to generate the document\n */\n storedICureDocumentId?: string\n /**\n * A unique external id (from another external source).\n */\n externalUuid?: string\n /**\n * Size of the document file\n */\n size?: number\n /**\n * Hashed version of the document\n */\n hash?: string\n /**\n * Id of the contact during which the document was created\n */\n openingContactId?: string\n /**\n * Id of the main attachment of this document, if stored as a couchdb attachment\n */\n attachmentId?: string\n /**\n * Id of the main attachment of this document, if stored using the object storage service\n */\n objectStoreReference?: string\n /**\n * The main Uniform Type Identifier for the main attachment (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE)\n */\n mainUti?: string\n /**\n * Extra Uniform Type Identifiers for the main attachment\n */\n otherUtis?: Array\n /**\n * Secondary attachments for this document\n */\n secondaryAttachments?: { [key: string]: DataAttachment }\n /**\n * Information on past attachments for this document\n */\n deletedAttachments?: Array\n encryptedAttachment?: ArrayBuffer\n decryptedAttachment?: ArrayBuffer\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\nexport namespace Document {\n export type DocumentLocationEnum = 'annex' | 'body'\n export const DocumentLocationEnum = {\n Annex: 'annex' as DocumentLocationEnum,\n Body: 'body' as DocumentLocationEnum,\n }\n export type DocumentTypeEnum =\n | 'admission'\n | 'alert'\n | 'bvt_sample'\n | 'clinicalpath'\n | 'clinicalsummary'\n | 'contactreport'\n | 'quote'\n | 'invoice'\n | 'death'\n | 'discharge'\n | 'dischargereport'\n | 'ebirth_baby_medicalform'\n | 'ebirth_baby_notification'\n | 'ebirth_mother_medicalform'\n | 'ebirth_mother_notification'\n | 'ecare_safe_consultation'\n | 'epidemiology'\n | 'intervention'\n | 'labrequest'\n | 'labresult'\n | 'medicaladvisoragreement'\n | 'medicationschemeelement'\n | 'note'\n | 'notification'\n | 'pharmaceuticalprescription'\n | 'prescription'\n | 'productdelivery'\n | 'quickdischargereport'\n | 'radiationexposuremonitoring'\n | 'referral'\n | 'report'\n | 'request'\n | 'result'\n | 'sumehr'\n | 'telemonitoring'\n | 'template'\n | 'template_admin'\n | 'treatmentsuspension'\n | 'vaccination'\n export const DocumentTypeEnum = {\n Admission: 'admission' as DocumentTypeEnum,\n Alert: 'alert' as DocumentTypeEnum,\n BvtSample: 'bvt_sample' as DocumentTypeEnum,\n Clinicalpath: 'clinicalpath' as DocumentTypeEnum,\n Clinicalsummary: 'clinicalsummary' as DocumentTypeEnum,\n Contactreport: 'contactreport' as DocumentTypeEnum,\n Quote: 'quote' as DocumentTypeEnum,\n Invoice: 'invoice' as DocumentTypeEnum,\n Death: 'death' as DocumentTypeEnum,\n Discharge: 'discharge' as DocumentTypeEnum,\n Dischargereport: 'dischargereport' as DocumentTypeEnum,\n EbirthBabyMedicalform: 'ebirth_baby_medicalform' as DocumentTypeEnum,\n EbirthBabyNotification: 'ebirth_baby_notification' as DocumentTypeEnum,\n EbirthMotherMedicalform: 'ebirth_mother_medicalform' as DocumentTypeEnum,\n EbirthMotherNotification: 'ebirth_mother_notification' as DocumentTypeEnum,\n EcareSafeConsultation: 'ecare_safe_consultation' as DocumentTypeEnum,\n Epidemiology: 'epidemiology' as DocumentTypeEnum,\n Intervention: 'intervention' as DocumentTypeEnum,\n Labrequest: 'labrequest' as DocumentTypeEnum,\n Labresult: 'labresult' as DocumentTypeEnum,\n Medicaladvisoragreement: 'medicaladvisoragreement' as DocumentTypeEnum,\n Medicationschemeelement: 'medicationschemeelement' as DocumentTypeEnum,\n Note: 'note' as DocumentTypeEnum,\n Notification: 'notification' as DocumentTypeEnum,\n Pharmaceuticalprescription: 'pharmaceuticalprescription' as DocumentTypeEnum,\n Prescription: 'prescription' as DocumentTypeEnum,\n Productdelivery: 'productdelivery' as DocumentTypeEnum,\n Quickdischargereport: 'quickdischargereport' as DocumentTypeEnum,\n Radiationexposuremonitoring: 'radiationexposuremonitoring' as DocumentTypeEnum,\n Referral: 'referral' as DocumentTypeEnum,\n Report: 'report' as DocumentTypeEnum,\n Request: 'request' as DocumentTypeEnum,\n Result: 'result' as DocumentTypeEnum,\n Sumehr: 'sumehr' as DocumentTypeEnum,\n Telemonitoring: 'telemonitoring' as DocumentTypeEnum,\n Template: 'template' as DocumentTypeEnum,\n TemplateAdmin: 'template_admin' as DocumentTypeEnum,\n Treatmentsuspension: 'treatmentsuspension' as DocumentTypeEnum,\n Vaccination: 'vaccination' as DocumentTypeEnum,\n }\n export type DocumentStatusEnum =\n | 'draft'\n | 'finalized'\n | 'pending_review'\n | 'reviewed'\n | 'pending_signature'\n | 'signed'\n | 'canceled'\n | 'sent'\n | 'delivered'\n export const DocumentStatusEnum = {\n Draft: 'draft' as DocumentStatusEnum,\n Finalized: 'finalized' as DocumentStatusEnum,\n PendingReview: 'pending_review' as DocumentStatusEnum,\n Reviewed: 'reviewed' as DocumentStatusEnum,\n PendingSignature: 'pending_signature' as DocumentStatusEnum,\n Signed: 'signed' as DocumentStatusEnum,\n Canceled: 'canceled' as DocumentStatusEnum,\n Sent: 'sent' as DocumentStatusEnum,\n Delivered: 'delivered' as DocumentStatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DocumentGroup {\n constructor(json: JSON | any) {\n Object.assign(this as DocumentGroup, json)\n }\n\n guid?: string\n name?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { DocumentGroup } from './DocumentGroup'\n\nimport { b64_2ab } from './ModelHelper'\nexport class DocumentTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as DocumentTemplate, json, json.attachment ? { attachment: b64_2ab(json.attachment) } : {})\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n attachment?: ArrayBuffer\n /**\n * The type of document, ex: admission, clinical path, document report,invoice, etc.\n */\n documentType?: DocumentTemplate.DocumentTypeEnum\n mainUti?: string\n name?: string\n otherUtis?: Array\n attachmentId?: string\n version?: DocumentTemplate.VersionEnum\n owner?: string\n guid?: string\n group?: DocumentGroup\n descr?: string\n disabled?: string\n specialty?: CodeStub\n}\nexport namespace DocumentTemplate {\n export type DocumentTypeEnum =\n | 'admission'\n | 'alert'\n | 'bvt_sample'\n | 'clinicalpath'\n | 'clinicalsummary'\n | 'contactreport'\n | 'quote'\n | 'invoice'\n | 'death'\n | 'discharge'\n | 'dischargereport'\n | 'ebirth_baby_medicalform'\n | 'ebirth_baby_notification'\n | 'ebirth_mother_medicalform'\n | 'ebirth_mother_notification'\n | 'ecare_safe_consultation'\n | 'epidemiology'\n | 'intervention'\n | 'labrequest'\n | 'labresult'\n | 'medicaladvisoragreement'\n | 'medicationschemeelement'\n | 'note'\n | 'notification'\n | 'pharmaceuticalprescription'\n | 'prescription'\n | 'productdelivery'\n | 'quickdischargereport'\n | 'radiationexposuremonitoring'\n | 'referral'\n | 'report'\n | 'request'\n | 'result'\n | 'sumehr'\n | 'telemonitoring'\n | 'template'\n | 'template_admin'\n | 'treatmentsuspension'\n | 'vaccination'\n export const DocumentTypeEnum = {\n Admission: 'admission' as DocumentTypeEnum,\n Alert: 'alert' as DocumentTypeEnum,\n BvtSample: 'bvt_sample' as DocumentTypeEnum,\n Clinicalpath: 'clinicalpath' as DocumentTypeEnum,\n Clinicalsummary: 'clinicalsummary' as DocumentTypeEnum,\n Contactreport: 'contactreport' as DocumentTypeEnum,\n Quote: 'quote' as DocumentTypeEnum,\n Invoice: 'invoice' as DocumentTypeEnum,\n Death: 'death' as DocumentTypeEnum,\n Discharge: 'discharge' as DocumentTypeEnum,\n Dischargereport: 'dischargereport' as DocumentTypeEnum,\n EbirthBabyMedicalform: 'ebirth_baby_medicalform' as DocumentTypeEnum,\n EbirthBabyNotification: 'ebirth_baby_notification' as DocumentTypeEnum,\n EbirthMotherMedicalform: 'ebirth_mother_medicalform' as DocumentTypeEnum,\n EbirthMotherNotification: 'ebirth_mother_notification' as DocumentTypeEnum,\n EcareSafeConsultation: 'ecare_safe_consultation' as DocumentTypeEnum,\n Epidemiology: 'epidemiology' as DocumentTypeEnum,\n Intervention: 'intervention' as DocumentTypeEnum,\n Labrequest: 'labrequest' as DocumentTypeEnum,\n Labresult: 'labresult' as DocumentTypeEnum,\n Medicaladvisoragreement: 'medicaladvisoragreement' as DocumentTypeEnum,\n Medicationschemeelement: 'medicationschemeelement' as DocumentTypeEnum,\n Note: 'note' as DocumentTypeEnum,\n Notification: 'notification' as DocumentTypeEnum,\n Pharmaceuticalprescription: 'pharmaceuticalprescription' as DocumentTypeEnum,\n Prescription: 'prescription' as DocumentTypeEnum,\n Productdelivery: 'productdelivery' as DocumentTypeEnum,\n Quickdischargereport: 'quickdischargereport' as DocumentTypeEnum,\n Radiationexposuremonitoring: 'radiationexposuremonitoring' as DocumentTypeEnum,\n Referral: 'referral' as DocumentTypeEnum,\n Report: 'report' as DocumentTypeEnum,\n Request: 'request' as DocumentTypeEnum,\n Result: 'result' as DocumentTypeEnum,\n Sumehr: 'sumehr' as DocumentTypeEnum,\n Telemonitoring: 'telemonitoring' as DocumentTypeEnum,\n Template: 'template' as DocumentTypeEnum,\n TemplateAdmin: 'template_admin' as DocumentTypeEnum,\n Treatmentsuspension: 'treatmentsuspension' as DocumentTypeEnum,\n Vaccination: 'vaccination' as DocumentTypeEnum,\n }\n export type VersionEnum = 'V1_0_0'\n export const VersionEnum = {\n _0: 'V1_0_0' as VersionEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Duration {\n constructor(json: JSON | any) {\n Object.assign(this as Duration, json)\n }\n\n value?: number\n unit?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EIDItem {\n constructor(json: JSON | any) {\n Object.assign(this as EIDItem, json)\n }\n\n deviceType?: string\n readDate?: number\n readHour?: number\n readType?: string\n readvalue?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Data } from './Data'\n\nexport class Editor {\n constructor(json: JSON | any) {\n Object.assign(this as Editor, json)\n }\n\n left?: number\n top?: number\n width?: number\n height?: number\n multiline?: boolean\n labelPosition?: Editor.LabelPositionEnum\n readOnly?: boolean\n defaultValue?: Data\n key?: string\n}\nexport namespace Editor {\n export type LabelPositionEnum = 'Up' | 'Down' | 'Left' | 'Right'\n export const LabelPositionEnum = {\n Up: 'Up' as LabelPositionEnum,\n Down: 'Down' as LabelPositionEnum,\n Left: 'Left' as LabelPositionEnum,\n Right: 'Right' as LabelPositionEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { InvoiceItem } from './InvoiceItem'\nimport { Patient } from './Patient'\n\nexport class EfactInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as EfactInvoice, json)\n }\n\n patient?: Patient\n ioCode?: string\n items?: Array\n reason?: EfactInvoice.ReasonEnum\n invoiceRef?: string\n invoiceNumber?: number\n ignorePrescriptionDate?: boolean\n hospitalisedPatient?: boolean\n creditNote?: boolean\n relatedInvoiceIoCode?: string\n relatedInvoiceNumber?: number\n relatedBatchSendNumber?: number\n relatedBatchYearMonth?: number\n}\nexport namespace EfactInvoice {\n export type ReasonEnum = 'Chimiotherapy' | 'ProfessionalDisease' | 'WorkAccident' | 'Accident' | 'Other'\n export const ReasonEnum = {\n Chimiotherapy: 'Chimiotherapy' as ReasonEnum,\n ProfessionalDisease: 'ProfessionalDisease' as ReasonEnum,\n WorkAccident: 'WorkAccident' as ReasonEnum,\n Accident: 'Accident' as ReasonEnum,\n Other: 'Other' as ReasonEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Employer {\n constructor(json: JSON | any) {\n Object.assign(this as Employer, json)\n }\n\n name?: string\n addresse?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Employer } from './Employer'\n\nexport class EmploymentInfo {\n constructor(json: JSON | any) {\n Object.assign(this as EmploymentInfo, json)\n }\n\n startDate?: number\n endDate?: number\n professionType?: CodeStub\n employer?: Employer\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EntityReference {\n constructor(json: JSON | any) {\n Object.assign(this as EntityReference, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n docId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EntityTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as EntityTemplate, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n userId?: string\n descr?: string\n keywords?: Array\n entityType?: string\n subType?: string\n defaultTemplate?: boolean\n entity?: Array<{ [key: string]: any }>\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * List of episodes of occurrences of the healthcare element.\n */\nexport class Episode {\n constructor(json: JSON | any) {\n Object.assign(this as Episode, json)\n }\n\n id?: string\n name?: string\n comment?: string\n startDate?: number\n endDate?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","export class ExchangeDataMapCreationBatch {\n constructor(json: JSON | any) {\n Object.assign(this as ExchangeDataMapCreationBatch, json)\n }\n\n /**\n * Each entry of this map can be used to create a new ExchangeDataMap. Each key is the hex-encoded access control key\n * while the value is another map that associated the encrypted ExchangeData id to the fingerprint\n * of the public key used to encrypt it.\n */\n batch?: { [key: string]: { [key: string]: string } }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterCode } from './AbstractFilterCode'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainCode {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainCode, json)\n }\n\n filter?: AbstractFilterCode\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from './AbstractFilterContact'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainContact {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainContact, json)\n }\n\n filter?: AbstractFilterContact\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from './AbstractFilterDevice'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainDevice {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainDevice, json)\n }\n\n filter?: AbstractFilterDevice\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from './AbstractFilterHealthElement'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainHealthElement {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainHealthElement, json)\n }\n\n filter?: AbstractFilterHealthElement\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from './AbstractFilterHealthcareParty'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainHealthcareParty {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainHealthcareParty, json)\n }\n\n filter?: AbstractFilterHealthcareParty\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterInvoice } from './AbstractFilterInvoice'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainInvoice {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainInvoice, json)\n }\n\n filter?: AbstractFilterInvoice\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from './AbstractFilterMaintenanceTask'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainMaintenanceTask {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainMaintenanceTask, json)\n }\n\n filter?: AbstractFilterMaintenanceTask\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from './AbstractFilterPatient'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainPatient {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainPatient, json)\n }\n\n filter?: AbstractFilterPatient\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from './AbstractFilterService'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainService {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainService, json)\n }\n\n filter?: AbstractFilterService\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from './AbstractFilterUser'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainUser {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainUser, json)\n }\n\n filter?: AbstractFilterUser\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Financial information (Bank, bank account) used to reimburse the patient.\n */\nexport class FinancialInstitutionInformation {\n constructor(json: JSON | any) {\n Object.assign(this as FinancialInstitutionInformation, json)\n }\n\n name?: string\n key?: string\n bankAccount?: string\n bic?: string\n proxyBankAccount?: string\n proxyBic?: string\n preferredFiiForPartners?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Valorisation } from './Valorisation'\n\nexport class FlatRateTarification {\n constructor(json: JSON | any) {\n Object.assign(this as FlatRateTarification, json)\n }\n\n code?: string\n flatRateType?: FlatRateTarification.FlatRateTypeEnum\n label?: { [key: string]: string }\n valorisations?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace FlatRateTarification {\n export type FlatRateTypeEnum = 'physician' | 'physiotherapist' | 'nurse' | 'ptd' | 'ivgFlatRate1' | 'ivgFlatRate2' | 'ivgPersonalIntervention'\n export const FlatRateTypeEnum = {\n Physician: 'physician' as FlatRateTypeEnum,\n Physiotherapist: 'physiotherapist' as FlatRateTypeEnum,\n Nurse: 'nurse' as FlatRateTypeEnum,\n Ptd: 'ptd' as FlatRateTypeEnum,\n IvgFlatRate1: 'ivgFlatRate1' as FlatRateTypeEnum,\n IvgFlatRate2: 'ivgFlatRate2' as FlatRateTypeEnum,\n IvgPersonalIntervention: 'ivgPersonalIntervention' as FlatRateTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FlowItem {\n constructor(json: JSON | any) {\n Object.assign(this as FlowItem, json)\n }\n\n id?: string\n title?: string\n comment?: string\n receptionDate?: number\n processingDate?: number\n processer?: string\n cancellationDate?: number\n canceller?: string\n cancellationReason?: string\n cancellationNote?: string\n status?: string\n homeVisit?: boolean\n municipality?: string\n town?: string\n zipCode?: string\n street?: string\n building?: string\n buildingNumber?: string\n doorbellName?: string\n floor?: string\n letterBox?: string\n notesOps?: string\n notesContact?: string\n latitude?: string\n longitude?: string\n type?: string\n emergency?: boolean\n phoneNumber?: string\n patientId?: string\n patientLastName?: string\n patientFirstName?: string\n description?: string\n interventionCode?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class Form {\n constructor(json: JSON | any) {\n Object.assign(this as Form, json)\n }\n\n /**\n * the Id of the form. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the form in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n openingDate?: number\n status?: string\n version?: number\n logicalUuid?: string\n /**\n * Name/basic description of the form\n */\n descr?: string\n /**\n * A unique external id (from another external source).\n */\n uniqueId?: string\n /**\n * Id of the form template being used to display the form\n */\n formTemplateId?: string\n /**\n * Id of the contact for which the form is being used.\n */\n contactId?: string\n /**\n * The healthcare element to which this form is attached.\n */\n healthElementId?: string\n /**\n * The healthcare approach to which this form is attached.\n */\n planOfActionId?: string\n /**\n * The parent of this form, used to determine the forms hierarchy\n */\n parent?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormLayoutData } from './FormLayoutData'\n\nexport class FormColumn {\n constructor(json: JSON | any) {\n Object.assign(this as FormColumn, json)\n }\n\n formDataList?: Array\n columns?: string\n shouldDisplay?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FormDataOption {\n constructor(json: JSON | any) {\n Object.assign(this as FormDataOption, json)\n }\n\n key?: string\n value?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormSection } from './FormSection'\nimport { Tag } from './Tag'\n\nexport class FormLayout {\n constructor(json: JSON | any) {\n Object.assign(this as FormLayout, json)\n }\n\n name?: string\n width?: number\n height?: number\n descr?: string\n tag?: Tag\n guid?: string\n group?: string\n sections?: Array\n importedServiceXPaths?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Content } from './Content'\nimport { Editor } from './Editor'\nimport { FormDataOption } from './FormDataOption'\nimport { FormPlanning } from './FormPlanning'\nimport { Formula } from './Formula'\nimport { GuiCode } from './GuiCode'\nimport { GuiCodeType } from './GuiCodeType'\nimport { Suggest } from './Suggest'\n\nexport class FormLayoutData {\n constructor(json: JSON | any) {\n Object.assign(this as FormLayoutData, json)\n }\n\n subForm?: boolean\n irrelevant?: boolean\n determinesSscontactName?: boolean\n type?: string\n name?: string\n sortOrder?: number\n options?: { [key: string]: FormDataOption }\n descr?: string\n label?: string\n editor?: Editor\n defaultValue?: Array\n defaultStatus?: number\n suggest?: Array\n plannings?: Array\n tags?: Array\n codes?: Array\n codeTypes?: Array\n formulas?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FormPlanning {\n constructor(json: JSON | any) {\n Object.assign(this as FormPlanning, json)\n }\n\n planninfForAnyDoctor?: boolean\n planningForDelegate?: boolean\n planningForPatientDoctor?: boolean\n planningForMe?: boolean\n codedDelayInDays?: number\n repetitions?: number\n repetitionsUnit?: number\n descr?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormColumn } from './FormColumn'\n\nexport class FormSection {\n constructor(json: JSON | any) {\n Object.assign(this as FormSection, json)\n }\n\n icon?: string\n title?: string\n columns?: number\n formColumns?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { DocumentGroup } from './DocumentGroup'\nimport { FormLayout } from './FormLayout'\nimport { FormTemplateLayout } from './FormTemplateLayout'\n\nimport { b64_2ab } from './ModelHelper'\nexport class FormTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as FormTemplate, json, json.rawTemplateLayout ? { rawTemplateLayout: b64_2ab(json.rawTemplateLayout) } : {})\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object\n */\n deletionDate?: number\n layout?: FormLayout\n templateLayout?: FormTemplateLayout\n rawTemplateLayout?: ArrayBuffer\n name?: string\n guid?: string\n group?: DocumentGroup\n descr?: string\n disabled?: string\n specialty?: CodeStub\n author?: string\n formInstancePreferredLocation?: string\n keyboardShortcut?: string\n shortReport?: string\n mediumReport?: string\n longReport?: string\n reports?: Array\n tags?: Array\n layoutAttachmentId?: string\n templateLayoutAttachmentId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Section } from './Section'\n\nexport class FormTemplateLayout {\n constructor(json: JSON | any) {\n Object.assign(this as FormTemplateLayout, json)\n }\n\n form?: string\n sections?: Array
\n description?: string\n keywords?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Formula {\n constructor(json: JSON | any) {\n Object.assign(this as Formula, json)\n }\n\n value?: string\n lifecycle?: Formula.LifecycleEnum\n}\nexport namespace Formula {\n export type LifecycleEnum = 'OnCreate' | 'OnLoad' | 'OnChange' | 'OnSave' | 'OnDestroy' | 'OnLoadPropertiesEditor'\n export const LifecycleEnum = {\n OnCreate: 'OnCreate' as LifecycleEnum,\n OnLoad: 'OnLoad' as LifecycleEnum,\n OnChange: 'OnChange' as LifecycleEnum,\n OnSave: 'OnSave' as LifecycleEnum,\n OnDestroy: 'OnDestroy' as LifecycleEnum,\n OnLoadPropertiesEditor: 'OnLoadPropertiesEditor' as LifecycleEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyStub } from './PropertyStub'\n\nexport class FrontEndMigration {\n constructor(json: JSON | any) {\n Object.assign(this as FrontEndMigration, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n startDate?: number\n endDate?: number\n status?: FrontEndMigration.StatusEnum\n logs?: string\n userId?: string\n startKey?: string\n startKeyDocId?: string\n processCount?: number\n /**\n * Extra properties for the fem. Those properties are typed (see class Property)\n */\n properties?: Array\n}\nexport namespace FrontEndMigration {\n export type StatusEnum = 'STARTED' | 'PAUSED' | 'ERROR' | 'SUCCESS'\n export const StatusEnum = {\n STARTED: 'STARTED' as StatusEnum,\n PAUSED: 'PAUSED' as StatusEnum,\n ERROR: 'ERROR' as StatusEnum,\n SUCCESS: 'SUCCESS' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { OperationToken } from './OperationToken'\nimport { PropertyStub } from './PropertyStub'\nimport { UserTypeEnum } from './UserTypeEnum'\n\n/**\n * This entity represents a group\n */\nexport class Group {\n constructor(json: JSON | any) {\n Object.assign(this as Group, json)\n }\n\n /**\n * The id of the group. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the group in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * Username for the group\n */\n name?: string\n /**\n * Password for the group access\n */\n password?: string\n /**\n * List of servers accessible to the group\n */\n servers?: Array\n /**\n * Whether the group has a super admin permission, originally set to no access.\n */\n superAdmin?: boolean\n /**\n * Extra properties for the user. Those properties are typed (see class Property)\n */\n properties?: Array\n /**\n * Single-used token to perform specific operations\n */\n operationTokens?: { [key: string]: OperationToken }\n /**\n * List of entities that have to be collected from a shared database. Only Code and tarification can be set at this point.\n */\n sharedEntities?: { [key: string]: string }\n superGroup?: string\n defaultUserRoles?: { [key in UserTypeEnum]: Array }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DatabaseInfo } from './DatabaseInfo'\n\nexport class GroupDatabasesInfo {\n constructor(json: JSON | any) {\n Object.assign(this as GroupDatabasesInfo, json)\n }\n\n groupId?: string\n databasesInfo?: Array\n gcpStorageSize?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GroupDeletionReport {\n constructor(json: JSON | any) {\n Object.assign(this as GroupDeletionReport, json)\n }\n\n type?: string\n id?: string\n server?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GuiCode {\n constructor(json: JSON | any) {\n Object.assign(this as GuiCode, json)\n }\n\n type?: string\n code?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GuiCodeType {\n constructor(json: JSON | any) {\n Object.assign(this as GuiCodeType, json)\n }\n\n type?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CareTeamMember } from './CareTeamMember'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Episode } from './Episode'\nimport { Identifier } from './Identifier'\nimport { PlanOfAction } from './PlanOfAction'\nimport { Annotation } from './Annotation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\n/**\n * This entity is a root level object. It represents a healthcare element. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nexport class HealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as HealthElement, json)\n }\n\n /**\n * The Id of the healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n identifiers?: Array\n /**\n * The revision of the healthcare element in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The logical id of the healthcare element, used to link together different versions of the same healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n healthElementId?: string\n /**\n * The date (unix epoch in ms) when the healthcare element is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (unix epoch in ms) of the start of the healthcare element.\n */\n openingDate?: number\n /**\n * The date (unix epoch in ms) marking the end of the healthcare element.\n */\n closingDate?: number\n /**\n * Description of the healthcare element.\n */\n descr?: string\n /**\n * A text note (can be confidential, encrypted by default).\n * @deprecated Use notes instead\n */\n note?: string\n\n /**\n * Localized text notes (can be confidential, encrypted by default).\n */\n notes?: Annotation[]\n\n /**\n * If the healthcare element is relevant or not (Set relevant by default).\n */\n relevant?: boolean\n /**\n * Id of the opening contact when the healthcare element was created.\n */\n idOpeningContact?: string\n /**\n * Id of the closing contact for the healthcare element.\n */\n idClosingContact?: string\n /**\n * Id of the service when a service is used to create a healthcare element.\n */\n idService?: string\n /**\n * bit 0: active/inactive, bit 1: relevant/irrelevant, bit 2 : present/absent, ex: 0 = active,relevant and present\n */\n status?: number\n /**\n * Left or Right dominance/preference.\n */\n laterality?: HealthElement.LateralityEnum\n /**\n * List of healthcare approaches.\n */\n plansOfAction?: Array\n /**\n * List of episodes of occurrences of the healthcare element.\n */\n episodes?: Array\n /**\n * List of care team members assigned for the healthcare element.\n */\n careTeam?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\nexport namespace HealthElement {\n export type LateralityEnum = 'left' | 'right'\n export const LateralityEnum = {\n Left: 'left' as LateralityEnum,\n Right: 'right' as LateralityEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CodeStub } from './CodeStub'\nimport { FinancialInstitutionInformation } from './FinancialInstitutionInformation'\nimport { FlatRateTarification } from './FlatRateTarification'\nimport { HealthcarePartyHistoryStatus } from './HealthcarePartyHistoryStatus'\nimport { Identifier } from './Identifier'\nimport { PersonName } from './PersonName'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity is a root level object. It represents a healthcare party. It is serialized in JSON and saved in the underlying icure-healthdata CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nimport { Patient } from './Patient'\nexport class HealthcareParty {\n constructor(json: JSON | any) {\n let pictureData: { picture?: ArrayBuffer } = {}\n if (!!json.picture) {\n if (typeof json.picture === 'string') {\n pictureData.picture = b64_2ab(json.picture)\n } else if (json.picture instanceof ArrayBuffer || ArrayBuffer.isView(json.picture)) {\n pictureData.picture = json.picture\n } else {\n throw new Error(`Invalid type for picture: ${typeof json.picture}`)\n }\n }\n Object.assign(this as Patient, json, pictureData)\n }\n\n /**\n * the Id of the healthcare party. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the healthcare party in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * creation timestamp of the object.\n */\n created?: number\n /**\n * last modification timestamp of the object.\n */\n modified?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The healthcareparty's identifiers, used by the client to identify uniquely and unambiguously the HCP. However, iCure may not guarantee this uniqueness by itself : This should be done at the client side.\n */\n identifier?: Array\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * The full name of the healthcare party, used mainly when the healthcare party is an organization\n */\n name?: string\n /**\n * the lastname (surname) of the healthcare party. This is the official lastname that should be used for official administrative purposes.\n */\n lastName?: string\n /**\n * the firstname (name) of the healthcare party.\n */\n firstName?: string\n /**\n * the list of all names of the healthcare party, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the healthcare party in the application\n */\n names?: Array\n /**\n * the gender of the healthcare party: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n gender?: HealthcareParty.GenderEnum\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n civility?: string\n /**\n * The name of the company this healthcare party is member of\n */\n companyName?: string\n /**\n * Medical specialty of the healthcare party\n */\n speciality?: string\n /**\n * Bank Account identifier of the healhtcare party, IBAN, deprecated, use financial institutions instead\n */\n bankAccount?: string\n /**\n * Bank Identifier Code, the SWIFT Address assigned to the bank, use financial institutions instead\n */\n bic?: string\n proxyBankAccount?: string\n proxyBic?: string\n /**\n * All details included in the invoice header\n */\n invoiceHeader?: string\n /**\n * Identifier number for institution type if the healthcare party is an enterprise\n */\n cbe?: string\n /**\n * Identifier number for the institution if the healthcare party is an organization\n */\n ehp?: string\n /**\n * The id of the user that usually handles this healthcare party.\n */\n userId?: string\n /**\n * Id of parent of the user representing the healthcare party.\n */\n parentId?: string\n convention?: number\n /**\n * National Institute for Health and Invalidity Insurance number assigned to healthcare parties (institution or person).\n */\n nihii?: string\n nihiiSpecCode?: string\n /**\n * Social security inscription number.\n */\n ssin?: string\n /**\n * The list of addresses (with address type).\n */\n addresses?: Array
\n /**\n * The list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n languages?: Array\n /**\n * A picture usually saved in JPEG format.\n */\n picture?: ArrayBuffer\n /**\n * The healthcare party's status: 'trainee' or 'withconvention' or 'accredited'\n */\n statuses?: Array\n /**\n * The healthcare party's status history\n */\n statusHistory?: Array\n /**\n * Medical specialty of the healthcare party codified using FHIR or Kmehr codificaiton scheme\n */\n specialityCodes?: Array\n /**\n * The type of format for contacting the healthcare party, ex: mobile, phone, email, etc.\n */\n sendFormats?: { [key: string]: string }\n /**\n * Text notes.\n */\n notes?: string\n /**\n * List of financial information (Bank, bank account).\n */\n financialInstitutionInformation?: Array\n /**\n * A description of the HCP, meant for the public and in multiple languages.\n */\n descr?: { [key: string]: string }\n /**\n * The invoicing scheme this healthcare party adheres to : 'service fee' or 'flat rate'\n */\n billingType?: string\n type?: string\n contactPerson?: string\n contactPersonHcpId?: string\n supervisorId?: string\n flatRateTarifications?: Array\n importedData?: { [key: string]: string }\n options?: { [key: string]: string }\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * The public keys of this actor that are generates using the OAEP Sha-256 standard\n */\n publicKeysForOaepWithSha256?: Array\n}\nexport namespace HealthcareParty {\n export type GenderEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const GenderEnum = {\n Male: 'male' as GenderEnum,\n Female: 'female' as GenderEnum,\n Indeterminate: 'indeterminate' as GenderEnum,\n Changed: 'changed' as GenderEnum,\n ChangedToMale: 'changedToMale' as GenderEnum,\n ChangedToFemale: 'changedToFemale' as GenderEnum,\n Unknown: 'unknown' as GenderEnum,\n }\n export type StatusesEnum = 'trainee' | 'withconvention' | 'accreditated'\n export const StatusesEnum = {\n Trainee: 'trainee' as StatusesEnum,\n Withconvention: 'withconvention' as StatusesEnum,\n Accreditated: 'accreditated' as StatusesEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * The healthcare party's status history\n */\nexport class HealthcarePartyHistoryStatus {\n constructor(json: JSON | any) {\n Object.assign(this as HealthcarePartyHistoryStatus, json)\n }\n\n status?: HealthcarePartyHistoryStatus.StatusEnum\n specialisationCode?: string\n startDate?: number\n active?: boolean\n}\nexport namespace HealthcarePartyHistoryStatus {\n export type StatusEnum = 'trainee' | 'withconvention' | 'accreditated'\n export const StatusEnum = {\n Trainee: 'trainee' as StatusEnum,\n Withconvention: 'withconvention' as StatusEnum,\n Accreditated: 'accreditated' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\n\nexport class IcureStub {\n constructor(json: JSON | any) {\n Object.assign(this as IcureStub, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IdWithRev {\n constructor(json: JSON | any) {\n Object.assign(this as IdWithRev, json)\n }\n\n id?: string\n rev?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Identifier {\n constructor(json: JSON | any) {\n Object.assign(this as Identifier, json)\n }\n\n id?: string\n assigner?: string\n start?: string\n end?: string\n system?: string\n type?: CodeStub\n use?: string\n value?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IdentityDocumentReader {\n constructor(json: JSON | any) {\n Object.assign(this as IdentityDocumentReader, json)\n }\n\n justificatifDocumentNumber?: string\n supportSerialNumber?: string\n timeReadingEIdDocument?: number\n eidDocumentSupportType?: number\n reasonManualEncoding?: number\n reasonUsingVignette?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class ImportMapping {\n constructor(json: JSON | any) {\n Object.assign(this as ImportMapping, json)\n }\n\n lifecycle?: string\n content?: string\n cdLocal?: string\n label?: { [key: string]: string }\n tags?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Contact } from './Contact'\nimport { Document } from './Document'\nimport { Form } from './Form'\nimport { HealthElement } from './HealthElement'\nimport { HealthcareParty } from './HealthcareParty'\nimport { MimeAttachment } from './MimeAttachment'\nimport { Patient } from './Patient'\n\nexport class ImportResult {\n constructor(json: JSON | any) {\n Object.assign(this as ImportResult, json)\n }\n\n patient?: Patient\n hes?: Array\n ctcs?: Array\n warnings?: Array\n errors?: Array\n forms?: Array\n hcps?: Array\n documents?: Array\n attachments?: { [key: string]: MimeAttachment }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class IncapacityExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as IncapacityExportInfo, json)\n }\n\n recipient?: HealthcareParty\n comment?: string\n incapacityId?: string\n notificationDate?: number\n retraction?: boolean\n dataset?: string\n transactionType?: string\n incapacityreason?: string\n beginmoment?: number\n endmoment?: number\n outofhomeallowed?: boolean\n incapWork?: boolean\n incapSchool?: boolean\n incapSwim?: boolean\n incapSchoolsports?: boolean\n incapHeavyphysicalactivity?: boolean\n diagnoseServices?: Array\n jobstatus?: string\n job?: string\n occupationalDiseaseDeclDate?: number\n accidentDate?: number\n expectedbirthgivingDate?: number\n maternityleaveBegin?: number\n maternityleaveEnd?: number\n hospitalisationBegin?: number\n hospitalisationEnd?: number\n hospital?: HealthcareParty\n contactPersonTel?: string\n recoveryAddress?: Address\n foreignStayBegin?: number\n foreignStayEnd?: number\n softwareName?: string\n softwareVersion?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IndexingInfo {\n constructor(json: JSON | any) {\n Object.assign(this as IndexingInfo, json)\n }\n\n statuses?: { [key: string]: number }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Quantity } from './Quantity'\nimport { SubstanceStub } from './SubstanceStub'\nimport { SamText } from './SamText'\nimport { ComplexStrength } from './ComplexStrength'\n\nexport class Ingredient {\n constructor(json: JSON | any) {\n Object.assign(this as Ingredient, json)\n }\n\n from?: number\n to?: number\n rank?: number\n type?: Ingredient.TypeEnum\n knownEffect?: boolean\n strengthDescription?: string\n strength?: ComplexStrength\n additionalInformation?: SamText\n substance?: SubstanceStub\n}\nexport namespace Ingredient {\n export type TypeEnum = 'ACTIVE_SUBSTANCE' | 'EXCIPIENT'\n export const TypeEnum = {\n ACTIVESUBSTANCE: 'ACTIVE_SUBSTANCE' as TypeEnum,\n EXCIPIENT: 'EXCIPIENT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * This class represents a coverage of a patient by an insurance during a period or time.\n */\nexport class Insurability {\n constructor(json: JSON | any) {\n Object.assign(this as Insurability, json)\n }\n\n /**\n * Insurance extra parameters.\n */\n parameters?: { [key: string]: string }\n /**\n * Is hospitalization covered.\n */\n hospitalisation?: boolean\n /**\n * Is outpatient care covered.\n */\n ambulatory?: boolean\n /**\n * Is dental care covered.\n */\n dental?: boolean\n /**\n * Identification number of the patient at the insurance.\n */\n identificationNumber?: string\n /**\n * Id of the Insurance.\n */\n insuranceId?: string\n /**\n * Start date of the coverage (YYYYMMDD).\n */\n startDate?: number\n /**\n * End date of the coverage (YYYYMMDD).\n */\n endDate?: number\n /**\n * UUID of the contact person who is the policyholder of the insurance (when the patient is covered by the insurance of a third person).\n */\n titularyId?: string\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Insurance {\n constructor(json: JSON | any) {\n Object.assign(this as Insurance, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: { [key: string]: string }\n privateInsurance?: boolean\n hospitalisationInsurance?: boolean\n ambulatoryInsurance?: boolean\n code?: string\n agreementNumber?: string\n parent?: string\n address?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { IdentityDocumentReader } from './IdentityDocumentReader'\nimport { InvoicingCode } from './InvoicingCode'\nimport { Payment } from './Payment'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\n/**\n * This entity is a root level object. It represents an Invoice. It is serialized in JSON and saved in the underlying iCure CouchDB database.\n */\nexport class Invoice {\n constructor(json: JSON | any) {\n Object.assign(this as Invoice, json)\n }\n\n /**\n * The Id of the Invoice. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the invoice in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice was drafted, will be filled automatically if missing. Not enforced by the application server.\n */\n invoiceDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice was sent, will be filled automatically if missing. Not enforced by the application server.\n */\n sentDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice is printed, will be filled automatically if missing. Not enforced by the application server.\n */\n printedDate?: number\n invoicingCodes?: Array\n receipts?: { [key: string]: string }\n /**\n * The type of user that receives the invoice, a patient or a healthcare party\n */\n recipientType?: string\n /**\n * Id of the recipient of the invoice. For healthcare party and insurance, patient link happens through secretForeignKeys\n */\n recipientId?: string\n invoiceReference?: string\n thirdPartyReference?: string\n thirdPartyPaymentJustification?: string\n thirdPartyPaymentReason?: string\n reason?: string\n /**\n * The format the invoice should follow based on the recipient which could be a patient, mutual fund or paying agency such as the CPAS\n */\n invoiceType?: Invoice.InvoiceTypeEnum\n /**\n * Medium of the invoice: CD ROM, Email, paper, etc.\n */\n sentMediumType?: Invoice.SentMediumTypeEnum\n interventionType?: Invoice.InterventionTypeEnum\n groupId?: string\n /**\n * Type of payment, ex: cash, wired, insurance, debit card, etc.\n */\n paymentType?: Invoice.PaymentTypeEnum\n paid?: number\n payments?: Array\n gnotionNihii?: string\n gnotionSsin?: string\n gnotionLastName?: string\n gnotionFirstName?: string\n gnotionCdHcParty?: string\n invoicePeriod?: number\n careProviderType?: string\n internshipNihii?: string\n internshipSsin?: string\n internshipLastName?: string\n internshipFirstName?: string\n internshipCdHcParty?: string\n internshipCbe?: string\n supervisorNihii?: string\n supervisorSsin?: string\n supervisorLastName?: string\n supervisorFirstName?: string\n supervisorCdHcParty?: string\n supervisorCbe?: string\n error?: string\n encounterLocationName?: string\n encounterLocationNihii?: string\n encounterLocationNorm?: number\n longDelayJustification?: number\n correctiveInvoiceId?: string\n correctedInvoiceId?: string\n creditNote?: boolean\n creditNoteRelatedInvoiceId?: string\n idDocument?: IdentityDocumentReader\n admissionDate?: number\n locationNihii?: string\n locationService?: number\n cancelReason?: string\n cancelDate?: number\n options?: { [key: string]: string }\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\nexport namespace Invoice {\n export type InvoiceTypeEnum = 'patient' | 'mutualfund' | 'payingagency' | 'insurance' | 'efact' | 'other'\n export const InvoiceTypeEnum = {\n Patient: 'patient' as InvoiceTypeEnum,\n Mutualfund: 'mutualfund' as InvoiceTypeEnum,\n Payingagency: 'payingagency' as InvoiceTypeEnum,\n Insurance: 'insurance' as InvoiceTypeEnum,\n Efact: 'efact' as InvoiceTypeEnum,\n Other: 'other' as InvoiceTypeEnum,\n }\n export type SentMediumTypeEnum = 'cdrom' | 'eattest' | 'efact' | 'email' | 'mediprima' | 'paper' | 'stat'\n export const SentMediumTypeEnum = {\n Cdrom: 'cdrom' as SentMediumTypeEnum,\n Eattest: 'eattest' as SentMediumTypeEnum,\n Efact: 'efact' as SentMediumTypeEnum,\n Email: 'email' as SentMediumTypeEnum,\n Mediprima: 'mediprima' as SentMediumTypeEnum,\n Paper: 'paper' as SentMediumTypeEnum,\n Stat: 'stat' as SentMediumTypeEnum,\n }\n export type InterventionTypeEnum = 'total' | 'userfees'\n export const InterventionTypeEnum = {\n Total: 'total' as InterventionTypeEnum,\n Userfees: 'userfees' as InterventionTypeEnum,\n }\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EIDItem } from './EIDItem'\n\nexport class InvoiceItem {\n constructor(json: JSON | any) {\n Object.assign(this as InvoiceItem, json)\n }\n\n dateCode?: number\n codeNomenclature?: number\n relatedCode?: number\n eidItem?: EIDItem\n insuranceRef?: string\n insuranceRefDate?: number\n units?: number\n reimbursedAmount?: number\n patientFee?: number\n doctorSupplement?: number\n sideCode?: InvoiceItem.SideCodeEnum\n timeOfDay?: InvoiceItem.TimeOfDayEnum\n override3rdPayerCode?: number\n gnotionNihii?: string\n derogationMaxNumber?: InvoiceItem.DerogationMaxNumberEnum\n prescriberNorm?: InvoiceItem.PrescriberNormEnum\n prescriberNihii?: string\n prescriptionDate?: number\n personalInterventionCoveredByThirdPartyCode?: number\n doctorIdentificationNumber?: string\n invoiceRef?: string\n percentNorm?: InvoiceItem.PercentNormEnum\n}\nexport namespace InvoiceItem {\n export type SideCodeEnum = 'None' | 'Left' | 'Right'\n export const SideCodeEnum = {\n None: 'None' as SideCodeEnum,\n Left: 'Left' as SideCodeEnum,\n Right: 'Right' as SideCodeEnum,\n }\n export type TimeOfDayEnum = 'Other' | 'Night' | 'Weekend' | 'Bankholiday' | 'Urgent'\n export const TimeOfDayEnum = {\n Other: 'Other' as TimeOfDayEnum,\n Night: 'Night' as TimeOfDayEnum,\n Weekend: 'Weekend' as TimeOfDayEnum,\n Bankholiday: 'Bankholiday' as TimeOfDayEnum,\n Urgent: 'Urgent' as TimeOfDayEnum,\n }\n export type DerogationMaxNumberEnum =\n | 'Other'\n | 'DerogationMaxNumber'\n | 'OtherPrescription'\n | 'SecondPrestationOfDay'\n | 'ThirdAndNextPrestationOfDay'\n export const DerogationMaxNumberEnum = {\n Other: 'Other' as DerogationMaxNumberEnum,\n DerogationMaxNumber: 'DerogationMaxNumber' as DerogationMaxNumberEnum,\n OtherPrescription: 'OtherPrescription' as DerogationMaxNumberEnum,\n SecondPrestationOfDay: 'SecondPrestationOfDay' as DerogationMaxNumberEnum,\n ThirdAndNextPrestationOfDay: 'ThirdAndNextPrestationOfDay' as DerogationMaxNumberEnum,\n }\n export type PrescriberNormEnum = 'None' | 'OnePrescriber' | 'SelfPrescriber' | 'AddedCode' | 'ManyPrescribers'\n export const PrescriberNormEnum = {\n None: 'None' as PrescriberNormEnum,\n OnePrescriber: 'OnePrescriber' as PrescriberNormEnum,\n SelfPrescriber: 'SelfPrescriber' as PrescriberNormEnum,\n AddedCode: 'AddedCode' as PrescriberNormEnum,\n ManyPrescribers: 'ManyPrescribers' as PrescriberNormEnum,\n }\n export type PercentNormEnum =\n | 'None'\n | 'SurgicalAid1'\n | 'SurgicalAid2'\n | 'ReducedFee'\n | 'Ah1n1'\n | 'HalfPriceSecondAct'\n | 'InvoiceException'\n | 'ForInformation'\n export const PercentNormEnum = {\n None: 'None' as PercentNormEnum,\n SurgicalAid1: 'SurgicalAid1' as PercentNormEnum,\n SurgicalAid2: 'SurgicalAid2' as PercentNormEnum,\n ReducedFee: 'ReducedFee' as PercentNormEnum,\n Ah1n1: 'Ah1n1' as PercentNormEnum,\n HalfPriceSecondAct: 'HalfPriceSecondAct' as PercentNormEnum,\n InvoiceException: 'InvoiceException' as PercentNormEnum,\n ForInformation: 'ForInformation' as PercentNormEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class InvoiceSender {\n constructor(json: JSON | any) {\n Object.assign(this as InvoiceSender, json)\n }\n\n nihii?: number\n bic?: string\n iban?: string\n bce?: number\n ssin?: string\n lastName?: string\n firstName?: string\n phoneNumber?: number\n conventionCode?: number\n isSpecialist?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EfactInvoice } from './EfactInvoice'\nimport { InvoiceSender } from './InvoiceSender'\n\nexport class InvoicesBatch {\n constructor(json: JSON | any) {\n Object.assign(this as InvoicesBatch, json)\n }\n\n invoicingYear?: number\n invoicingMonth?: number\n fileRef?: string\n batchRef?: string\n ioFederationCode?: string\n uniqueSendNumber?: number\n sender?: InvoiceSender\n numericalRef?: number\n invoices?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class InvoicingCode {\n constructor(json: JSON | any) {\n Object.assign(this as InvoicingCode, json)\n }\n\n id?: string\n dateCode?: number\n logicalId?: string\n label?: string\n userId?: string\n contactId?: string\n serviceId?: string\n tarificationId?: string\n code?: string\n paymentType?: InvoicingCode.PaymentTypeEnum\n paid?: number\n totalAmount?: number\n reimbursement?: number\n patientIntervention?: number\n doctorSupplement?: number\n conventionAmount?: number\n vat?: number\n error?: string\n contract?: string\n contractDate?: number\n units?: number\n side?: number\n timeOfDay?: number\n eidReadingHour?: number\n eidReadingValue?: string\n override3rdPayerCode?: number\n override3rdPayerReason?: string\n transplantationCode?: number\n prescriberNorm?: number\n percentNorm?: number\n prescriberNihii?: string\n relatedCode?: string\n prescriptionDate?: number\n derogationMaxNumber?: number\n prescriberSsin?: string\n prescriberLastName?: string\n prescriberFirstName?: string\n prescriberCdHcParty?: string\n locationNihii?: string\n locationCdHcParty?: string\n locationService?: number\n admissionDate?: number\n canceled?: boolean\n accepted?: boolean\n pending?: boolean\n resent?: boolean\n archived?: boolean\n lost?: boolean\n insuranceJustification?: number\n cancelPatientInterventionReason?: number\n status?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace InvoicingCode {\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { KeywordSubword } from './KeywordSubword'\n\nexport class Keyword {\n constructor(json: JSON | any) {\n Object.assign(this as Keyword, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n value?: string\n subWords?: Array\n userId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class KeywordSubword {\n constructor(json: JSON | any) {\n Object.assign(this as KeywordSubword, json)\n }\n\n value?: string\n subWords?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LabelledOccurence {\n constructor(json: JSON | any) {\n Object.assign(this as LabelledOccurence, json)\n }\n\n label?: string\n occurence?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LetterValue {\n constructor(json: JSON | any) {\n Object.assign(this as LetterValue, json)\n }\n\n letter?: string\n index?: string\n coefficient?: number\n value?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * The ids of databases to reset\n */\nexport class ListOfIds {\n constructor(json: JSON | any) {\n Object.assign(this as ListOfIds, json)\n }\n\n ids?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * The new properties for the group\n */\nexport class ListOfProperties {\n constructor(json: JSON | any) {\n Object.assign(this as ListOfProperties, json)\n }\n\n properties?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LoginCredentials {\n constructor(json: JSON | any) {\n Object.assign(this as LoginCredentials, json)\n }\n\n username?: string\n password?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\nimport { PropertyStub } from './PropertyStub'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class MaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as MaintenanceTask, json)\n }\n\n id?: string\n rev?: string\n identifier?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n taskType?: MaintenanceTask.TaskTypeEnum\n properties?: Array\n status?: MaintenanceTask.StatusEnum\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n}\nexport namespace MaintenanceTask {\n export enum StatusEnum {\n Pending = 'pending',\n Ongoing = 'ongoing',\n Cancelled = 'cancelled',\n Completed = 'completed',\n }\n export enum TaskTypeEnum {\n KeyPairUpdate = 'KEY_PAIR_UPDATE',\n NewUserOwnDataAccess = 'NEW_USER_OWN_DATA_ACCESS',\n Other = 'OTHER',\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class MapOfIds {\n constructor(json: JSON | any) {\n Object.assign(this as MapOfIds, json)\n }\n\n mapOfIds?: { [key: string]: Array }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport {ReferenceRange} from \"./ReferenceRange\"\n\nexport class Measure {\n /**\n * We delete min and max from the json and create a referenceRanges from it\n * Since this is a shallow copy, deletion of min and max will have no effect on the original json since it's the top level fields\n *\n * @param json\n */\n constructor(json: JSON | any) {\n const measureValue = {...json}\n\n if (!!measureValue?.min || !!measureValue?.max) {\n measureValue.referenceRanges = [\n new ReferenceRange({\n low: measureValue.min,\n high: measureValue.max\n })\n ]\n delete measureValue?.min\n delete measureValue?.max\n }\n\n Object.assign(this as Measure, measureValue)\n }\n\n value?: number\n ref?: number\n severity?: number\n severityCode?: string\n evolution?: number\n unit?: string\n sign?: string\n unitCodes?: Array\n comment?: string\n comparator?: string\n /**\n * Reference range for the measure\n */\n referenceRanges?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Patient } from './Patient'\n\nexport class MedexInfo {\n constructor(json: JSON | any) {\n Object.assign(this as MedexInfo, json)\n }\n\n beginDate?: number\n endDate?: number\n author?: HealthcareParty\n patient?: Patient\n patientLanguage?: string\n incapacityType?: string\n incapacityReason?: string\n outOfHomeAllowed?: boolean\n certificateDate?: number\n contentDate?: number\n diagnosisICPC?: string\n diagnosisICD?: string\n diagnosisDescr?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Contracts between the patient and the healthcare entity.\n */\nexport class MedicalHouseContract {\n constructor(json: JSON | any) {\n Object.assign(this as MedicalHouseContract, json)\n }\n\n contractId?: string\n validFrom?: number\n validTo?: number\n mmNihii?: string\n hcpId?: string\n changeType?: MedicalHouseContract.ChangeTypeEnum\n parentContractId?: string\n changedBy?: string\n startOfContract?: number\n startOfCoverage?: number\n endOfContract?: number\n endOfCoverage?: number\n kine?: boolean\n gp?: boolean\n ptd?: boolean\n nurse?: boolean\n noKine?: boolean\n noGp?: boolean\n noNurse?: boolean\n unsubscriptionReasonId?: number\n ptdStart?: number\n ptdEnd?: number\n ptdLastInvoiced?: number\n startOfSuspension?: number\n endOfSuspension?: number\n suspensionReason?: MedicalHouseContract.SuspensionReasonEnum\n suspensionSource?: string\n forcedSuspension?: boolean\n signatureType?: MedicalHouseContract.SignatureTypeEnum\n status?: number\n options?: { [key: string]: string }\n receipts?: { [key: string]: string }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace MedicalHouseContract {\n export type ChangeTypeEnum = 'inscriptionStart' | 'inscriptionEnd' | 'suspension' | 'coverageChange'\n export const ChangeTypeEnum = {\n InscriptionStart: 'inscriptionStart' as ChangeTypeEnum,\n InscriptionEnd: 'inscriptionEnd' as ChangeTypeEnum,\n Suspension: 'suspension' as ChangeTypeEnum,\n CoverageChange: 'coverageChange' as ChangeTypeEnum,\n }\n export type SuspensionReasonEnum = 'notInsured' | 'noReasonGiven' | 'isHospitalized' | 'outsideOfCountry' | 'changeOfMutuality'\n export const SuspensionReasonEnum = {\n NotInsured: 'notInsured' as SuspensionReasonEnum,\n NoReasonGiven: 'noReasonGiven' as SuspensionReasonEnum,\n IsHospitalized: 'isHospitalized' as SuspensionReasonEnum,\n OutsideOfCountry: 'outsideOfCountry' as SuspensionReasonEnum,\n ChangeOfMutuality: 'changeOfMutuality' as SuspensionReasonEnum,\n }\n export type SignatureTypeEnum = 'holderEid' | 'holderPaper' | 'legalrepresentativeEid' | 'legalrepresentativePaper'\n export const SignatureTypeEnum = {\n HolderEid: 'holderEid' as SignatureTypeEnum,\n HolderPaper: 'holderPaper' as SignatureTypeEnum,\n LegalrepresentativeEid: 'legalrepresentativeEid' as SignatureTypeEnum,\n LegalrepresentativePaper: 'legalrepresentativePaper' as SignatureTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class MedicalLocation {\n constructor(json: JSON | any) {\n Object.assign(this as MedicalLocation, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n description?: string\n responsible?: string\n guardPost?: boolean\n cbe?: string\n bic?: string\n bankAccount?: string\n nihii?: string\n ssin?: string\n address?: Address\n agendaIds?: Array\n options?: { [key: string]: string }\n publicInformations?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Duration } from './Duration'\nimport { Medicinalproduct } from './Medicinalproduct'\nimport { ParagraphAgreement } from './ParagraphAgreement'\nimport { RegimenItem } from './RegimenItem'\nimport { Renewal } from './Renewal'\nimport { Substanceproduct } from './Substanceproduct'\nimport { Suspension } from './Suspension'\n\n/**\n * The details of prescribed or suggested medication\n */\nexport class Medication {\n constructor(json: JSON | any) {\n Object.assign(this as Medication, json)\n }\n\n compoundPrescription?: string\n substanceProduct?: Substanceproduct\n medicinalProduct?: Medicinalproduct\n numberOfPackages?: number\n batch?: string\n /**\n * The expiration date of the medication. Format: yyyyMMdd\n */\n expirationDate?: number\n instructionForPatient?: string\n instructionForReimbursement?: string\n commentForDelivery?: string\n drugRoute?: string\n temporality?: string\n frequency?: CodeStub\n reimbursementReason?: CodeStub\n substitutionAllowed?: boolean\n beginMoment?: number\n endMoment?: number\n deliveryMoment?: number\n endExecutionMoment?: number\n duration?: Duration\n renewal?: Renewal\n knownUsage?: boolean\n regimen?: Array\n posology?: string\n options?: { [key: string]: Content }\n agreements?: { [key: string]: ParagraphAgreement }\n medicationSchemeIdOnSafe?: string\n medicationSchemeSafeVersion?: number\n medicationSchemeTimeStampOnSafe?: number\n medicationSchemeDocumentId?: string\n safeIdName?: string\n idOnSafes?: string\n timestampOnSafe?: number\n changeValidated?: boolean\n newSafeMedication?: boolean\n medicationUse?: string\n beginCondition?: string\n endCondition?: string\n origin?: string\n medicationChanged?: boolean\n posologyChanged?: boolean\n suspension?: Array\n prescriptionRID?: string\n status?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class MedicationSchemeExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as MedicationSchemeExportInfo, json)\n }\n\n secretForeignKeys?: Array\n services?: Array\n serviceAuthors?: Array\n recipient?: HealthcareParty\n comment?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Medicinalproduct {\n constructor(json: JSON | any) {\n Object.assign(this as Medicinalproduct, json)\n }\n\n intendedcds?: Array\n deliveredcds?: Array\n intendedname?: string\n deliveredname?: string\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { MessageReadStatus } from './MessageReadStatus'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport {MessageAttachment} from \"./MessageAttachment\"\n\n/**\n * This entity is a root level object. It represents a Message. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nexport class Message {\n constructor(json: JSON | any) {\n Object.assign(this as Message, json)\n }\n\n /**\n * The ID of the message. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the message in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Address of the sender of the message\n */\n fromAddress?: string\n /**\n * ID of the healthcare party sending the message\n */\n fromHealthcarePartyId?: string\n formId?: string\n /**\n * Status of the message\n */\n status?: number\n /**\n * The type of user who is the recipient of this message\n */\n recipientsType?: string\n /**\n * List of IDs of healthcare parties to whom the message is addressed\n */\n recipients?: Array\n /**\n * The address of the recipient of the message. Format is of an email address with extra domains defined for mycarenet and ehealth: (efact.mycarenet.be/eattest.mycarenet.be/chapter4.mycarenet.be/ehbox.ehealth.fgov.be)\n */\n toAddresses?: Array\n /**\n * The timestamp (unix epoch in ms) when the message was received\n */\n received?: number\n /**\n * The timestamp (unix epoch in ms) when the message was sent\n */\n sent?: number\n metas?: { [key: string]: string }\n /**\n * Status showing whether the message is read or not and the time of reading\n */\n readStatus?: { [key: string]: MessageReadStatus }\n /**\n * Attachments of the message\n */\n messageAttachments?: MessageAttachment[]\n transportGuid?: string\n remark?: string\n conversationGuid?: string\n /**\n * Subject for the message\n */\n subject?: string\n /**\n * Set of IDs for invoices in the message\n */\n invoiceIds?: Array\n /**\n * ID of a parent in a message conversation\n */\n parentId?: string\n externalRef?: string\n unassignedResults?: Array\n assignedResults?: { [key: string]: string }\n senderReferences?: { [key: string]: string }\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","import {Document} from \"./Document\"\nimport DocumentLocationEnum = Document.DocumentLocationEnum\n\n\nexport class MessageAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as MessageAttachment, json)\n }\n\n type?: DocumentLocationEnum\n /**\n * Ids of this attachment ordered from oldest to newest\n */\n ids?: string[]\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Status showing whether the message is read or not and the time of reading\n */\nexport class MessageReadStatus {\n constructor(json: JSON | any) {\n Object.assign(this as MessageReadStatus, json)\n }\n\n time?: number\n read?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { InvoicesBatch } from './InvoicesBatch'\nimport { Message } from './Message'\n\nexport class MessageWithBatch {\n constructor(json: JSON | any) {\n Object.assign(this as MessageWithBatch, json)\n }\n\n invoicesBatch?: InvoicesBatch\n message?: Message\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class MessagesReadStatusUpdate {\n constructor(json: JSON | any) {\n Object.assign(this as MessagesReadStatusUpdate, json)\n }\n\n ids?: Array\n time?: number\n status?: boolean\n userId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class MikronoAppointmentTypeRest {\n constructor(json: JSON | any) {\n Object.assign(this as MikronoAppointmentTypeRest, json)\n }\n\n color?: string\n durationInMinutes?: number\n externalRef?: string\n mikronoId?: string\n docIds?: Array\n otherInfos?: { [key: string]: string }\n subjectByLanguage?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { b64_2ab } from './ModelHelper'\nexport class MimeAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as MimeAttachment, json, json.data ? { data: b64_2ab(json.data) } : {})\n }\n\n data?: ArrayBuffer\n fileName?: string\n mimeType?: string\n}\n","export function ua2string(_ua: Uint8Array | ArrayBuffer): string {\n let str = ''\n const ab = new Uint8Array(_ua)\n const abLen = ab.length\n const CHUNK_SIZE = Math.pow(2, 8)\n let offset, len, subab\n for (offset = 0; offset < abLen; offset += CHUNK_SIZE) {\n len = Math.min(CHUNK_SIZE, abLen - offset)\n subab = ab.subarray(offset, offset + len)\n str += String.fromCharCode.apply(null, subab as any)\n }\n return str\n}\n\nexport function string2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length)\n for (let i = 0; i < s.length; i++) {\n ua[i] = s.charCodeAt(i) & 0xff\n }\n return ua\n}\n\nexport function string2ab(s: string): ArrayBuffer {\n return ua2ab(string2ua(s))\n}\n\nexport function ua2ab(ua: Uint8Array): ArrayBuffer {\n const buffer = ua.buffer\n return (buffer.byteLength > ua.byteLength ? buffer.slice(0, ua.byteLength) : buffer) as ArrayBuffer\n}\n\nexport function b64_2ab(s: string): ArrayBuffer {\n return ua2ab(string2ua(a2b(s)))\n}\n\nexport function b64_2ua(s: string): Uint8Array {\n return string2ua(a2b(s))\n}\n\nexport function ua2b64(_ua: Uint8Array | ArrayBuffer): string {\n return b2a(ua2string(_ua))\n}\n\nexport function b2a(a: string): string {\n if (typeof window !== 'undefined') {\n //Favour btoa in browser\n if (typeof btoa !== 'undefined') {\n return btoa(a)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(a, 'latin1')\n return buf.toString('base64')\n }\n } else {\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(a, 'latin1')\n return buf.toString('base64')\n }\n if (typeof btoa !== 'undefined') {\n return btoa(a)\n }\n }\n throw new Error('Unsupported operation b2a')\n}\n\nexport function a2b(s: string): string {\n const urlUnsafeString = s.replace(/_/g, '/').replace(/-/g, '+')\n if (typeof window !== 'undefined') {\n //Favour atob in browser\n if (typeof atob !== 'undefined') {\n return atob(urlUnsafeString)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = new Buffer(urlUnsafeString, 'base64')\n return buf.toString('latin1')\n }\n } else {\n if (typeof Buffer !== 'undefined') {\n const buf = new Buffer(urlUnsafeString, 'base64')\n return buf.toString('latin1')\n }\n if (typeof atob !== 'undefined') {\n return atob(urlUnsafeString)\n }\n }\n throw new Error('Unsupported operation a2b')\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Nmp {\n constructor(json: JSON | any) {\n Object.assign(this as Nmp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n productId?: string\n category?: string\n commercialStatus?: string\n name?: SamText\n producer?: SamText\n distributor?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class NoGenericPrescriptionReason {\n constructor(json: JSON | any) {\n Object.assign(this as NoGenericPrescriptionReason, json)\n }\n\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class NoSwitchReason {\n constructor(json: JSON | any) {\n Object.assign(this as NoSwitchReason, json)\n }\n\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class NumeratorRange {\n constructor(json: JSON | any) {\n Object.assign(this as NumeratorRange, json)\n }\n\n min?: number\n max?: number\n unit?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class PackagingType {\n constructor(json: JSON | any) {\n Object.assign(this as PackagingType, json)\n }\n\n code?: string\n name?: SamText\n edqmCode?: string\n edqmDefinition?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PaginatedDocumentKeyIdPairObject {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedDocumentKeyIdPairObject, json)\n }\n\n startKey?: any\n startKeyDocId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AccessLog } from './AccessLog'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListAccessLog {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListAccessLog, {...json, rows: json.rows?.map((r: any) => new AccessLog(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Agenda } from './Agenda'\n\nexport class PaginatedListAgenda {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListAgenda, {...json, rows: json.rows?.map((r: any) => new Agenda(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Amp } from './Amp'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListAmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListAmp, {...json, rows: json.rows?.map((r: any) => new Amp(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { CalendarItem } from './CalendarItem'\n\nexport class PaginatedListCalendarItem {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListCalendarItem, {...json, rows: json.rows?.map((r: any) => new CalendarItem(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { CalendarItemType } from './CalendarItemType'\n\nexport class PaginatedListCalendarItemType {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListCalendarItemType, {...json, rows: json.rows?.map((r: any) => new CalendarItemType(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Classification } from './Classification'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListClassification {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListClassification, {...json, rows: json.rows?.map((r: any) => new Classification(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { ClassificationTemplate } from './ClassificationTemplate'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListClassificationTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListClassificationTemplate, {...json, rows: json.rows?.map((r: any) => new ClassificationTemplate(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Code } from './Code'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListCode {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListCode, {...json, rows: json.rows?.map((r: any) => new Code(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Contact } from './Contact'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListContact {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListContact, {...json, rows: json.rows?.map((r: any) => new Contact(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Device } from './Device'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListDevice {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListDevice, {...json, rows: json.rows?.map((r: any) => new Device(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Document } from './Document'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListDocument {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListDocument, {...json, rows: json.rows?.map((r: any) => new Document(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { DocumentTemplate } from './DocumentTemplate'\n\nexport class PaginatedListDocumentTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListDocumentTemplate, {...json, rows: json.rows?.map((r: any) => new DocumentTemplate(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EntityTemplate } from './EntityTemplate'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListEntityTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListEntityTemplate, {...json, rows: json.rows?.map((r: any) => new EntityTemplate(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { ExchangeData } from './internal/ExchangeData'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListExchangeData {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListExchangeData, {...json, rows: json.rows?.map((r: any) => new ExchangeData(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Form } from './Form'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListForm {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListForm, {...json, rows: json.rows?.map((r: any) => new Form(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Group } from './Group'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListGroup {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListGroup, {...json, rows: json.rows?.map((r: any) => new Group(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListHealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListHealthElement, {...json, rows: json.rows?.map((r: any) => new HealthElement(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListHealthcareParty, {...json, rows: json.rows?.map((r: any) => new HealthcareParty(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Insurance } from './Insurance'\n\nexport class PaginatedListInsurance {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListInsurance, {...json, rows: json.rows?.map((r: any) => new Insurance(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Invoice } from './Invoice'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListInvoice, {...json, rows: json.rows?.map((r: any) => new Invoice(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Keyword } from './Keyword'\n\nexport class PaginatedListKeyword {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListKeyword, {...json, rows: json.rows?.map((r: any) => new Keyword(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListMaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListMaintenanceTask, {...json, rows: json.rows?.map((r: any) => new MaintenanceTask(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { MedicalLocation } from './MedicalLocation'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListMedicalLocation {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListMedicalLocation, {...json, rows: json.rows?.map((r: any) => new MedicalLocation(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Message } from './Message'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListMessage {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListMessage, {...json, rows: json.rows?.map((r: any) => new Message(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Nmp } from './Nmp'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListNmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListNmp, {...json, rows: json.rows?.map((r: any) => new Nmp(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Patient } from './Patient'\n\nexport class PaginatedListPatient {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListPatient, {...json, rows: json.rows?.map((r: any) => new Patient(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","import { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Place } from './Place'\n\nexport class PaginatedListPlace {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListPlace, {...json, rows: json.rows?.map((r: any) => new Place(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Service } from './Service'\n\nexport class PaginatedListService {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListService, {...json, rows: json.rows?.map((r: any) => new Service(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListString {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListString, {...json, rows: json.rows?.map((r: any) => new String(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Tarification } from './Tarification'\n\nexport class PaginatedListTarification {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListTarification, {...json, rows: json.rows?.map((r: any) => new Tarification(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Topic } from './Topic'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListTopic {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListTopic, {...json, rows: json.rows?.map((r: any) => new Topic(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { User } from './User'\n\nexport class PaginatedListUser {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListUser, {...json, rows: json.rows?.map((r: any) => new User(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Vmp } from './Vmp'\n\nexport class PaginatedListVmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListVmp, {...json, rows: json.rows?.map((r: any) => new Vmp(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { VmpGroup } from './VmpGroup'\n\nexport class PaginatedListVmpGroup {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListVmpGroup, {...json, rows: json.rows?.map((r: any) => new VmpGroup(r))})\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Paragraph {\n constructor(json: JSON | any) {\n Object.assign(this as Paragraph, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n chapterName?: string\n paragraphName?: string\n startDate?: number\n createdTms?: number\n createdUserId?: string\n endDate?: number\n keyStringNl?: string\n keyStringFr?: string\n agreementType?: string\n processType?: number\n legalReference?: string\n publicationDate?: number\n modificationDate?: number\n processTypeOverrule?: string\n paragraphVersion?: number\n agreementTypePro?: string\n modificationStatus?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AgreementAppendix } from './AgreementAppendix'\n\nexport class ParagraphAgreement {\n constructor(json: JSON | any) {\n Object.assign(this as ParagraphAgreement, json)\n }\n\n timestamp?: number\n paragraph?: string\n accepted?: boolean\n inTreatment?: boolean\n canceled?: boolean\n careProviderReference?: string\n decisionReference?: string\n start?: number\n end?: number\n cancelationDate?: number\n quantityValue?: number\n quantityUnit?: string\n ioRequestReference?: string\n responseType?: string\n refusalJustification?: { [key: string]: string }\n verses?: Array\n coverageType?: string\n unitNumber?: number\n strength?: number\n strengthUnit?: string\n agreementAppendices?: Array\n documentId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Part {\n constructor(json: JSON | any) {\n Object.assign(this as Part, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * A relationship between this patient and another person.\n */\nexport class Partnership {\n constructor(json: JSON | any) {\n Object.assign(this as Partnership, json)\n }\n\n /**\n * Type of relationship.\n */\n type?: Partnership.TypeEnum\n /**\n * Status of the relationship.\n */\n status?: Partnership.StatusEnum\n /**\n * UUID of the contact person or patient in this relationship.\n */\n partnerId?: string\n meToOtherRelationshipDescription?: string\n otherToMeRelationshipDescription?: string\n}\nexport namespace Partnership {\n export type TypeEnum =\n | 'primary_contact'\n | 'primary_contact_for'\n | 'family'\n | 'friend'\n | 'counselor'\n | 'contact'\n | 'brother'\n | 'brotherinlaw'\n | 'child'\n | 'daughter'\n | 'employer'\n | 'father'\n | 'grandchild'\n | 'grandparent'\n | 'husband'\n | 'lawyer'\n | 'mother'\n | 'neighbour'\n | 'notary'\n | 'partner'\n | 'sister'\n | 'sisterinlaw'\n | 'son'\n | 'spouse'\n | 'stepdaughter'\n | 'stepfather'\n | 'stepmother'\n | 'stepson'\n | 'tutor'\n | 'cohabiting'\n | 'registered_partner'\n | 'next_of_kin'\n | 'federal_agency'\n | 'insurance_company'\n | 'state_agency'\n | 'unknown'\n | 'seealso'\n | 'refer'\n export const TypeEnum = {\n PrimaryContact: 'primary_contact' as TypeEnum,\n PrimaryContactFor: 'primary_contact_for' as TypeEnum,\n Family: 'family' as TypeEnum,\n Friend: 'friend' as TypeEnum,\n Counselor: 'counselor' as TypeEnum,\n Contact: 'contact' as TypeEnum,\n Brother: 'brother' as TypeEnum,\n Brotherinlaw: 'brotherinlaw' as TypeEnum,\n Child: 'child' as TypeEnum,\n Daughter: 'daughter' as TypeEnum,\n Employer: 'employer' as TypeEnum,\n Father: 'father' as TypeEnum,\n Grandchild: 'grandchild' as TypeEnum,\n Grandparent: 'grandparent' as TypeEnum,\n Husband: 'husband' as TypeEnum,\n Lawyer: 'lawyer' as TypeEnum,\n Mother: 'mother' as TypeEnum,\n Neighbour: 'neighbour' as TypeEnum,\n Notary: 'notary' as TypeEnum,\n Partner: 'partner' as TypeEnum,\n Sister: 'sister' as TypeEnum,\n Sisterinlaw: 'sisterinlaw' as TypeEnum,\n Son: 'son' as TypeEnum,\n Spouse: 'spouse' as TypeEnum,\n Stepdaughter: 'stepdaughter' as TypeEnum,\n Stepfather: 'stepfather' as TypeEnum,\n Stepmother: 'stepmother' as TypeEnum,\n Stepson: 'stepson' as TypeEnum,\n Tutor: 'tutor' as TypeEnum,\n Cohabiting: 'cohabiting' as TypeEnum,\n RegisteredPartner: 'registered_partner' as TypeEnum,\n NextOfKin: 'next_of_kin' as TypeEnum,\n FederalAgency: 'federal_agency' as TypeEnum,\n InsuranceCompany: 'insurance_company' as TypeEnum,\n StateAgency: 'state_agency' as TypeEnum,\n Unknown: 'unknown' as TypeEnum,\n Seealso: 'seealso' as TypeEnum,\n Refer: 'refer' as TypeEnum,\n }\n export type StatusEnum = 'active' | 'complicated' | 'past'\n export const StatusEnum = {\n Active: 'active' as StatusEnum,\n Complicated: 'complicated' as StatusEnum,\n Past: 'past' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { EmploymentInfo } from './EmploymentInfo'\nimport { FinancialInstitutionInformation } from './FinancialInstitutionInformation'\nimport { Identifier } from './Identifier'\nimport { Insurability } from './Insurability'\nimport { MedicalHouseContract } from './MedicalHouseContract'\nimport { Partnership } from './Partnership'\nimport { PatientHealthCareParty } from './PatientHealthCareParty'\nimport { PersonName } from './PersonName'\nimport { PropertyStub } from './PropertyStub'\nimport { SchoolingInfo } from './SchoolingInfo'\nimport { Annotation } from './Annotation'\n\n/**\n * This entity is a root level object. It represents a patient It is serialized in JSON and saved in the underlying icure-patient CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\nexport class Patient {\n constructor(json: JSON | any) {\n let pictureData: { picture?: ArrayBuffer } = {}\n if (!!json.picture) {\n if (typeof json.picture === 'string') {\n pictureData.picture = b64_2ab(json.picture)\n } else if (json.picture instanceof ArrayBuffer || ArrayBuffer.isView(json.picture)) {\n pictureData.picture = json.picture\n } else {\n throw new Error(`Invalid type for picture: ${typeof json.picture}`)\n }\n }\n Object.assign(this as Patient, json, pictureData)\n }\n\n /**\n * the Id of the patient. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the patient in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n identifier?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * the firstname (name) of the patient.\n */\n firstName?: string\n /**\n * the lastname (surname) of the patient. This is the official lastname that should be used for official administrative purposes.\n */\n lastName?: string\n /**\n * the list of all names of the patient, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the patient in the application\n */\n names?: Array\n /**\n * the name of the company this patient is member of.\n */\n companyName?: string\n /**\n * the list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n languages?: Array\n /**\n * the list of addresses (with address type).\n */\n addresses?: Array
\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n civility?: string\n /**\n * the gender of the patient: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n gender?: Patient.GenderEnum\n /**\n * the birth sex of the patient: male, female, indeterminate, unknown\n */\n birthSex?: Patient.BirthSexEnum\n /**\n * The id of the patient this patient has been merged with.\n */\n mergeToPatientId?: string\n /**\n * The ids of the patients that have been merged inside this patient.\n */\n mergedIds?: Array\n /**\n * An alias of the person, nickname, ...\n */\n alias?: string\n /**\n * Is the patient active (boolean).\n */\n active?: boolean\n /**\n * When not active, the reason for deactivation.\n */\n deactivationReason?: Patient.DeactivationReasonEnum\n /**\n * Deactivation date of the patient\n */\n deactivationDate?: number\n /**\n * Social security inscription number.\n */\n ssin?: string\n /**\n * Lastname at birth (can be different of the current name), depending on the country, must be used to design the patient .\n */\n maidenName?: string\n /**\n * Lastname of the spouse for a married woman, depending on the country, can be used to design the patient.\n */\n spouseName?: string\n /**\n * Lastname of the partner, should not be used to design the patient.\n */\n partnerName?: string\n /**\n * any of `single`, `in_couple`, `married`, `separated`, `divorced`, `divorcing`, `widowed`, `widower`, `complicated`, `unknown`, `contract`, `other`.\n */\n personalStatus?: Patient.PersonalStatusEnum\n /**\n * The birthdate encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfBirth?: number\n /**\n * The date of death encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfDeath?: number\n /**\n * Timestamp of the latest validation of the eID of the person..\n */\n timestampOfLatestEidReading?: number\n /**\n * The place of birth.\n */\n placeOfBirth?: string\n /**\n * The place of death.\n */\n placeOfDeath?: string\n /**\n * Is the patient deceased.\n */\n deceased?: boolean\n /**\n * The level of education (college degree, undergraduate, phd).\n */\n education?: string\n /**\n * The current professional activity.\n */\n profession?: string\n /**\n * A text note (can be confidential, encrypted by default).\n * @deprecated use notes instead with proper tags\n */\n note?: string\n /**\n * An administrative note, not confidential.\n * @deprecated use notes instead with proper tags\n */\n administrativeNote?: string\n /**\n * A list of localized notes.\n */\n notes?: Annotation[]\n /**\n * The nationality of the patient.\n */\n nationality?: string\n /**\n * The race of the patient.\n */\n race?: string\n /**\n * The ethnicity of the patient.\n */\n ethnicity?: string\n /**\n * The id of the user that usually handles this patient.\n */\n preferredUserId?: string\n /**\n * A picture usually saved in JPEG format.\n */\n picture?: ArrayBuffer\n /**\n * An external (from another source) id with no guarantee or requirement for unicity .\n */\n externalId?: string\n /**\n * List of insurance coverages (of class Insurability, see below).\n */\n insurabilities?: Array\n /**\n * List of partners, or persons of contact (of class Partnership, see below).\n */\n partnerships?: Array\n /**\n * Links (usually for therapeutic reasons) between this patient and healthcare parties (of class PatientHealthcareParty).\n */\n patientHealthCareParties?: Array\n /**\n * Financial information (Bank, bank account) used to reimburse the patient.\n */\n financialInstitutionInformation?: Array\n /**\n * Contracts between the patient and the healthcare entity.\n */\n medicalHouseContracts?: Array\n /**\n * Codified list of professions exercised by this patient.\n */\n patientProfessions?: Array\n /**\n * Extra parameters\n */\n parameters?: { [key: string]: Array }\n /**\n * Extra properties\n */\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * The public keys of this actor that are generates using the OAEP Sha-256 standard\n */\n publicKeysForOaepWithSha256?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n nonDuplicateIds?: Array\n encryptedAdministrativesDocuments?: Array\n comment?: string\n warning?: string\n fatherBirthCountry?: CodeStub\n birthCountry?: CodeStub\n nativeCountry?: CodeStub\n socialStatus?: CodeStub\n mainSourceOfIncome?: CodeStub\n schoolingInfos?: Array\n employementInfos?: Array\n securityMetadata?: SecurityMetadata\n \n}\nexport namespace Patient {\n export type GenderEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const GenderEnum = {\n Male: 'male' as GenderEnum,\n Female: 'female' as GenderEnum,\n Indeterminate: 'indeterminate' as GenderEnum,\n Changed: 'changed' as GenderEnum,\n ChangedToMale: 'changedToMale' as GenderEnum,\n ChangedToFemale: 'changedToFemale' as GenderEnum,\n Unknown: 'unknown' as GenderEnum,\n }\n export type BirthSexEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const BirthSexEnum = {\n Male: 'male' as BirthSexEnum,\n Female: 'female' as BirthSexEnum,\n Indeterminate: 'indeterminate' as BirthSexEnum,\n Changed: 'changed' as BirthSexEnum,\n ChangedToMale: 'changedToMale' as BirthSexEnum,\n ChangedToFemale: 'changedToFemale' as BirthSexEnum,\n Unknown: 'unknown' as BirthSexEnum,\n }\n export type DeactivationReasonEnum = 'deceased' | 'moved' | 'other_doctor' | 'retired' | 'no_contact' | 'unknown' | 'none'\n export const DeactivationReasonEnum = {\n Deceased: 'deceased' as DeactivationReasonEnum,\n Moved: 'moved' as DeactivationReasonEnum,\n OtherDoctor: 'other_doctor' as DeactivationReasonEnum,\n Retired: 'retired' as DeactivationReasonEnum,\n NoContact: 'no_contact' as DeactivationReasonEnum,\n Unknown: 'unknown' as DeactivationReasonEnum,\n None: 'none' as DeactivationReasonEnum,\n }\n export type PersonalStatusEnum =\n | 'single'\n | 'in_couple'\n | 'married'\n | 'separated'\n | 'divorced'\n | 'divorcing'\n | 'widowed'\n | 'widower'\n | 'complicated'\n | 'unknown'\n | 'contract'\n | 'other'\n | 'annulled'\n | 'polygamous'\n export const PersonalStatusEnum = {\n Single: 'single' as PersonalStatusEnum,\n InCouple: 'in_couple' as PersonalStatusEnum,\n Married: 'married' as PersonalStatusEnum,\n Separated: 'separated' as PersonalStatusEnum,\n Divorced: 'divorced' as PersonalStatusEnum,\n Divorcing: 'divorcing' as PersonalStatusEnum,\n Widowed: 'widowed' as PersonalStatusEnum,\n Widower: 'widower' as PersonalStatusEnum,\n Complicated: 'complicated' as PersonalStatusEnum,\n Unknown: 'unknown' as PersonalStatusEnum,\n Contract: 'contract' as PersonalStatusEnum,\n Other: 'other' as PersonalStatusEnum,\n Annulled: 'annulled' as PersonalStatusEnum,\n Polygamous: 'polygamous' as PersonalStatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { ReferralPeriod } from './ReferralPeriod'\n\n/**\n * One or several periods of care by an hcp for this patient\n */\nexport class PatientHealthCareParty {\n constructor(json: JSON | any) {\n Object.assign(this as PatientHealthCareParty, json)\n }\n\n /**\n * Type of care/relationship.\n */\n type?: PatientHealthCareParty.TypeEnum\n /**\n * UUID of the hcp.\n */\n healthcarePartyId?: string\n /**\n * Preferred format of exchange for diverse means of communication\n */\n sendFormats?: { [key: string]: string }\n /**\n * Time periods\n */\n referralPeriods?: Array\n referral?: boolean\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace PatientHealthCareParty {\n export type TypeEnum =\n | 'doctor'\n | 'referral'\n | 'medicalhouse'\n | 'retirementhome'\n | 'hospital'\n | 'other'\n | 'referringphysician'\n | 'managingorganization'\n export const TypeEnum = {\n Doctor: 'doctor' as TypeEnum,\n Referral: 'referral' as TypeEnum,\n Medicalhouse: 'medicalhouse' as TypeEnum,\n Retirementhome: 'retirementhome' as TypeEnum,\n Hospital: 'hospital' as TypeEnum,\n Other: 'other' as TypeEnum,\n Referringphysician: 'referringphysician' as TypeEnum,\n Managingorganization: 'managingorganization' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Payment {\n constructor(json: JSON | any) {\n Object.assign(this as Payment, json)\n }\n\n paymentDate?: number\n paymentType?: Payment.PaymentTypeEnum\n paid?: number\n}\nexport namespace Payment {\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Periodicity {\n constructor(json: JSON | any) {\n Object.assign(this as Periodicity, json)\n }\n\n relatedCode?: CodeStub\n relatedPeriodicity?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PermissionItem } from './PermissionItem'\n\n/**\n * If permission to modify patient data is granted or revoked\n */\nexport class Permission {\n constructor(json: JSON | any) {\n Object.assign(this as Permission, json)\n }\n\n /**\n * Granted permissions.\n */\n grants?: Array\n /**\n * Revoked permissions.\n */\n revokes?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Predicate } from './Predicate'\n\n/**\n * Revoked permissions.\n */\nexport class PermissionItem {\n constructor(json: JSON | any) {\n Object.assign(this as PermissionItem, json)\n }\n\n itemType?: string\n type?: PermissionItem.TypeEnum\n predicate?: Predicate\n}\nexport namespace PermissionItem {\n export type TypeEnum =\n | 'AUTHENTICATE'\n | 'HCP'\n | 'PHYSICIAN'\n | 'ADMIN'\n | 'PATIENT_VIEW'\n | 'PATIENT_CREATE'\n | 'PATIENT_CHANGE_DELETE'\n | 'MEDICAL_DATA_VIEW'\n | 'MEDICAL_DATA_CREATE'\n | 'MEDICAL_CHANGE_DELETE'\n | 'FINANCIAL_DATA_VIEW'\n | 'FINANCIAL_DATA_CREATE'\n | 'FINANCIAL_CHANGE_DELETE'\n export const TypeEnum = {\n AUTHENTICATE: 'AUTHENTICATE' as TypeEnum,\n HCP: 'HCP' as TypeEnum,\n PHYSICIAN: 'PHYSICIAN' as TypeEnum,\n ADMIN: 'ADMIN' as TypeEnum,\n PATIENTVIEW: 'PATIENT_VIEW' as TypeEnum,\n PATIENTCREATE: 'PATIENT_CREATE' as TypeEnum,\n PATIENTCHANGEDELETE: 'PATIENT_CHANGE_DELETE' as TypeEnum,\n MEDICALDATAVIEW: 'MEDICAL_DATA_VIEW' as TypeEnum,\n MEDICALDATACREATE: 'MEDICAL_DATA_CREATE' as TypeEnum,\n MEDICALCHANGEDELETE: 'MEDICAL_CHANGE_DELETE' as TypeEnum,\n FINANCIALDATAVIEW: 'FINANCIAL_DATA_VIEW' as TypeEnum,\n FINANCIALDATACREATE: 'FINANCIAL_DATA_CREATE' as TypeEnum,\n FINANCIALCHANGEDELETE: 'FINANCIAL_CHANGE_DELETE' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Non preferred name information of a person\n */\nexport class PersonName {\n constructor(json: JSON | any) {\n Object.assign(this as PersonName, json)\n }\n\n /**\n * Family name (often called 'Surname')\n */\n lastName?: string\n /**\n * Given names (not always 'first'). Includes middle names. This repeating element order: Given Names appear in the correct order for presenting the name\n */\n firstNames?: Array\n /**\n * Starting date of time period when name is/was valid for use. Date encoded as a fuzzy date on 8 positions (YYYYMMDD)\n */\n start?: number\n /**\n * Ending date of time period when name is/was valid for use. Date encoded as a fuzzy date on 8 positions (YYYYMMDD)\n */\n end?: number\n /**\n * Parts that come before the name. This repeating element order: Prefixes appear in the correct order for presenting the name\n */\n prefix?: Array\n /**\n * Parts that come after the name. This repeating element order: Suffixes appear in the correct order for presenting the name\n */\n suffix?: Array\n /**\n * Text representation of the full name\n */\n text?: string\n /**\n * What is the use of this name\n */\n use?: PersonName.UseEnum\n}\nexport namespace PersonName {\n export type UseEnum = 'usual' | 'official' | 'temp' | 'nickname' | 'anonymous' | 'maiden' | 'old' | 'other'\n export const UseEnum = {\n Usual: 'usual' as UseEnum,\n Official: 'official' as UseEnum,\n Temp: 'temp' as UseEnum,\n Nickname: 'nickname' as UseEnum,\n Anonymous: 'anonymous' as UseEnum,\n Maiden: 'maiden' as UseEnum,\n Old: 'old' as UseEnum,\n Other: 'other' as UseEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class PharmaceuticalForm {\n constructor(json: JSON | any) {\n Object.assign(this as PharmaceuticalForm, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n code?: string\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class PharmaceuticalFormStub {\n constructor(json: JSON | any) {\n Object.assign(this as PharmaceuticalFormStub, json)\n }\n\n id?: string\n code?: string\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Place {\n constructor(json: JSON | any) {\n Object.assign(this as Place, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n address?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CareTeamMembership } from './CareTeamMembership'\nimport { CodeStub } from './CodeStub'\n\n/**\n * List of healthcare approaches.\n */\nexport class PlanOfAction {\n constructor(json: JSON | any) {\n Object.assign(this as PlanOfAction, json)\n }\n\n id?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the hcp who prescribed this healthcare approach\n */\n prescriberId?: string\n /**\n * The date (unix epoch in ms) when the healthcare approach is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (unix epoch in ms) of the start of the healthcare approach.\n */\n openingDate?: number\n /**\n * The date (unix epoch in ms) marking the end of the healthcare approach.\n */\n closingDate?: number\n /**\n * The date (unix epoch in ms) when the healthcare approach has to be carried out.\n */\n deadlineDate?: number\n /**\n * The name of the healthcare approach.\n */\n name?: string\n /**\n * Description of the healthcare approach.\n */\n descr?: string\n /**\n * Note about the healthcare approach.\n */\n note?: string\n /**\n * Id of the opening contact when the healthcare approach was created.\n */\n idOpeningContact?: string\n /**\n * Id of the closing contact for the healthcare approach.\n */\n idClosingContact?: string\n /**\n * bit 0: active/inactive, bit 1: relevant/irrelevant, bit 2 : present/absent, ex: 0 = active,relevant and present\n */\n status?: number\n documentIds?: Array\n /**\n * The number of individual cares already performed in the course of this healthcare approach\n */\n numberOfCares?: number\n /**\n * Members of the careteam involved in this approach\n */\n careTeamMemberships?: Array\n relevant?: boolean\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Predicate {\n constructor(json: JSON | any) {\n Object.assign(this as Predicate, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Pricing {\n constructor(json: JSON | any) {\n Object.assign(this as Pricing, json)\n }\n\n quantity?: number\n label?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyTypeStub } from './PropertyTypeStub'\nimport { TypedValueObject } from './TypedValueObject'\n\n/**\n * Extra properties\n */\nexport class PropertyStub {\n constructor(json: JSON | any) {\n Object.assign(this as PropertyStub, json)\n }\n\n id?: string\n type?: PropertyTypeStub\n typedValue?: TypedValueObject\n deletionDate?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PropertyTypeStub {\n constructor(json: JSON | any) {\n Object.assign(this as PropertyTypeStub, json)\n }\n\n identifier?: string\n type?: PropertyTypeStub.TypeEnum\n}\nexport namespace PropertyTypeStub {\n export type TypeEnum = 'BOOLEAN' | 'INTEGER' | 'DOUBLE' | 'STRING' | 'DATE' | 'CLOB' | 'JSON'\n export const TypeEnum = {\n BOOLEAN: 'BOOLEAN' as TypeEnum,\n INTEGER: 'INTEGER' as TypeEnum,\n DOUBLE: 'DOUBLE' as TypeEnum,\n STRING: 'STRING' as TypeEnum,\n DATE: 'DATE' as TypeEnum,\n CLOB: 'CLOB' as TypeEnum,\n JSON: 'JSON' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PublicKey {\n constructor(json: JSON | any) {\n Object.assign(this as PublicKey, json)\n }\n\n hcPartyId?: string\n hexString?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Quantity {\n constructor(json: JSON | any) {\n Object.assign(this as Quantity, json)\n }\n\n value?: number\n unit?: string\n}\n","export class Range {\n constructor(json: JSON | any) {\n this.low = json?.low\n this.high = json?.high\n }\n\n low?: number\n high?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class Receipt {\n constructor(json: JSON | any) {\n Object.assign(this as Receipt, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n attachmentIds?: { [key: string]: string }\n references?: Array\n documentId?: string\n category?: string\n subCategory?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","import {CodeStub} from \"./CodeStub\"\nimport {Annotation} from \"./Annotation\"\nimport {Range} from \"./Range\"\n\n/**\n * Reference range for the measure\n *\n * @export\n * @class ReferenceRange\n *\n * @property {number} low lower bound of the reference range (inclusive)\n * @property {number} high upper bound of the reference range (inclusive)\n * @property {CodeStub[]} tags tags giving additional information about the reference range (e.g. applies to children/adults, male/female, etc.)\n * @property {CodeStub[]} codes codes qualifying the reference range using a codification system (e.g. LOINC)\n * @property {Annotation[]} notes notes giving additional information about the reference range\n * @property {Range} age age range to which the reference range applies\n */\nexport class ReferenceRange {\n\n constructor(json: JSON | any) {\n this.low = json?.low\n this.high = json?.high\n this.tags = json?.tags?.map((tag: JSON | any) => new CodeStub(tag))\n this.codes = json?.codes?.map((code: JSON | any) => new CodeStub(code))\n this.notes = json?.notes?.map((note: JSON | any) => new Annotation(note))\n this.age = new Range(json?.age)\n this.stringValue = json?.stringValue\n }\n\n low?: number\n high?: number\n tags?: CodeStub[]\n codes?: CodeStub[]\n notes?: Annotation[]\n age?: Range\n stringValue?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Time periods\n */\nexport class ReferralPeriod {\n constructor(json: JSON | any) {\n Object.assign(this as ReferralPeriod, json)\n }\n\n /**\n * The date (unix epoch in ms) when the referral period initiated, will be filled instantaneously.\n */\n startDate?: number\n /**\n * The date (unix epoch in ms) the referral period ended, will be instantaneously filled.\n */\n endDate?: number\n /**\n * Comments made during the referral.\n */\n comment?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AdministrationQuantity } from './AdministrationQuantity'\nimport { CodeStub } from './CodeStub'\nimport { Weekday } from './Weekday'\n\nexport class RegimenItem {\n constructor(json: JSON | any) {\n Object.assign(this as RegimenItem, json)\n }\n\n date?: number\n dayNumber?: number\n weekday?: Weekday\n dayPeriod?: CodeStub\n timeOfDay?: number\n administratedQuantity?: AdministrationQuantity\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class RegistrationInformation {\n constructor(json: JSON | any) {\n Object.assign(this as RegistrationInformation, json)\n }\n\n firstName?: string\n lastName?: string\n emailAddress?: string\n userOptions?: string\n userRoles?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class RegistrationSuccess {\n constructor(json: JSON | any) {\n Object.assign(this as RegistrationSuccess, json)\n }\n\n groupId?: string\n userId?: string\n token?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Copayment } from './Copayment'\nimport { Pricing } from './Pricing'\nimport { ReimbursementCriterion } from './ReimbursementCriterion'\n\nexport class Reimbursement {\n constructor(json: JSON | any) {\n Object.assign(this as Reimbursement, json)\n }\n\n from?: number\n to?: number\n deliveryEnvironment?: Reimbursement.DeliveryEnvironmentEnum\n code?: string\n codeType?: Reimbursement.CodeTypeEnum\n multiple?: Reimbursement.MultipleEnum\n temporary?: boolean\n reference?: boolean\n legalReferencePath?: string\n flatRateSystem?: boolean\n reimbursementBasePrice?: number\n referenceBasePrice?: number\n copaymentSupplement?: number\n pricingUnit?: Pricing\n pricingSlice?: Pricing\n reimbursementCriterion?: ReimbursementCriterion\n copayments?: Array\n}\nexport namespace Reimbursement {\n export type DeliveryEnvironmentEnum = 'P' | 'A' | 'H' | 'R'\n export const DeliveryEnvironmentEnum = {\n P: 'P' as DeliveryEnvironmentEnum,\n A: 'A' as DeliveryEnvironmentEnum,\n H: 'H' as DeliveryEnvironmentEnum,\n R: 'R' as DeliveryEnvironmentEnum,\n }\n export type CodeTypeEnum = 'CNK' | 'PSEUDO'\n export const CodeTypeEnum = {\n CNK: 'CNK' as CodeTypeEnum,\n PSEUDO: 'PSEUDO' as CodeTypeEnum,\n }\n export type MultipleEnum = 'M' | 'V'\n export const MultipleEnum = {\n M: 'M' as MultipleEnum,\n V: 'V' as MultipleEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class ReimbursementCriterion {\n constructor(json: JSON | any) {\n Object.assign(this as ReimbursementCriterion, json)\n }\n\n category?: string\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { RemoteAuthentication } from './RemoteAuthentication'\n\nexport class Remote {\n constructor(json: JSON | any) {\n Object.assign(this as Remote, json)\n }\n\n url?: string\n auth?: RemoteAuthentication\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Basic } from './Basic'\n\nexport class RemoteAuthentication {\n constructor(json: JSON | any) {\n Object.assign(this as RemoteAuthentication, json)\n }\n\n basic?: Basic\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Duration } from './Duration'\n\nexport class Renewal {\n constructor(json: JSON | any) {\n Object.assign(this as Renewal, json)\n }\n\n decimal?: number\n duration?: Duration\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicateCommand {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicateCommand, json)\n }\n\n sourceUrl?: string\n sourceUsername?: string\n sourcePassword?: string\n targetUrl?: string\n targetUsername?: string\n targetPassword?: string\n id?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DatabaseSynchronization } from './DatabaseSynchronization'\n\nexport class Replication {\n constructor(json: JSON | any) {\n Object.assign(this as Replication, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n context?: string\n databaseSynchronizations?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicationInfo {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicationInfo, json)\n }\n\n active?: boolean\n running?: boolean\n pendingFrom?: number\n pendingTo?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicationStats {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicationStats, json)\n }\n\n revisionsChecked?: number\n missingRevisionsFound?: number\n docsRead?: number\n docsWritten?: number\n changesPending?: number\n docWriteFailures?: number\n checkpointedSourceSeq?: string\n startTime?: number\n error?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Remote } from './Remote'\nimport { ReplicationStats } from './ReplicationStats'\n\nexport class ReplicatorDocument {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicatorDocument, json)\n }\n\n id?: string\n rev?: string\n source?: Remote\n target?: Remote\n owner?: string\n createTarget?: boolean\n continuous?: boolean\n docIds?: Array\n replicationState?: string\n replicationStateTime?: number\n replicationStats?: ReplicationStats\n errorCount?: number\n revsInfo?: Array<{ [key: string]: string }>\n revHistory?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicatorResponse {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicatorResponse, json)\n }\n\n ok?: boolean\n id?: string\n rev?: string\n error?: string\n reason?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Service } from './Service'\n\nexport class ResultInfo {\n constructor(json: JSON | any) {\n Object.assign(this as ResultInfo, json)\n }\n\n ssin?: string\n lastName?: string\n firstName?: string\n dateOfBirth?: number\n sex?: string\n documentId?: string\n protocol?: string\n complete?: boolean\n demandDate?: number\n labo?: string\n engine?: string\n codes?: Array\n services?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Right {\n constructor(json: JSON | any) {\n Object.assign(this as Right, json)\n }\n\n userId?: string\n read?: boolean\n write?: boolean\n administration?: boolean\n}\n","export class Role {\n constructor(json: JSON | any) {\n Object.assign(this as Role, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n permissions?: Array\n}\n","import { RoleSourceEnum } from './RoleSourceEnum'\n\nexport class RoleConfiguration {\n constructor(json: JSON | any) {\n Object.assign(this as RoleConfiguration, json)\n }\n\n source?: RoleSourceEnum\n roles?: Array\n}\n","/**\n * Represent where the default roles for a certain type of user come from.\n * Default: the roles are the ones defined by iCure.\n * Inherited: the roles are defined in a supergroup of the current group.\n * Configuration: the roles are defined in the current group.\n */\nexport enum RoleSourceEnum {\n Default = 'DEFAULT',\n Inherited = 'INHERITED',\n Configuration = 'CONFIGURATION',\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class RouteOfAdministration {\n constructor(json: JSON | any) {\n Object.assign(this as RouteOfAdministration, json)\n }\n\n name?: SamText\n standardRoutes?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SamText {\n constructor(json: JSON | any) {\n Object.assign(this as SamText, json)\n }\n\n fr?: string\n nl?: string\n de?: string\n en?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SamVersion {\n constructor(json: JSON | any) {\n Object.assign(this as SamVersion, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n version?: string\n date?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class SchoolingInfo {\n constructor(json: JSON | any) {\n Object.assign(this as SchoolingInfo, json)\n }\n\n startDate?: number\n endDate?: number\n school?: string\n typeOfEducation?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { StructureElement } from './StructureElement'\n\nexport class Section {\n constructor(json: JSON | any) {\n Object.assign(this as Section, json)\n }\n\n section?: string\n fields?: Array\n description?: string\n keywords?: Array\n}\n","export class SecureDelegation {\n constructor(json: JSON | any) {\n Object.assign(this as SecureDelegation, json)\n }\n\n /**\n * Optionally the id of the delegator data owner for this [SecureDelegation]. May be null if this information must\n * be hidden to prevent data leakages (see class documentation for more details).\n */\n delegator?: string\n /**\n * Optionally the id of the delegate data owner for this [SecureDelegation]. May be null if this information must\n * be hidden to prevent data leakages (see class documentation for more details).\n */\n delegate?: string\n /**\n * Secret id of the entity holding this [SecureDelegation] (formerly `delegation`). The id will appear in plaintext in the\n * `secretForeignKeys` field of children entities.\n */\n secretIds?: string[]\n /**\n * Encrypted aes key used for the encryption of the entity's data (data stored in `encryptedSelf`).\n */\n encryptionKeys?: string[]\n /**\n * Encrypted id of the entity which owns the entity holding this [SecureDelegation] (formerly `cryptedForeignKey`),\n * such as the id of the patient for a contact or healthcare element.\n */\n owningEntityIds?: string[]\n /**\n * Key of the parent delegations in the [SecurityMetadata.secureDelegations]. Users are allowed to modify/delete\n * only [SecureDelegation] that they can directly access or any children delegations.\n */\n parentDelegations?: string[]\n /**\n * If both the [delegator] and [delegate] are explicit in this secure delegation this field will hold the id of the exchange\n * data used for the encryption of this delegation. Otherwise, this will be null.\n */\n exchangeDataId?: string\n /**\n * Permissions of users with access to this [SecureDelegation] on the corresponding entity.\n * The permissions only refer to the actual content of the entity and not to any metadata (excluding the `encryptedSelf`):\n * any data owner will always be allowed to use the methods to share the with other data owners, even if these method\n * require to modify the entity and the data owner has read-only permissions.\n * Delegations without any parents will always have full read-write permissions.\n */\n permissions!: SecureDelegation.AccessLevelEnum\n}\nexport namespace SecureDelegation {\n export type AccessLevelEnum = 'READ' | 'WRITE'\n export const AccessLevelEnum = {\n READ: 'READ' as AccessLevelEnum,\n WRITE: 'WRITE' as AccessLevelEnum,\n }\n}\n","import { SecureDelegation } from './SecureDelegation'\n\n/**\n * Holds information for user-based access control and encryption of entities.\n */\nexport class SecurityMetadata {\n constructor(json: JSON | any) {\n Object.assign(this as SecurityMetadata, json)\n }\n\n /**\n * This maps the hex-encoded sha256 hash of a key created by the client using a certain [ExchangeData.accessControlSecret] to the\n * [SecureDelegation] for the corresponding delegate-delegator pair. This hash is used by the server to perform access control for\n * anonymous data owners (see [DataOwnerAuthenticationDetails]) and in some cases also by the sdks to quickly find the appropriate\n * exchange key needed for the decryption of the content of the corresponding [SecureDelegation].\n *\n * Note that it is also possible for a secure delegation in this map to have no entry for secretId, encryptionKey or owningEntityId.\n * This could happen in situations where a user should have access only to the unencrypted content of an entity.\n */\n secureDelegations?: { [hash: string]: SecureDelegation }\n\n /**\n * Holds aliases for secure delegation keys that apply to this entity: `a -> b` means that anyone with key `a` has access to the\n * secure delegation in `secureDelegations['b']`.\n *\n * This map is useful in cases when it is not possible to know for certain if the delegate of a new secure delegation will be able\n * to produce the access control key we are planning to use. For example the access control key may be produced by a combination of\n * access control secret and secret foreign key of the entity: what happens if the entity has multiple secret foreign keys? The\n * delegate may have access to only one of them but not all, so if we chose an unlucky secret foreign key in the creation of the\n * access control key the delegate will never be able to access the entity. This field allows to essentially create an access control\n * key and corresponding secure delegation key for each secret foreign key without having to replicate the actual secure delegation.\n */\n keysEquivalences?: { [hash: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Annotation } from './Annotation'\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\nimport { SecurityMetadata } from './SecurityMetadata'\n\n/**\n * This entity represents a Service. A Service is created in the course a contact. Services include subjective information provided by the patient, such as complaints, reason for visit, feelings, etc. or objective information like bio-metric measures (blood pressure, temperature, heart beat, etc.), or physical exam description, diagnosis, prescription, integration of lab reports from another healthcare party, action plan, etc. Any action performed by the healthcare party which is relevant for the healthcare element of a patient is considered a service. The services can be linked to healthcare elements or other structuring elements of the medical record\n */\nexport class Service {\n constructor(json: JSON | any) {\n Object.assign(\n this as Service,\n json\n )\n\n if (!!this.content) {\n this.content = Object.fromEntries(\n Object.entries(this.content).map(([key, value]) => [key, new Content(value)])\n )\n }\n }\n\n /**\n * The Id of the Service. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The transactionId is used when a single service had to be split into parts for technical reasons. Several services with the same non null transaction id form one single service\n */\n transactionId?: string\n identifier?: Array\n /**\n * Id of the contact during which the service is provided\n */\n contactId?: string\n /**\n * List of IDs of all sub-contacts that link the service to structural elements. Only used when the Service is emitted outside of its contact\n */\n subContactIds?: Array\n /**\n * List of IDs of all plans of actions (healthcare approaches) as a part of which the Service is provided. Only used when the Service is emitted outside of its contact\n */\n plansOfActionIds?: Array\n /**\n * List of IDs of all healthcare elements for which the service is provided. Only used when the Service is emitted outside of its contact\n */\n healthElementsIds?: Array\n /**\n * List of Ids of all forms linked to the Service. Only used when the Service is emitted outside of its contact.\n */\n formIds?: Array\n /**\n * The secret patient key, encrypted in the patient document, in clear here.\n */\n secretForeignKeys?: Array\n /**\n * The public patient key, encrypted here for separate Crypto Actors.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * The delegations giving access to connected healthcare information.\n */\n delegations?: { [key: string]: Array }\n /**\n * The contact secret encryption key used to encrypt the secured properties (like services for example), encrypted for separate Crypto Actors.\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * Description / Unambiguous qualification (LOINC code) of the type of information contained in the service. Could be a code to qualify temperature, complaint, diagnostic, ...\n */\n label?: string\n dataClassName?: string\n /**\n * Used for sorting services inside an upper object (A contact, a transaction, a FHIR bundle, ...)\n */\n index?: number\n /**\n * Information contained in the service. Content is localized, using ISO language code as key\n */\n content?: { [key: string]: Content }\n encryptedContent?: string\n textIndexes?: { [key: string]: string }\n /**\n * The date (YYYYMMDDhhmmss) when the Service is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (YYYYMMDDhhmmss) of the start of the Service\n */\n openingDate?: number\n /**\n * The date (YYYYMMDDhhmmss) marking the end of the Service\n */\n closingDate?: number\n /**\n * Id of the form used during the Service\n */\n formId?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * Text, comments on the Service provided\n */\n comment?: string\n status?: number\n /**\n * List of invoicing codes\n */\n invoicingCodes?: Array\n /**\n * Comments - Notes recorded by a HCP about this service\n */\n notes?: Array\n /**\n * Links towards related services (possibly in other contacts)\n */\n qualifiedLinks?: { [key: string]: { [key: string]: string } }\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * List of all services provided to the patient under a given contact which is linked by this sub-contact to other structuring elements.\n */\nexport class ServiceLink {\n constructor(json: JSON | any) {\n Object.assign(this as ServiceLink, json)\n }\n\n serviceId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SoftwareMedicalFileExport {\n constructor(json: JSON | any) {\n Object.assign(this as SoftwareMedicalFileExport, json)\n }\n\n secretForeignKeys?: Array\n comment?: string\n exportAsPMF?: boolean\n softwareName?: string\n softwareVersion?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class StandardSubstance {\n constructor(json: JSON | any) {\n Object.assign(this as StandardSubstance, json)\n }\n\n code?: string\n type?: StandardSubstance.TypeEnum\n name?: SamText\n definition?: SamText\n url?: string\n}\nexport namespace StandardSubstance {\n export type TypeEnum = 'CAS' | 'DM_D' | 'EDQM' | 'SNOMED_CT'\n export const TypeEnum = {\n CAS: 'CAS' as TypeEnum,\n DMD: 'DM_D' as TypeEnum,\n EDQM: 'EDQM' as TypeEnum,\n SNOMEDCT: 'SNOMED_CT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { NumeratorRange } from './NumeratorRange'\nimport { Quantity } from './Quantity'\n\nexport class StrengthRange {\n constructor(json: JSON | any) {\n Object.assign(this as StrengthRange, json)\n }\n\n numeratorRange?: NumeratorRange\n denominator?: Quantity\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class StructureElement {\n constructor(json: JSON | any) {\n Object.assign(this as StructureElement, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { ServiceLink } from './ServiceLink'\n\n/**\n * This entity represents a sub-contact. It is serialized in JSON and saved in the underlying icure-contact CouchDB database.\n */\nexport class SubContact {\n constructor(json: JSON | any) {\n Object.assign(this as SubContact, json)\n }\n\n /**\n * The Id of the sub-contact. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * Description of the sub-contact\n */\n descr?: string\n /**\n * Protocol based on which the sub-contact was used for linking services to structuring elements\n */\n protocol?: string\n status?: number\n /**\n * Id of the form used in the sub-contact. Several sub-contacts with the same form ID can coexist as long as they are in different contacts or they relate to a different planOfActionID\n */\n formId?: string\n /**\n * Id of the plan of action (healthcare approach) that is linked by the sub-contact to a service.\n */\n planOfActionId?: string\n /**\n * Id of the healthcare element that is linked by the sub-contact to a service\n */\n healthElementId?: string\n classificationId?: string\n /**\n * List of all services provided to the patient under a given contact which is linked by this sub-contact to other structuring elements.\n */\n services?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { StandardSubstance } from './StandardSubstance'\n\nexport class Substance {\n constructor(json: JSON | any) {\n Object.assign(this as Substance, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n code?: string\n chemicalForm?: string\n name?: SamText\n note?: SamText\n standardSubstances?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { StandardSubstance } from './StandardSubstance'\n\nexport class SubstanceStub {\n constructor(json: JSON | any) {\n Object.assign(this as SubstanceStub, json)\n }\n\n id?: string\n code?: string\n chemicalForm?: string\n name?: SamText\n note?: SamText\n standardSubstances?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Substanceproduct {\n constructor(json: JSON | any) {\n Object.assign(this as Substanceproduct, json)\n }\n\n intendedcds?: Array\n deliveredcds?: Array\n intendedname?: string\n deliveredname?: string\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Suggest {\n constructor(json: JSON | any) {\n Object.assign(this as Suggest, json)\n }\n\n filterKey?: string\n filterValue?: string\n entityClass?: string\n fieldValue?: string\n fieldDisplay?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { Partnership } from './Partnership'\nimport { PatientHealthCareParty } from './PatientHealthCareParty'\nimport { Service } from './Service'\n\nexport class SumehrContent {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrContent, json)\n }\n\n services?: Array\n healthElements?: Array\n partnerships?: Array\n patientHealthcareParties?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class SumehrExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrExportInfo, json)\n }\n\n secretForeignKeys?: Array\n excludedIds?: Array\n recipient?: HealthcareParty\n softwareName?: string\n softwareVersion?: string\n comment?: string\n includeIrrelevantInformation?: boolean\n services?: Array\n healthElements?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SumehrValidity {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrValidity, json)\n }\n\n sumehrValid?: SumehrValidity.SumehrValidEnum\n}\nexport namespace SumehrValidity {\n export type SumehrValidEnum = 'absent' | 'uptodate' | 'outdated'\n export const SumehrValidEnum = {\n Absent: 'absent' as SumehrValidEnum,\n Uptodate: 'uptodate' as SumehrValidEnum,\n Outdated: 'outdated' as SumehrValidEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class SupplyProblem {\n constructor(json: JSON | any) {\n Object.assign(this as SupplyProblem, json)\n }\n\n from?: number\n to?: number\n reason?: SamText\n expectedEndOn?: number\n impact?: SamText\n additionalInformation?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Suspension {\n constructor(json: JSON | any) {\n Object.assign(this as Suspension, json)\n }\n\n beginMoment?: number\n endMoment?: number\n suspensionReason?: string\n lifecycle?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Tag {\n constructor(json: JSON | any) {\n Object.assign(this as Tag, json)\n }\n\n type?: string\n tag?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { LetterValue } from './LetterValue'\nimport { Periodicity } from './Periodicity'\nimport { Valorisation } from './Valorisation'\n\nexport class Tarification {\n constructor(json: JSON | any) {\n Object.assign(this as Tarification, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n label?: { [key: string]: string }\n context?: string\n type?: string\n code?: string\n version?: string\n author?: string\n regions?: Array\n periodicity?: Array\n level?: number\n links?: Array\n qualifiedLinks?: { [key: string]: Array }\n flags?: Array\n searchTerms?: { [key: string]: Array }\n data?: string\n appendices?: { [key: string]: string }\n disabled?: boolean\n valorisations?: Array\n category?: { [key: string]: string }\n consultationCode?: boolean\n hasRelatedCode?: boolean\n needsPrescriber?: boolean\n relatedCodes?: Array\n nGroup?: string\n letterValues?: Array\n ngroup?: string\n}\nexport namespace Tarification {\n export type FlagsEnum =\n | 'male_only'\n | 'female_only'\n | 'deptkinesitherapy'\n | 'deptnursing'\n | 'deptgeneralpractice'\n | 'deptsocialworker'\n | 'deptpsychology'\n | 'deptadministrative'\n | 'deptdietetics'\n | 'deptspeechtherapy'\n | 'deptdentistry'\n | 'deptoccupationaltherapy'\n | 'depthealthcare'\n | 'deptgynecology'\n | 'deptpediatry'\n | 'deptalgology'\n | 'deptanatomopathology'\n | 'deptanesthesiology'\n | 'deptbacteriology'\n | 'deptcardiacsurgery'\n | 'deptcardiology'\n | 'deptchildandadolescentpsychiatry'\n | 'deptdermatology'\n | 'deptdiabetology'\n | 'deptemergency'\n | 'deptendocrinology'\n | 'deptgastroenterology'\n | 'deptgenetics'\n | 'deptgeriatry'\n | 'depthandsurgery'\n | 'depthematology'\n | 'deptinfectiousdisease'\n | 'deptintensivecare'\n | 'deptlaboratory'\n | 'deptmajorburns'\n | 'deptmaxillofacialsurgery'\n | 'deptmedicine'\n | 'deptmolecularbiology'\n | 'deptneonatalogy'\n | 'deptnephrology'\n | 'deptneurology'\n | 'deptneurosurgery'\n | 'deptnte'\n | 'deptnuclear'\n | 'deptnutritiondietetics'\n | 'deptobstetrics'\n | 'deptoncology'\n | 'deptophtalmology'\n | 'deptorthopedy'\n | 'deptpalliativecare'\n | 'deptpediatricintensivecare'\n | 'deptpediatricsurgery'\n | 'deptpharmacy'\n | 'deptphysicalmedecine'\n | 'deptphysiotherapy'\n | 'deptplasticandreparatorysurgery'\n | 'deptpneumology'\n | 'deptpodiatry'\n | 'deptpsychiatry'\n | 'deptradiology'\n | 'deptradiotherapy'\n | 'deptrevalidation'\n | 'deptrheumatology'\n | 'deptrhumatology'\n | 'deptsenology'\n | 'deptsocialservice'\n | 'deptsportsmedecine'\n | 'deptstomatology'\n | 'deptsurgery'\n | 'deptthoracicsurgery'\n | 'depttoxicology'\n | 'depttropicalmedecine'\n | 'depturology'\n | 'deptvascularsurgery'\n | 'deptvisceraldigestiveabdominalsurgery'\n | 'depttransplantsurgery'\n | 'deptpercutaneous'\n | 'deptchildbirth'\n export const FlagsEnum = {\n MaleOnly: 'male_only' as FlagsEnum,\n FemaleOnly: 'female_only' as FlagsEnum,\n Deptkinesitherapy: 'deptkinesitherapy' as FlagsEnum,\n Deptnursing: 'deptnursing' as FlagsEnum,\n Deptgeneralpractice: 'deptgeneralpractice' as FlagsEnum,\n Deptsocialworker: 'deptsocialworker' as FlagsEnum,\n Deptpsychology: 'deptpsychology' as FlagsEnum,\n Deptadministrative: 'deptadministrative' as FlagsEnum,\n Deptdietetics: 'deptdietetics' as FlagsEnum,\n Deptspeechtherapy: 'deptspeechtherapy' as FlagsEnum,\n Deptdentistry: 'deptdentistry' as FlagsEnum,\n Deptoccupationaltherapy: 'deptoccupationaltherapy' as FlagsEnum,\n Depthealthcare: 'depthealthcare' as FlagsEnum,\n Deptgynecology: 'deptgynecology' as FlagsEnum,\n Deptpediatry: 'deptpediatry' as FlagsEnum,\n Deptalgology: 'deptalgology' as FlagsEnum,\n Deptanatomopathology: 'deptanatomopathology' as FlagsEnum,\n Deptanesthesiology: 'deptanesthesiology' as FlagsEnum,\n Deptbacteriology: 'deptbacteriology' as FlagsEnum,\n Deptcardiacsurgery: 'deptcardiacsurgery' as FlagsEnum,\n Deptcardiology: 'deptcardiology' as FlagsEnum,\n Deptchildandadolescentpsychiatry: 'deptchildandadolescentpsychiatry' as FlagsEnum,\n Deptdermatology: 'deptdermatology' as FlagsEnum,\n Deptdiabetology: 'deptdiabetology' as FlagsEnum,\n Deptemergency: 'deptemergency' as FlagsEnum,\n Deptendocrinology: 'deptendocrinology' as FlagsEnum,\n Deptgastroenterology: 'deptgastroenterology' as FlagsEnum,\n Deptgenetics: 'deptgenetics' as FlagsEnum,\n Deptgeriatry: 'deptgeriatry' as FlagsEnum,\n Depthandsurgery: 'depthandsurgery' as FlagsEnum,\n Depthematology: 'depthematology' as FlagsEnum,\n Deptinfectiousdisease: 'deptinfectiousdisease' as FlagsEnum,\n Deptintensivecare: 'deptintensivecare' as FlagsEnum,\n Deptlaboratory: 'deptlaboratory' as FlagsEnum,\n Deptmajorburns: 'deptmajorburns' as FlagsEnum,\n Deptmaxillofacialsurgery: 'deptmaxillofacialsurgery' as FlagsEnum,\n Deptmedicine: 'deptmedicine' as FlagsEnum,\n Deptmolecularbiology: 'deptmolecularbiology' as FlagsEnum,\n Deptneonatalogy: 'deptneonatalogy' as FlagsEnum,\n Deptnephrology: 'deptnephrology' as FlagsEnum,\n Deptneurology: 'deptneurology' as FlagsEnum,\n Deptneurosurgery: 'deptneurosurgery' as FlagsEnum,\n Deptnte: 'deptnte' as FlagsEnum,\n Deptnuclear: 'deptnuclear' as FlagsEnum,\n Deptnutritiondietetics: 'deptnutritiondietetics' as FlagsEnum,\n Deptobstetrics: 'deptobstetrics' as FlagsEnum,\n Deptoncology: 'deptoncology' as FlagsEnum,\n Deptophtalmology: 'deptophtalmology' as FlagsEnum,\n Deptorthopedy: 'deptorthopedy' as FlagsEnum,\n Deptpalliativecare: 'deptpalliativecare' as FlagsEnum,\n Deptpediatricintensivecare: 'deptpediatricintensivecare' as FlagsEnum,\n Deptpediatricsurgery: 'deptpediatricsurgery' as FlagsEnum,\n Deptpharmacy: 'deptpharmacy' as FlagsEnum,\n Deptphysicalmedecine: 'deptphysicalmedecine' as FlagsEnum,\n Deptphysiotherapy: 'deptphysiotherapy' as FlagsEnum,\n Deptplasticandreparatorysurgery: 'deptplasticandreparatorysurgery' as FlagsEnum,\n Deptpneumology: 'deptpneumology' as FlagsEnum,\n Deptpodiatry: 'deptpodiatry' as FlagsEnum,\n Deptpsychiatry: 'deptpsychiatry' as FlagsEnum,\n Deptradiology: 'deptradiology' as FlagsEnum,\n Deptradiotherapy: 'deptradiotherapy' as FlagsEnum,\n Deptrevalidation: 'deptrevalidation' as FlagsEnum,\n Deptrheumatology: 'deptrheumatology' as FlagsEnum,\n Deptrhumatology: 'deptrhumatology' as FlagsEnum,\n Deptsenology: 'deptsenology' as FlagsEnum,\n Deptsocialservice: 'deptsocialservice' as FlagsEnum,\n Deptsportsmedecine: 'deptsportsmedecine' as FlagsEnum,\n Deptstomatology: 'deptstomatology' as FlagsEnum,\n Deptsurgery: 'deptsurgery' as FlagsEnum,\n Deptthoracicsurgery: 'deptthoracicsurgery' as FlagsEnum,\n Depttoxicology: 'depttoxicology' as FlagsEnum,\n Depttropicalmedecine: 'depttropicalmedecine' as FlagsEnum,\n Depturology: 'depturology' as FlagsEnum,\n Deptvascularsurgery: 'deptvascularsurgery' as FlagsEnum,\n Deptvisceraldigestiveabdominalsurgery: 'deptvisceraldigestiveabdominalsurgery' as FlagsEnum,\n Depttransplantsurgery: 'depttransplantsurgery' as FlagsEnum,\n Deptpercutaneous: 'deptpercutaneous' as FlagsEnum,\n Deptchildbirth: 'deptchildbirth' as FlagsEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * This entity represents available contact details of a user, reachable by telecom methods\n */\nexport class Telecom {\n constructor(json: JSON | any) {\n Object.assign(this as Telecom, json)\n }\n\n /**\n * The type of telecom method being used, ex: landline phone, mobile phone, email, fax, etc.\n */\n telecomType?: Telecom.TelecomTypeEnum\n telecomNumber?: string\n telecomDescription?: string\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Telecom {\n export type TelecomTypeEnum =\n | 'mobile'\n | 'phone'\n | 'email'\n | 'fax'\n | 'skype'\n | 'im'\n | 'medibridge'\n | 'ehealthbox'\n | 'apicrypt'\n | 'web'\n | 'print'\n | 'disk'\n | 'other'\n | 'pager'\n export const TelecomTypeEnum = {\n Mobile: 'mobile' as TelecomTypeEnum,\n Phone: 'phone' as TelecomTypeEnum,\n Email: 'email' as TelecomTypeEnum,\n Fax: 'fax' as TelecomTypeEnum,\n Skype: 'skype' as TelecomTypeEnum,\n Im: 'im' as TelecomTypeEnum,\n Medibridge: 'medibridge' as TelecomTypeEnum,\n Ehealthbox: 'ehealthbox' as TelecomTypeEnum,\n Apicrypt: 'apicrypt' as TelecomTypeEnum,\n Web: 'web' as TelecomTypeEnum,\n Print: 'print' as TelecomTypeEnum,\n Disk: 'disk' as TelecomTypeEnum,\n Other: 'other' as TelecomTypeEnum,\n Pager: 'pager' as TelecomTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * A high frequency time-series containing the ts in ms from the start (double) and the values\n */\nexport class TimeSeries {\n constructor(json: JSON | any) {\n Object.assign(this as TimeSeries, json)\n }\n\n fields?: Array\n samples?: Array>\n min?: Array\n max?: Array\n mean?: Array\n median?: Array\n variance?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { TimeTableItem } from './TimeTableItem'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { EntityWithDelegationTypeName } from '../../icc-x-api/utils/EntityWithDelegationTypeName'\n\nexport class TimeTable {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTable, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n agendaId?: string\n startTime?: number\n endTime?: number\n items?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n \n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TimeTableHour {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTableHour, json)\n }\n\n startHour?: number\n endHour?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { TimeTableHour } from './TimeTableHour'\n\nexport class TimeTableItem {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTableItem, json)\n }\n\n rruleStartDate?: number\n rrule?: string\n days?: Array\n recurrenceTypes?: Array\n hours?: Array\n calendarItemTypeId?: string\n homeVisit?: boolean\n placeId?: string\n publicTimeTableItem?: boolean\n acceptsNewPatient?: boolean\n unavailable?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TokenWithGroup {\n constructor(json: JSON | any) {\n Object.assign(this as TokenWithGroup, json)\n }\n\n token?: string\n groupId?: string\n groupName?: string\n}\n","import {CodeStub} from \"./CodeStub\";\nimport {SecurityMetadata} from \"./SecurityMetadata\";\nimport {Delegation} from \"./Delegation\";\nimport {EntityWithDelegationTypeName} from \"../../icc-x-api/utils/EntityWithDelegationTypeName\";\n\nexport class Topic {\n constructor(json: JSON | any) {\n Object.assign(this as Topic, json)\n }\n\n /**\n * The id of the topic. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the topic in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The timestamp (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * Name/basic description of the topic\n */\n description?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * List of participants to the topic and their role in the topic {@link TopicRole}\n *\n * This should not be used directly, in the future the format may change. Make sure to only edit this through methods of {@link IccTopicXApi}.\n */\n activeParticipants?: { [key: string]: TopicRole }\n\n linkedServices?: string[]\n\n linkedHealthElements?: string[]\n\n securityMetadata?: SecurityMetadata\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n \n}\n\nexport enum TopicRole {\n PARTICIPANT = 'PARTICIPANT',\n ADMIN = 'ADMIN',\n OWNER = 'OWNER',\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TypedValueObject {\n constructor(json: JSON | any) {\n Object.assign(this as TypedValueObject, json)\n }\n\n type?: TypedValueObject.TypeEnum\n booleanValue?: boolean\n integerValue?: number\n doubleValue?: number\n stringValue?: string\n dateValue?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace TypedValueObject {\n export type TypeEnum = 'BOOLEAN' | 'INTEGER' | 'DOUBLE' | 'STRING' | 'DATE' | 'CLOB' | 'JSON'\n export const TypeEnum = {\n BOOLEAN: 'BOOLEAN' as TypeEnum,\n INTEGER: 'INTEGER' as TypeEnum,\n DOUBLE: 'DOUBLE' as TypeEnum,\n STRING: 'STRING' as TypeEnum,\n DATE: 'DATE' as TypeEnum,\n CLOB: 'CLOB' as TypeEnum,\n JSON: 'JSON' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Unit {\n constructor(json: JSON | any) {\n Object.assign(this as Unit, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AuthenticationToken } from './AuthenticationToken'\nimport { Permission } from './Permission'\nimport { PropertyStub } from './PropertyStub'\nimport { Identifier } from './Identifier'\n\n/**\n * This entity is a root level object. It represents an user that can log in to the iCure platform. It is serialized in JSON and saved in the underlying icure-base CouchDB database.\n */\nexport class User {\n constructor(json: JSON | any) {\n Object.assign(this as User, json)\n }\n\n /**\n * the Id of the user. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the user in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n identifier?: Array\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n created?: number\n /**\n * Last name of the user. This is the official last name that should be used for official administrative purposes.\n */\n name?: string\n /**\n * Extra properties for the user. Those properties are typed (see class Property)\n */\n properties?: Array\n /**\n * If permission to modify patient data is granted or revoked\n */\n permissions?: Array\n /**\n * Roles specified for the user\n */\n roles?: Array\n /**\n * Authorization source for user. 'Database', 'ldap' or 'token'\n */\n type?: User.TypeEnum\n /**\n * State of user's activeness: 'Active', 'Disabled' or 'Registering'\n */\n status?: User.StatusEnum\n /**\n * Username for this user. We encourage using an email address\n */\n login?: string\n /**\n * Hashed version of the password (BCrypt is used for hashing)\n */\n passwordHash?: string\n /**\n * Secret token used to verify 2fa\n */\n secret?: string\n /**\n * Whether the user has activated two factors authentication\n */\n use2fa?: boolean\n /**\n * id of the group (practice/hospital) the user is member of\n */\n groupId?: string\n /**\n * Id of the healthcare party if the user is a healthcare party.\n */\n healthcarePartyId?: string\n /**\n * Id of the patient if the user is a patient\n */\n patientId?: string\n /**\n * Id of the device if the user is a device\n */\n deviceId?: string\n /**\n * Delegations that are automatically generated client side when a new database object is created by this user\n */\n autoDelegations?: { [key in User.AutoDelegationTagEnum]?: Array }\n /**\n * the timestamp (unix epoch in ms) of creation of the user, will be filled automatically if missing. Not enforced by the application server.\n */\n createdDate?: number\n /**\n * the timestamp (unix epoch in ms) of the latest validation of the terms of use of the application\n */\n termsOfUseDate?: number\n /**\n * email address of the user (used for token exchange or password recovery).\n */\n email?: string\n /**\n * mobile phone of the user (used for token exchange or password recovery).\n */\n mobilePhone?: string\n applicationTokens?: { [key: string]: string }\n /**\n * Encrypted and time-limited Authentication tokens used for inter-applications authentication\n */\n authenticationTokens?: { [key: string]: AuthenticationToken }\n /**\n * System metadata for the user: this configuration is read only, and defined only when using the cloud version of iCure.\n */\n systemMetadata?: User.SystemMetadata\n}\nexport namespace User {\n export type TypeEnum = 'database' | 'ldap' | 'token'\n export const TypeEnum = {\n Database: 'database' as TypeEnum,\n Ldap: 'ldap' as TypeEnum,\n Token: 'token' as TypeEnum,\n }\n export type StatusEnum = 'ACTIVE' | 'DISABLED' | 'REGISTERING'\n export const StatusEnum = {\n ACTIVE: 'ACTIVE' as StatusEnum,\n DISABLED: 'DISABLED' as StatusEnum,\n REGISTERING: 'REGISTERING' as StatusEnum,\n }\n export type AutoDelegationTagEnum =\n | 'all'\n | 'administrativeData'\n | 'generalInformation'\n | 'financialInformation'\n | 'medicalInformation'\n | 'sensitiveInformation'\n | 'confidentialInformation'\n | 'cdItemRisk'\n | 'cdItemFamilyRisk'\n | 'cdItemHealthcareelement'\n | 'cdItemHealthcareapproach'\n | 'cdItemAllergy'\n | 'cdItemDiagnosis'\n | 'cdItemLab'\n | 'cdItemResult'\n | 'cdItemParameter'\n | 'cdItemMedication'\n | 'cdItemTreatment'\n | 'cdItemVaccine'\n export const AutoDelegationTagEnum = {\n all: 'all' as AutoDelegationTagEnum,\n administrativeData: 'administrativeData' as AutoDelegationTagEnum,\n generalInformation: 'generalInformation' as AutoDelegationTagEnum,\n financialInformation: 'financialInformation' as AutoDelegationTagEnum,\n medicalInformation: 'medicalInformation' as AutoDelegationTagEnum,\n sensitiveInformation: 'sensitiveInformation' as AutoDelegationTagEnum,\n confidentialInformation: 'confidentialInformation' as AutoDelegationTagEnum,\n cdItemRisk: 'cdItemRisk' as AutoDelegationTagEnum,\n cdItemFamilyRisk: 'cdItemFamilyRisk' as AutoDelegationTagEnum,\n cdItemHealthcareelement: 'cdItemHealthcareelement' as AutoDelegationTagEnum,\n cdItemHealthcareapproach: 'cdItemHealthcareapproach' as AutoDelegationTagEnum,\n cdItemAllergy: 'cdItemAllergy' as AutoDelegationTagEnum,\n cdItemDiagnosis: 'cdItemDiagnosis' as AutoDelegationTagEnum,\n cdItemLab: 'cdItemLab' as AutoDelegationTagEnum,\n cdItemResult: 'cdItemResult' as AutoDelegationTagEnum,\n cdItemParameter: 'cdItemParameter' as AutoDelegationTagEnum,\n cdItemMedication: 'cdItemMedication' as AutoDelegationTagEnum,\n cdItemTreatment: 'cdItemTreatment' as AutoDelegationTagEnum,\n cdItemVaccine: 'cdItemVaccine' as AutoDelegationTagEnum,\n }\n\n export class SystemMetadata {\n constructor(json: JSON | any) {\n Object.assign(this as User, json)\n }\n\n /**\n * The roles of the user that the cloud environment recognizes\n */\n roles?: string[]\n /**\n * If the user is considered as an admin by the cloud environment\n */\n isAdmin?: boolean\n /**\n * True if the content of roles is inherited from the user's group configuration, false if the roles are defined specifically for the use\n */\n inheritsRoles?: boolean\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { User } from './User'\n\n/**\n * This entity embeds a User and its linked Healthcare Party.\n */\nexport class UserAndHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as UserAndHealthcareParty, json)\n }\n\n user?: User\n healthcareParty?: HealthcareParty\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Group } from './Group'\n\nexport class UserGroup {\n constructor(json: JSON | any) {\n Object.assign(this as UserGroup, json)\n }\n\n groupId?: string\n groupName?: string\n groupsHierarchy?: Array\n userId?: string\n login?: string\n name?: string\n email?: string\n phone?: string\n patientId?: string\n healthcarePartyId?: string\n deviceId?: string\n nameOfParentOfTopmostGroupInHierarchy?: string\n}\n","/**\n * Represents the type of a owner\n */\nexport enum UserTypeEnum {\n Patient = 'PATIENT',\n Hcp = 'HCP',\n Device = 'DEVICE',\n User = 'USER',\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Valorisation {\n constructor(json: JSON | any) {\n Object.assign(this as Valorisation, json)\n }\n\n startOfValidity?: number\n endOfValidity?: number\n predicate?: string\n reference?: Array\n totalAmount?: number\n reimbursement?: number\n patientIntervention?: number\n doctorSupplement?: number\n vat?: number\n label?: { [key: string]: string }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AddedDocument } from './AddedDocument'\n\nexport class Verse {\n constructor(json: JSON | any) {\n Object.assign(this as Verse, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n chapterName?: string\n paragraphName?: string\n verseSeq?: number\n startDate?: number\n createdTms?: number\n createdUserId?: string\n endDate?: number\n verseNum?: number\n verseSeqParent?: number\n verseLevel?: number\n verseType?: string\n checkBoxInd?: string\n minCheckNum?: number\n andClauseNum?: number\n textFr?: string\n textNl?: string\n requestType?: string\n agreementTerm?: number\n agreementTermUnit?: string\n maxPackageNumber?: number\n purchasingAdvisorQualList?: string\n legalReference?: string\n modificationDate?: number\n addedDocuments?: Array\n agreementYearMax?: number\n agreementRenewalMax?: number\n sexRestricted?: string\n minimumAgeAuthorized?: number\n maximumAgeAuthorized?: number\n maximumContentQuantity?: number\n maximumContentUnit?: string\n maximumStrengthQuantity?: number\n maximumStrengthUnit?: string\n maximumDurationQuantity?: number\n maximumDurationUnit?: string\n otherAddedDocumentInd?: string\n minimumAgeAuthorizedUnit?: string\n maximumAgeAuthorizedUnit?: string\n modificationStatus?: string\n children?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class VirtualForm {\n constructor(json: JSON | any) {\n Object.assign(this as VirtualForm, json)\n }\n\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { StrengthRange } from './StrengthRange'\nimport { SubstanceStub } from './SubstanceStub'\n\nexport class VirtualIngredient {\n constructor(json: JSON | any) {\n Object.assign(this as VirtualIngredient, json)\n }\n\n from?: number\n to?: number\n rank?: number\n type?: VirtualIngredient.TypeEnum\n strengthRange?: StrengthRange\n substance?: SubstanceStub\n}\nexport namespace VirtualIngredient {\n export type TypeEnum = 'ACTIVE_SUBSTANCE' | 'EXCIPIENT'\n export const TypeEnum = {\n ACTIVESUBSTANCE: 'ACTIVE_SUBSTANCE' as TypeEnum,\n EXCIPIENT: 'EXCIPIENT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CommentedClassification } from './CommentedClassification'\nimport { SamText } from './SamText'\nimport { VmpComponent } from './VmpComponent'\nimport { VmpGroupStub } from './VmpGroupStub'\nimport { Vtm } from './Vtm'\nimport { Wada } from './Wada'\n\nexport class Vmp {\n constructor(json: JSON | any) {\n Object.assign(this as Vmp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n vmpGroup?: VmpGroupStub\n name?: SamText\n abbreviation?: SamText\n vtm?: Vtm\n wadas?: Array\n components?: Array\n commentedClassifications?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { RouteOfAdministration } from './RouteOfAdministration'\nimport { SamText } from './SamText'\nimport { VirtualForm } from './VirtualForm'\nimport { VirtualIngredient } from './VirtualIngredient'\n\nexport class VmpComponent {\n constructor(json: JSON | any) {\n Object.assign(this as VmpComponent, json)\n }\n\n code?: string\n virtualForm?: VirtualForm\n routeOfAdministrations?: Array\n name?: SamText\n phaseNumber?: number\n virtualIngredients?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { NoGenericPrescriptionReason } from './NoGenericPrescriptionReason'\nimport { NoSwitchReason } from './NoSwitchReason'\nimport { SamText } from './SamText'\nimport { StandardDosage } from './StandardDosage'\n\nexport class VmpGroup {\n constructor(json: JSON | any) {\n Object.assign(this as VmpGroup, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n productId?: string\n code?: string\n name?: SamText\n noGenericPrescriptionReason?: NoGenericPrescriptionReason\n noSwitchReason?: NoSwitchReason\n standardDosage?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class VmpGroupStub {\n constructor(json: JSON | any) {\n Object.assign(this as VmpGroupStub, json)\n }\n\n id?: string\n code?: string\n name?: SamText\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { VmpGroupStub } from './VmpGroupStub'\n\nexport class VmpStub {\n constructor(json: JSON | any) {\n Object.assign(this as VmpStub, json)\n }\n\n id?: string\n code?: string\n vmpGroup?: VmpGroupStub\n name?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Vtm {\n constructor(json: JSON | any) {\n Object.assign(this as Vtm, json)\n }\n\n from?: number\n to?: number\n code?: string\n name?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Wada {\n constructor(json: JSON | any) {\n Object.assign(this as Wada, json)\n }\n\n code?: string\n name?: SamText\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Weekday {\n constructor(json: JSON | any) {\n Object.assign(this as Weekday, json)\n }\n\n weekday?: CodeStub\n weekNumber?: number\n}\n","/**\n * @internal this entity is meant for internal use only\n */\nexport class ExchangeData {\n constructor(json: JSON | any) {\n if (\n !json.delegator ||\n !json.delegate ||\n !json.exchangeKey ||\n !json.accessControlSecret ||\n !json.sharedSignatureKey ||\n !json.sharedSignature ||\n !json.delegatorSignature\n )\n throw new Error(`Exchange data json is missing required properties.\\n${JSON.stringify(json, undefined, 2)}`)\n Object.assign(this as ExchangeData, json)\n }\n\n /**\n * the Id of the exchange data. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the exchange data in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * ID of the data owner which created this exchange data, in order to share some data with the [delegate].\n */\n delegator!: string\n /**\n * ID of a data owner which can use this exchange data to access data shared with him by [delegator].\n */\n delegate!: string\n /**\n * Aes key to use for sharing data from the delegator to the delegate, encrypted with the public keys of both delegate\n * and delegator. This key should never be sent decrypted to the server, as it allows to read medical data.\n */\n exchangeKey!: { [keyPairFingerprint: string]: string }\n /**\n * Key used for access control to data shared from the delegator to the delegate, encrypted with the public keys of both\n * delegate and delegator.\n *\n * This key will be used by the client to calculate the keys of [HasSecureDelegationsAccessControl.securityMetadata] which\n * allows to implement a form of access control where the identity of data owners with access to a specific entity can't be\n * deduced from the database alone. This is useful for example to allow patients to access their medical data without creating\n * a deducible link between the patient and the medical data in the database.\n *\n * There are no strict requirements on how the client should use this secret to create the security metadata key, but for\n * authentication the client must be able to provide a 128 bit long access control key (see [DataOwnerAuthenticationDetails.accessControlKeys])\n * which once hashed using sha256 will give the key of the security metadata.\n * However, in order to avoid introducing undesired links between entities which could be detrimental to the patients privacy\n * the access control keys should be created also using information on the entity class and confidentiality level of information\n * in applications where hcps share information using a hierarchical structure.\n * ```\n * accessControlKey = sha256Bytes(accessControlSecret + entityClass + confidentialityLevel).take(16)\n * securityMetadataKey = sha256Hex(accessControlKey)\n * ```\n */\n accessControlSecret!: { [keyPairFingerprint: string]: string }\n /**\n * Encrypted signature key (hmac-sha256) shared between delegate and delegator, to allow either of them to modify\n * the exchange data, without voiding the authenticity guarantee.\n */\n sharedSignatureKey!: { [keyPairFingerprint: string]: string }\n /**\n * Signature to ensure the key data has not been tampered with by third parties (any actor without access to the\n * keypair of the delegator/delegate): when creating new exchange data the delegator will create a new hmac key and\n * sign it with his own private key.\n * This field will contain the signature by fingerprint of the public key to use for verification.\n */\n delegatorSignature!: { [keyPairFingerprint: string]: string }\n /**\n * Base 64 signature of the exchange data, to ensure it was not tampered by third parties. This signature validates:\n * - The (decrypted) exchange key\n * - The (decrypted) access control secret\n * - The delegator and delegates being part of the exchange data\n * - The public keys used in the exchange data (allows to consider them as verified in a second moment).\n */\n sharedSignature!: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when the delete method is called.\n */\n deletionDate?: number\n}\n","/**\n * @internal this entity is meant for internal use only\n */\nexport class RecoveryData {\n constructor(json: JSON | any) {\n if (!json.recipient || !json.encryptedSelf || !json.type)\n throw new Error(`Recovery data json is missing required properties.\\n${JSON.stringify(json)}`)\n Object.assign(this as RecoveryData, json)\n }\n\n id?: string\n rev?: string\n /**\n * Id of the data owner that this recovery data is meant for\n */\n recipient!: string\n /**\n * Encrypted recovery data. The structure of the decrypted data depends on the [type] of the recovery data.\n */\n encryptedSelf!: string\n /**\n * Type of the recovery data.\n */\n type!: RecoveryData.Type\n /**\n * Timestamp (unix epoch in ms) at which this recovery data will expire. If null, this recovery data will never\n * expire. Negative values or zero mean the data is already expired.\n */\n expirationInstant?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when the delete method is called.\n */\n deletionDate?: number\n}\nexport namespace RecoveryData {\n /**\n * Represents possible types of recovery data.\n */\n export enum Type {\n /**\n * This recovery data is meant to be used to recover a keypair of the recipient. This could be for making a key\n * available on another device, or for recovering a keypair that has been fully lost.\n */\n KEYPAIR_RECOVERY = 'KEYPAIR_RECOVERY',\n /**\n * This recovery data is meant to be used to recover an exchange key of the recipient. The main purpose of this\n * is to allow data owners to share data with other data owners that do not have created a keypair yet, but it\n * can also be used as part of the give-access-back recovery mechanism.\n */\n EXCHANGE_KEY_RECOVERY = 'EXCHANGE_KEY_RECOVERY',\n }\n}\n","import { SecurityMetadata } from '../SecurityMetadata'\nimport { b64_2ab } from '../ModelHelper'\nimport { Patient } from '../Patient'\n\n/**\n * @internal this entity is meant for internal use only\n */\nexport class SecureDelegationKeyMap {\n constructor(json: JSON | any) {\n Object.assign(this as SecureDelegationKeyMap, json)\n }\n\n id!: string\n rev?: string\n delegationKey!: string\n delegator?: string\n delegate?: string\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n}\n","import { AccessLog } from './AccessLog'\nimport { Article } from './Article'\nimport { Classification } from './Classification'\nimport { Document } from './Document'\nimport { HealthElement } from './HealthElement'\nimport { Invoice } from './Invoice'\nimport { Form } from './Form'\nimport { Contact } from './Contact'\nimport { CalendarItem } from './CalendarItem'\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { Message } from './Message'\nimport { Receipt } from './Receipt'\nimport { Patient } from './Patient'\nimport { Delegation } from './Delegation'\nimport { SecurityMetadata } from './SecurityMetadata'\nimport { IcureStub } from './IcureStub'\nimport { Topic } from './Topic'\n\nexport * from './AbstractFilterCode'\nexport * from './AbstractFilterContact'\nexport * from './AbstractFilterDevice'\nexport * from './AbstractFilterHealthElement'\nexport * from './AbstractFilterHealthcareParty'\nexport * from './AbstractFilterInvoice'\nexport * from './AbstractFilterMaintenanceTask'\nexport * from './AbstractFilterPatient'\nexport * from './AbstractFilterService'\nexport * from './AbstractFilterUser'\nexport * from './AccessLog'\nexport * from './AddedDocument'\nexport * from './Address'\nexport * from './AdministrationQuantity'\nexport * from './Agenda'\nexport * from './AgreementAppendix'\nexport * from './Amp'\nexport * from './AmpComponent'\nexport * from './Ampp'\nexport * from './AmppComponent'\nexport * from './Annotation'\nexport * from './ApplicationSettings'\nexport * from './AppointmentTypeAndPlace'\nexport * from './Article'\nexport * from './Atc'\nexport * from './AttachmentMetadata'\nexport * from './AuthenticationResponse'\nexport * from './AuthenticationToken'\nexport * from './Basic'\nexport * from './Body'\nexport * from './BulkAttachmentUpdateOptions'\nexport * from './CalendarItem'\nexport * from './CalendarItemTag'\nexport * from './CalendarItemType'\nexport * from './CareTeamMember'\nexport * from './CareTeamMembership'\nexport * from './CheckSMFPatientResult'\nexport * from './Classification'\nexport * from './ClassificationTemplate'\nexport * from './Code'\nexport * from './CodeStub'\nexport * from './CodeType'\nexport * from './CommentedClassification'\nexport * from './Commercialization'\nexport * from './Company'\nexport * from './Contact'\nexport * from './Content'\nexport * from './Copayment'\nexport * from './CryptoActorStub'\nexport * from './Data'\nexport * from './DataAttachment'\nexport * from './DataOwnerRegistrationSuccess'\nexport * from './DataOwnerWithType'\nexport * from './DatabaseInfo'\nexport * from './DatabaseInitialisation'\nexport * from './DatabaseSynchronization'\nexport * from './Delegation'\nexport * from './DeletedAttachment'\nexport * from './Device'\nexport * from './DeviceType'\nexport * from './DiaryNoteExportInfo'\nexport * from './Dmpp'\nexport * from './DocIdentifier'\nexport * from './Document'\nexport * from './DocumentGroup'\nexport * from './DocumentTemplate'\nexport * from './Duration'\nexport * from './EIDItem'\nexport * from './Editor'\nexport * from './EfactInvoice'\nexport * from './Employer'\nexport * from './EmploymentInfo'\nexport * from './EntityReference'\nexport * from './EntityTemplate'\nexport * from './Episode'\nexport * from './FilterChainCode'\nexport * from './FilterChainContact'\nexport * from './FilterChainDevice'\nexport * from './FilterChainHealthElement'\nexport * from './FilterChainHealthcareParty'\nexport * from './FilterChainInvoice'\nexport * from './FilterChainMaintenanceTask'\nexport * from './FilterChainPatient'\nexport * from './FilterChainService'\nexport * from './FilterChainUser'\nexport * from './FinancialInstitutionInformation'\nexport * from './FlatRateTarification'\nexport * from './FlowItem'\nexport * from './Form'\nexport * from './FormColumn'\nexport * from './FormDataOption'\nexport * from './FormLayout'\nexport * from './FormLayoutData'\nexport * from './FormPlanning'\nexport * from './FormSection'\nexport * from './FormTemplate'\nexport * from './FormTemplateLayout'\nexport * from './Formula'\nexport * from './FrontEndMigration'\nexport * from './Group'\nexport * from './GroupDatabasesInfo'\nexport * from './GuiCode'\nexport * from './GuiCodeType'\nexport * from './GroupDeletionReport'\nexport * from './HealthElement'\nexport * from './HealthcareParty'\nexport * from './HealthcarePartyHistoryStatus'\nexport * from './IcureStub'\nexport * from './IdWithRev'\nexport * from './Identifier'\nexport * from './IdentityDocumentReader'\nexport * from './ImportMapping'\nexport * from './ImportResult'\nexport * from './IncapacityExportInfo'\nexport * from './IndexingInfo'\nexport * from './Ingredient'\nexport * from './Insurability'\nexport * from './Insurance'\nexport * from './Invoice'\nexport * from './InvoiceItem'\nexport * from './InvoiceSender'\nexport * from './InvoicesBatch'\nexport * from './InvoicingCode'\nexport * from './Keyword'\nexport * from './KeywordSubword'\nexport * from './LabelledOccurence'\nexport * from './LetterValue'\nexport * from './ListOfIds'\nexport * from './ListOfProperties'\nexport * from './LoginCredentials'\nexport * from './MaintenanceTask'\nexport * from './MapOfIds'\nexport * from './Measure'\nexport * from './MedexInfo'\nexport * from './MedicalHouseContract'\nexport * from './MedicalLocation'\nexport * from './Medication'\nexport * from './MedicationSchemeExportInfo'\nexport * from './Medicinalproduct'\nexport * from './Message'\nexport * from './MessageAttachment'\nexport * from './MessageReadStatus'\nexport * from './MessageWithBatch'\nexport * from './MessagesReadStatusUpdate'\nexport * from './MimeAttachment'\nexport * from './Nmp'\nexport * from './NoGenericPrescriptionReason'\nexport * from './NoSwitchReason'\nexport * from './NumeratorRange'\nexport * from './PackagingType'\nexport * from './PaginatedDocumentKeyIdPairObject'\nexport * from './PaginatedListAccessLog'\nexport * from './PaginatedListAmp'\nexport * from './PaginatedListClassification'\nexport * from './PaginatedListClassificationTemplate'\nexport * from './PaginatedListCode'\nexport * from './PaginatedListContact'\nexport * from './PaginatedListDevice'\nexport * from './PaginatedListDocument'\nexport * from './PaginatedListEntityTemplate'\nexport * from './PaginatedListForm'\nexport * from './PaginatedListGroup'\nexport * from './PaginatedListHealthcareParty'\nexport * from './PaginatedListHealthElement'\nexport * from './PaginatedListInsurance'\nexport * from './PaginatedListInvoice'\nexport * from './PaginatedListMaintenanceTask'\nexport * from './PaginatedListMedicalLocation'\nexport * from './PaginatedListMessage'\nexport * from './PaginatedListNmp'\nexport * from './PaginatedListPatient'\nexport * from './PaginatedListService'\nexport * from './PaginatedListString'\nexport * from './PaginatedListTarification'\nexport * from './PaginatedListTopic'\nexport * from './PaginatedListUser'\nexport * from './PaginatedListVmp'\nexport * from './PaginatedListVmpGroup'\nexport * from './Paragraph'\nexport * from './ParagraphAgreement'\nexport * from './Part'\nexport * from './Partnership'\nexport * from './Patient'\nexport * from './PatientHealthCareParty'\nexport * from './Payment'\nexport * from './Periodicity'\nexport * from './Permission'\nexport * from './PermissionItem'\nexport * from './PersonName'\nexport * from './PharmaceuticalForm'\nexport * from './PharmaceuticalFormStub'\nexport * from './Place'\nexport * from './PlanOfAction'\nexport * from './Predicate'\nexport * from './Pricing'\nexport * from './PropertyStub'\nexport * from './PropertyTypeStub'\nexport * from './PublicKey'\nexport * from './Quantity'\nexport * from './Range'\nexport * from './Receipt'\nexport * from './ReferenceRange'\nexport * from './ReferralPeriod'\nexport * from './RegimenItem'\nexport * from './RegistrationInformation'\nexport * from './RegistrationSuccess'\nexport * from './Reimbursement'\nexport * from './ReimbursementCriterion'\nexport * from './Remote'\nexport * from './RemoteAuthentication'\nexport * from './Renewal'\nexport * from './Replication'\nexport * from './ReplicateCommand'\nexport * from './ReplicationInfo'\nexport * from './ReplicationStats'\nexport * from './ReplicatorDocument'\nexport * from './ReplicatorResponse'\nexport * from './ResultInfo'\nexport * from './Right'\nexport * from './Role'\nexport * from './RoleConfiguration'\nexport * from './RoleSourceEnum'\nexport * from './RouteOfAdministration'\nexport * from './SamText'\nexport * from './SamVersion'\nexport * from './SchoolingInfo'\nexport * from './Section'\nexport * from './Service'\nexport * from './ServiceLink'\nexport * from './SoftwareMedicalFileExport'\nexport * from './StandardSubstance'\nexport * from './StrengthRange'\nexport * from './StructureElement'\nexport * from './SubContact'\nexport * from './Substance'\nexport * from './SubstanceStub'\nexport * from './Substanceproduct'\nexport * from './Suggest'\nexport * from './SumehrContent'\nexport * from './SumehrExportInfo'\nexport * from './SumehrValidity'\nexport * from './SupplyProblem'\nexport * from './Suspension'\nexport * from './Tag'\nexport * from './Tarification'\nexport * from './Telecom'\nexport * from './TimeSeries'\nexport * from './TimeTable'\nexport * from './TimeTableHour'\nexport * from './TimeTableItem'\nexport * from './TokenWithGroup'\nexport * from './TypedValueObject'\nexport * from './Unit'\nexport * from './User'\nexport * from './UserAndHealthcareParty'\nexport * from './UserGroup'\nexport * from './UserTypeEnum'\nexport * from './Valorisation'\nexport * from './Verse'\nexport * from './VirtualForm'\nexport * from './VirtualIngredient'\nexport * from './Vmp'\nexport * from './VmpComponent'\nexport * from './VmpGroup'\nexport * from './VmpGroupStub'\nexport * from './VmpStub'\nexport * from './Vtm'\nexport * from './Wada'\nexport * from './Weekday'\nexport * from './SecurityMetadata'\nexport * from './SecureDelegation'\nexport * from './Topic'\nexport * from './Connection'\nexport * from './ISO639_1'\n\nexport type EncryptedEntity =\n | AccessLog\n | Article\n | CalendarItem\n | Classification\n | Contact\n | Document\n | Form\n | HealthElement\n | Invoice\n | MaintenanceTask\n | Message\n | Patient\n | Receipt\n | Topic\n\nexport type EncryptedEntityStub =\n | {\n // When changing remember to also update icc-x-api/crypto/utils/encryptedStubEquals\n id?: string\n secretForeignKeys?: Array\n cryptedForeignKeys?: { [key: string]: Delegation[] }\n delegations?: { [key: string]: Delegation[] }\n encryptionKeys?: { [key: string]: Delegation[] }\n encryptedSelf?: string\n securityMetadata?: SecurityMetadata\n }\n | IcureStub\n\nexport type EncryptedParentEntity = Message | Patient\n","import { RejectedShareOrMetadataUpdateRequest } from './RejectedShareOrMetadataUpdateRequest'\nimport { EncryptedEntity } from '../models'\n\n/**\n * Result of a bulk share operation.\n */\nexport class EntityBulkShareResult {\n constructor(json: JSON | any, entityConstructor: new (json: JSON | any) => T) {\n Object.assign(this as EntityBulkShareResult, json)\n if (json['updatedEntity']) {\n this.updatedEntity = new entityConstructor(json['updatedEntity'])\n }\n }\n\n /**\n * The updated entity. Non-null if at least one of the requests succeeded.\n */\n updatedEntity?: T\n /**\n * Id of the entity for which the update was requested.\n */\n entityId!: string\n /**\n * Last known revision of the entity before any update, non-null only if an entity matching the requests could be\n * found. This can help to understand if an error is caused by an outdated version of the entity on the client-side.\n */\n entityRev?: string\n /**\n * If a `bulkShare` method fails to apply any of the share requests for an entity this map associates the id of the\n * original failed request to the reason of failure.\n */\n rejectedRequests?: { [requestId: string]: RejectedShareOrMetadataUpdateRequest }\n}\n","export class EntityShareRequest {\n constructor(params: {\n explicitDelegator?: string\n explicitDelegate?: string\n accessControlKeys: string[]\n secretIds?: string[]\n encryptionKeys?: string[]\n owningEntityIds?: string[]\n exchangeDataId?: string\n encryptedExchangeDataId?: { [fp: string]: string }\n requestedPermissions?: EntityShareRequest.RequestedPermissionInternal\n }) {\n if (!params.accessControlKeys.length) throw new Error('Access control keys should not be empty')\n this.explicitDelegator = params.explicitDelegator\n this.explicitDelegate = params.explicitDelegate\n this.accessControlKeys = params.accessControlKeys\n this.secretIds = params.secretIds\n this.encryptionKeys = params.encryptionKeys\n this.owningEntityIds = params.owningEntityIds\n this.exchangeDataId = params.exchangeDataId\n this.encryptedExchangeDataId = params.encryptedExchangeDataId\n this.requestedPermissions = params.requestedPermissions ?? EntityShareRequest.RequestedPermissionInternal.MAX_WRITE\n }\n\n /**\n * Id of the data owner which is sharing the entity (delegator), if it should be explicitly indicated or null if the\n * delegator requires anonymous delegations. If not null this must match the logged data owner id.\n */\n explicitDelegator?: string\n /**\n * Id of the data owner which will gain access to the entity (delegate), if it should be explicitly indicated or\n * null if the delegate requires anonymous delegations.\n */\n explicitDelegate?: string\n /**\n * The access control keys obtained from the access control secrets of the exchange data used for the encryption of the ids and keys\n * to share. These are also used to uniquely identify an instance of share metadata.\n */\n accessControlKeys: string[]\n /**\n * Encrypted secret ids to share with the delegate.\n */\n secretIds?: string[]\n /**\n * Encrypted encryption keys to share with the delegate.\n */\n encryptionKeys?: string[]\n /**\n * Encrypted owning entity ids to share with the delegate.\n */\n owningEntityIds?: string[]\n /**\n * Id of the exchange data used for the encryption of the ids and keys to share. Must be null at least one of\n * delegator or delegate is not explicit.\n */\n exchangeDataId?: string\n /**\n * Must be non-empty if exactly one of delegator or delegate is explicit and the other is not, empty in all other\n * cases.\n */\n encryptedExchangeDataId?: { [fp: string]: string }\n /**\n * Permissions requested for the delegate.\n */\n requestedPermissions: EntityShareRequest.RequestedPermissionInternal\n}\n\nexport namespace EntityShareRequest {\n /**\n * Strategy to use for the calculation of permissions for the new [SecureDelegation.permissions]\n */\n export type RequestedPermissionEnum = 'FULL_READ' | 'MAX_WRITE' | 'FULL_WRITE'\n export const RequestedPermissionEnum = {\n /**\n * The new secure delegation will give full-read access to the delegate. If in future iCure is going to support\n * fine-grained access control a user may have limited read access to an entity, and in such case the request\n * would fail (similarly to [FULL_WRITE]).\n */\n FULL_READ: 'FULL_READ' as RequestedPermissionEnum,\n\n /**\n * The new secure delegation will give maximum access to the delegate, depending on the rights of the delegator.\n * If the delegator has full-write access the delegate will also have full-write access else the delegate will\n * have full-read access.\n */\n MAX_WRITE: 'MAX_WRITE' as RequestedPermissionEnum,\n\n /**\n * The new secure delegation will give full-write access to the delegate. If the delegator does not have\n * full-write access to the entity the request will fail.\n */\n FULL_WRITE: 'FULL_WRITE' as RequestedPermissionEnum,\n }\n\n /**\n * @internal this type is for internal use only and may be changed without notice.\n * Additional values for requested permissions which are used automatically by the extended apis and should not\n * be used directly by the user.\n */\n export type RequestedPermissionInternal = 'ROOT' | RequestedPermissionEnum\n export const RequestedPermissionInternal = {\n /**\n * Request to create a root delegation on the entity. Usually new entities are created with a root delegation\n * for the creator data owner and no other data owners will be able to obtain root permissions, but there are\n * some situations where other data owners can create root delegations on existing entities:\n * - If a data owner has a legacy delegation on an entity he can create a root delegation. This is necessary in\n * cases where the data owner wants to share an entity with another data owner using the new delegation format\n * but does not have a delegation in the new format yet (the data owner creates a new root delegation self->self\n * and then creates a delegation self->other).\n * - A patient data owner is always allowed to create a root delegation for himself\n *\n * A root delegation gives full write permissions to the data owners which can access it (usually a root\n * delegation should be accessible only for one data owner, it should be a delegation a->a) and does not depend\n * on any other delegation: this means that no data owners except for the data owners with the root permission\n * can revoke it.\n */\n ROOT: 'ROOT' as RequestedPermissionInternal,\n FULL_READ: RequestedPermissionEnum.FULL_READ as RequestedPermissionInternal,\n MAX_WRITE: RequestedPermissionEnum.MAX_WRITE as RequestedPermissionInternal,\n FULL_WRITE: RequestedPermissionEnum.FULL_WRITE as RequestedPermissionInternal,\n }\n}\n","/**\n * Parameters for the update of shared metadata. Currently only changes to secret ids, encryption keys and owning entity\n * ids are allowed. In the future we are going to allow also changes to the permissions of users with access to the\n * shared metadata.\n */\nexport class EntitySharedMetadataUpdateRequest {\n constructor(params: {\n metadataAccessControlHash: string\n secretIds?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n encryptionKeys?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n owningEntityIds?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n }) {\n this.metadataAccessControlHash = params.metadataAccessControlHash\n this.secretIds = params.secretIds\n this.encryptionKeys = params.encryptionKeys\n this.owningEntityIds = params.owningEntityIds\n }\n\n /**\n * Access control hash of the metadata to update.\n */\n metadataAccessControlHash: string\n /**\n * Updates for secret ids: the key is an encrypted secret id and the value is if an entry with that encrypted secret\n * id should be created or deleted.\n */\n secretIds?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n /**\n * Updates for encryption keys: a key in the map is an encrypted encrpytion key and the value is if an entry with\n * that encrypted encryption key should be created or deleted.\n */\n encryptionKeys?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n /**\n * Updates for owning entity ids: the key is the encrypted id of an owning entity and the value is if an entry with\n * that encrypted owning entity id should be created or deleted.\n */\n owningEntityIds?: { [encryptedData: string]: EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum }\n}\nexport namespace EntitySharedMetadataUpdateRequest {\n /**\n * Specifies if an entry should be created anew or deleted\n */\n export type EntryUpdateTypeEnum = 'CREATE' | 'DELETE'\n export const EntryUpdateTypeEnum = {\n CREATE: 'CREATE' as EntryUpdateTypeEnum,\n DELETE: 'DELETE' as EntryUpdateTypeEnum,\n }\n}\n","import { RejectedShareOrMetadataUpdateRequest } from './RejectedShareOrMetadataUpdateRequest'\nimport { EncryptedEntity } from '../models'\n\n/**\n * Result of a bulk share operation.\n */\nexport class MinimalEntityBulkShareResult {\n constructor(json: JSON | any) {\n Object.assign(this as MinimalEntityBulkShareResult, json)\n }\n\n /**\n * Id of the entity for which the update was requested.\n */\n entityId!: string\n /**\n * Last known revision of the entity before any update, non-null only if an entity matching the requests could be\n * found. This can help to understand if an error is caused by an outdated version of the entity on the client-side.\n */\n entityRev?: string\n /**\n * If a `bulkShare` method fails to apply any of the share requests for an entity this map associates the id of the\n * original failed request to the reason of failure.\n */\n rejectedRequests?: { [requestId: string]: RejectedShareOrMetadataUpdateRequest }\n}\n","import { AuthService } from './AuthService'\nimport { IccAuthApi } from '../../icc-api'\nimport { EnsembleAuthService } from './EnsembleAuthService'\nimport { JwtBridgedAuthService } from './JwtBridgedAuthService'\nimport { NoAuthService } from './NoAuthService'\nimport { BasicAuthService } from './BasicAuthService'\nimport { JwtAuthService } from './JwtAuthService'\nimport { UserGroup } from '../../icc-api/model/UserGroup'\n\n/**\n * @internal you should not implement this interface yourself.\n */\nexport interface AuthenticationProvider {\n /**\n * @internal this method is meant for internal use only and may be changed without notice\n */\n getAuthService(): AuthService\n\n /**\n * @internal this method is meant for internal use only and may be changed without notice\n * Gives a new authentication provider for the same user and authentication method but for a different iCure group\n * @param newGroupId id of the new group to switch to\n * @param matches the list of groups the user is in, containing also the group-specific id of the user. Note that users with same login username but\n * different password are considered as if they are different users and should not appear in these matches. You can get this list by calling\n * {@link IccUserApi.getMatchingUsers} authenticated.\n * @return a new authentication provider\n */\n switchGroup(newGroupId: string, matches: Array): Promise\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined>\n}\n\nexport class EnsembleAuthenticationProvider implements AuthenticationProvider {\n private readonly basicAuth: BasicAuthService\n private jwtAuth: JwtAuthService | JwtBridgedAuthService\n private suspensionEnd: Date | undefined\n\n constructor(\n private readonly authApi: IccAuthApi,\n private readonly username: string,\n private readonly password: string,\n private readonly jwtTimeout: number = 3600,\n jwtAuth?: JwtAuthService | JwtBridgedAuthService,\n basicAuth?: BasicAuthService,\n thirdPartyTokens: { [thirdParty: string]: string } = {}\n ) {\n this.jwtAuth = jwtAuth ?? new JwtBridgedAuthService(this.authApi, this.username, this.password, thirdPartyTokens, undefined)\n this.basicAuth = basicAuth ?? new BasicAuthService(this.username, this.password)\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.jwtAuth.getIcureTokens()\n }\n\n getAuthService(): AuthService {\n // If the jwtAuth is in an error state, it instantiates a new one,\n // but it will not use it until the suspension ends\n if (this.jwtAuth.isInErrorState()) {\n console.warn('Error state in JWT, I will skip it')\n this.jwtAuth = new JwtBridgedAuthService(this.authApi, this.username, this.password, {}, undefined)\n this.suspensionEnd = new Date(new Date().getTime() + this.jwtTimeout * 1000)\n }\n\n return !!this.suspensionEnd && new Date() <= this.suspensionEnd\n ? new EnsembleAuthService(null, new NoAuthService(), this.basicAuth)\n : new EnsembleAuthService(this.jwtAuth, new NoAuthService(), this.basicAuth)\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n const switchInfo = await switchJwtAuth(this.authApi, this.jwtAuth, this.username, this.password, newGroupId, matches)\n return new EnsembleAuthenticationProvider(\n this.authApi,\n switchInfo.loginForGroup,\n this.password,\n this.jwtTimeout,\n switchInfo.switchedJwtAuth,\n new BasicAuthService(switchInfo.loginForGroup, this.password)\n )\n }\n}\n\nexport class JwtAuthenticationProvider implements AuthenticationProvider {\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.jwtAuth.getIcureTokens()\n }\n\n private readonly jwtAuth: JwtAuthService | JwtBridgedAuthService\n\n /**\n * @internal\n * @param authApi\n * @param username\n * @param password\n * @param jwtAuth\n * @param icureToken\n */\n constructor(\n private readonly authApi: IccAuthApi,\n private readonly username?: string,\n private readonly password?: string,\n jwtAuth?: JwtAuthService | JwtBridgedAuthService,\n icureToken?: { token: string; refreshToken: string }\n ) {\n const composedAuth =\n jwtAuth ??\n (!!username && !!password\n ? new JwtBridgedAuthService(\n authApi,\n username!,\n password!,\n {},\n icureToken ? { authJwt: icureToken.token, refreshJwt: icureToken.refreshToken } : undefined\n )\n : icureToken\n ? new JwtAuthService(authApi, { authJwt: icureToken.token, refreshJwt: icureToken.refreshToken })\n : undefined)\n if (!composedAuth) {\n throw new Error('No authentication method provided')\n }\n this.jwtAuth = composedAuth\n }\n\n getAuthService(): AuthService {\n return this.jwtAuth\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n const switchInfo = await switchJwtAuth(this.authApi, this.jwtAuth, this.username, this.password, newGroupId, matches)\n return new JwtAuthenticationProvider(this.authApi, switchInfo.loginForGroup, this.password, switchInfo.switchedJwtAuth)\n }\n}\n\nexport class BasicAuthenticationProvider implements AuthenticationProvider {\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return Promise.resolve() as Promise\n }\n\n constructor(private username: string, private password: string) {}\n\n getAuthService(): AuthService {\n return new BasicAuthService(this.username, this.password)\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n return Promise.resolve(new BasicAuthenticationProvider(loginForGroup(newGroupId, matches), this.password))\n }\n}\n\nexport class NoAuthenticationProvider implements AuthenticationProvider {\n getAuthService(): AuthService {\n return new NoAuthService()\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return Promise.resolve() as Promise\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n return Promise.resolve(new NoAuthenticationProvider())\n }\n}\n\n/**\n * @internal\n */\nfunction loginForGroup(groupId: string, matches: Array): string {\n const matchForGroup = matches.find((x) => x.groupId === groupId)\n if (!matchForGroup?.userId) {\n throw new Error(`Can't switch to group ${groupId} for the current user.`)\n }\n return `${groupId}/${matchForGroup.userId}`\n}\n\n/**\n * @internal\n * Creates a jwtAuth from an existing one in order to switch group\n */\nasync function switchJwtAuth(\n authApi: IccAuthApi,\n jwtAuth: JwtAuthService | JwtBridgedAuthService,\n username: string | undefined,\n password: string | undefined,\n newGroupId: string,\n matches: Array\n): Promise<{ loginForGroup: string; switchedJwtAuth: JwtAuthService | JwtBridgedAuthService }> {\n const refreshToken = jwtAuth.isInErrorState() ? undefined : await jwtAuth.refreshToken\n const switchedJwtInfo = refreshToken ? await authApi.switchGroup(refreshToken, newGroupId).catch(() => undefined as any) : undefined\n const updatedLogin = loginForGroup(newGroupId, matches)\n const switchedJwtAuth =\n !!username && !!password\n ? new JwtBridgedAuthService(\n authApi,\n updatedLogin,\n password,\n {},\n switchedJwtInfo?.token && switchedJwtInfo?.refreshToken\n ? { authJwt: switchedJwtInfo.token, refreshJwt: switchedJwtInfo.refreshToken }\n : undefined\n )\n : new JwtAuthService(\n authApi,\n switchedJwtInfo?.token && switchedJwtInfo?.refreshToken\n ? { authJwt: switchedJwtInfo.token, refreshJwt: switchedJwtInfo.refreshToken }\n : undefined\n )\n return { loginForGroup: updatedLogin, switchedJwtAuth }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport Header = XHR.Header\nimport { b2a } from '../utils'\n\nexport class BasicAuthService implements AuthService {\n private error: Error | null = null\n\n constructor(private username: string, private password: string) {}\n\n getAuthHeaders(): Promise> {\n if (!!this.error) {\n throw this.error\n }\n return Promise.resolve([new Header('Authorization', `Basic ${this._base64Encode(`${this.username}:${this.password}`)}`)])\n }\n\n private _base64Encode(decodedString: string): string {\n return b2a(decodedString)\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { JwtBridgedAuthService } from './JwtBridgedAuthService'\nimport { NoAuthService } from './NoAuthService'\nimport { BasicAuthService } from './BasicAuthService'\nimport Header = XHR.Header\nimport XHRError = XHR.XHRError\nimport { JwtAuthService } from './JwtAuthService'\n\nexport class EnsembleAuthService implements AuthService {\n private currentState: string | null\n private error: Error | null = null\n private stateMap: { [key: string]: { state: AuthService | null; next: string | null } }\n readonly jwtGetter = this.getIcureTokens\n\n constructor(\n private readonly jwtAuth: JwtBridgedAuthService | JwtAuthService | null,\n private readonly sessionAuth: NoAuthService,\n private readonly basicAuth: BasicAuthService\n ) {\n this.stateMap = {\n start: { state: null, next: 'jwt' },\n jwt: { state: this.jwtAuth, next: 'session' },\n session: { state: this.sessionAuth, next: 'basic' },\n basic: { state: this.basicAuth, next: null },\n }\n this.currentState = 'start'\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.jwtAuth?.getIcureTokens() ?? (Promise.resolve() as Promise)\n }\n\n async getAuthHeaders(minimumAuthenticationClass: number | undefined): Promise> {\n this.currentState = !!this.currentState ? this.stateMap[this.currentState].next : this.currentState\n\n if (!!this.currentState) {\n // If I have a state I return the headers, otherwise I return empty headers\n // And delegate the responsibility of handling the error to the next call\n return !!this.stateMap[this.currentState].state\n ? this.stateMap[this.currentState].state!.getAuthHeaders(minimumAuthenticationClass).catch((e) => {\n if (e instanceof XHRError && e.statusCode === 417) {\n throw e\n }\n // If I get an error, it is also responsibility of the next call, but I give a warning\n console.warn(e.message)\n this.error = e\n\n return []\n })\n : Promise.resolve([])\n } else if (!!this.error) {\n // If I have no more states, I throw the last error or a default one\n throw this.error\n } else {\n throw new Error('Cannot authenticate')\n }\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n if (!!this.currentState) {\n this.stateMap[this.currentState].state?.invalidateHeader(error)\n }\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { IccAuthApi } from '../../icc-api'\nimport Header = XHR.Header\nimport { isJwtInvalidOrExpired } from './JwtUtils'\nimport { JwtError } from './JwtError'\n\n/**\n * Differs from JwtBridgedAuthService in that it cannot create new refresh tokens\n */\nexport class JwtAuthService implements AuthService {\n private _error: Error | null = null\n private _currentPromise: Promise<{ authJwt: string; refreshJwt: string } | undefined> = Promise.resolve(undefined as any)\n readonly jwtGetter = this.getIcureTokens\n\n constructor(private readonly authApi: IccAuthApi, initialJwt?: { authJwt: string; refreshJwt: string }) {\n if (!!initialJwt) {\n this._currentPromise = Promise.resolve(initialJwt)\n }\n }\n\n get refreshToken(): Promise {\n return this._currentPromise.then((x) => x?.refreshJwt as any)\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this._currentPromise.then((x) => (x ? { token: x.authJwt, refreshToken: x.refreshJwt } : undefined))\n }\n\n async getAuthHeaders(): Promise> {\n return this._currentPromise\n .then(\n (x) => ({ authJwt: x?.authJwt, refreshJwt: x?.refreshJwt }),\n (e: Error) => {\n if (e instanceof JwtError && !!e.jwt && !!e.refreshJwt) {\n return { authJwt: e.jwt, refreshJwt: e.refreshJwt }\n } else {\n throw new Error('There was an error while refreshing the token, please re-instantiate the API.')\n }\n }\n )\n .then((x) => {\n const authJwt = x?.authJwt\n const refreshJwt = x?.refreshJwt\n\n if ((!authJwt || isJwtInvalidOrExpired(authJwt)) && refreshJwt) {\n // If it does not have the JWT, tries to get it\n // If the JWT is expired, tries to refresh it\n\n this._currentPromise = this._refreshAuthJwt(refreshJwt).then(\n (updatedTokens) => {\n // If here the token is null,\n // it goes in a suspension status\n if (!updatedTokens.authJwt) {\n throw new Error('Your iCure back-end version does not support JWT authentication')\n }\n\n return updatedTokens\n },\n (e: Error) => {\n throw new JwtError(authJwt, refreshJwt, 'There was an error while refreshing the token, please re-instantiate the API or try again.', e)\n }\n )\n } else if (!!this._error) {\n throw this._error\n }\n return this._currentPromise\n })\n .then((x) => {\n return x?.authJwt ? [new XHR.Header('Authorization', `Bearer ${x.authJwt}`)] : Promise.reject('Cannot provide auth: No JWT')\n })\n }\n\n private async _refreshAuthJwt(refreshJwt: string): Promise<{ authJwt: string; refreshJwt: string }> {\n // If I do not have a refresh JWT or the refresh JWT is expired,\n // I have to log in again\n if (isJwtInvalidOrExpired(refreshJwt)) {\n throw Error('Missing or expired refresh token: please log in again')\n } else {\n return this.authApi.refreshAuthenticationJWT(refreshJwt).then((refreshResponse) => ({\n authJwt: refreshResponse.token!,\n refreshJwt: refreshJwt,\n }))\n }\n }\n\n invalidateHeader(error: Error): void {\n this._error = error\n }\n\n isInErrorState(): boolean {\n return !!this._error\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { IccAuthApi, OAuthThirdParty } from '../../icc-api'\nimport { LoginCredentials } from '../../icc-api/model/LoginCredentials'\nimport Header = XHR.Header\nimport { a2b } from '../utils'\nimport { AuthenticationResponse } from '../../icc-api/model/AuthenticationResponse'\nimport XHRError = XHR.XHRError\nimport { JwtError } from './JwtError'\n\n/**\n * Differs from JwtAuthService in that it can create new refresh tokens if the old one is expired\n */\nexport class JwtBridgedAuthService implements AuthService {\n private _error: Error | null = null\n private _currentPromise: Promise<{ authJwt?: string; refreshJwt?: string }> = Promise.resolve({})\n readonly jwtGetter = this.getIcureTokens\n\n constructor(\n private authApi: IccAuthApi,\n private username: string | undefined,\n private password: string | undefined,\n private thirdPartyTokens: { [thirdParty: string]: string } = {},\n initialJwt: { authJwt: string; refreshJwt: string } | undefined\n ) {\n this._currentPromise = Promise.resolve(initialJwt ?? {})\n }\n\n get refreshToken(): Promise {\n return this._currentPromise.then((x) => x.refreshJwt as any)\n }\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.getAuthHeaders().then(() => this._currentPromise.then(({ authJwt, refreshJwt }) => ({ token: authJwt!, refreshToken: refreshJwt! })))\n }\n\n async getJWT(): Promise {\n return this._currentPromise\n .then(\n ({ authJwt, refreshJwt }) => ({ authJwt, refreshJwt }),\n (e: Error) => {\n if (e instanceof JwtError) {\n const wrappedError = e.reason as any\n if (!!wrappedError.statusCode && wrappedError.statusCode >= 400 && wrappedError.statusCode < 500) {\n return { authJwt: undefined, refreshJwt: undefined }\n } else {\n return { authJwt: e.jwt, refreshJwt: e.refreshJwt }\n }\n } else {\n return { authJwt: undefined, refreshJwt: undefined }\n }\n }\n )\n .then(({ authJwt, refreshJwt }) => {\n if (!authJwt || this._isJwtInvalidOrExpired(authJwt)) {\n // If it does not have the JWT, tries to get it\n // If the JWT is expired, tries to refresh it\n\n this._currentPromise = this._refreshAuthJwt(refreshJwt).then(\n (updatedTokens) => {\n // If here the token is null,\n // it goes in a suspension status\n if (!updatedTokens.authJwt) {\n throw new Error('Your iCure back-end version does not support JWT authentication')\n }\n\n return updatedTokens\n },\n (e: Error) => {\n throw new JwtError(authJwt, refreshJwt, 'There was an error while refreshing the token, please re-instantiate the API or try again.', e)\n }\n )\n } else if (!!this._error) {\n throw this._error\n }\n return this._currentPromise\n })\n .then(({ authJwt }) => {\n return authJwt\n })\n }\n\n async getAuthHeaders(): Promise> {\n return this.getJWT().then((authJwt) => {\n return [new XHR.Header('Authorization', `Bearer ${authJwt}`)]\n })\n }\n\n private async _refreshAuthJwt(refreshJwt: string | undefined): Promise<{ authJwt?: string; refreshJwt?: string }> {\n // If I do not have a refresh JWT or the refresh JWT is expired,\n // I have to log in again\n if (!refreshJwt || this._isJwtInvalidOrExpired(refreshJwt)) {\n return this._loginAndGetTokens()\n } else {\n return this.authApi.refreshAuthenticationJWT(refreshJwt).then((refreshResponse) => ({\n authJwt: refreshResponse.token,\n refreshJwt: refreshJwt,\n }))\n }\n }\n\n private async _loginAndGetTokens(): Promise<{ authJwt?: string; refreshJwt?: string }> {\n let authResponse: AuthenticationResponse | undefined\n let firstError: XHRError | undefined\n if (this.username && this.password) {\n try {\n authResponse = await this.authApi.login(\n new LoginCredentials({\n username: this.username,\n password: this.password,\n })\n )\n } catch (e) {\n firstError = e as XHRError\n }\n }\n if (!authResponse) {\n authResponse = await (Object.entries(this.thirdPartyTokens) as [OAuthThirdParty, string][]).reduce(async (acc, [thirdParty, token]) => {\n const prev = await acc\n return (\n prev ??\n (token\n ? this.authApi.loginWithThirdPartyToken(thirdParty, token).catch((e) => {\n if (!firstError) {\n firstError = e as XHRError\n }\n return Promise.resolve() as Promise\n })\n : undefined)\n )\n }, Promise.resolve() as Promise)\n }\n\n if (!authResponse) {\n if (firstError) throw firstError\n throw new XHRError('', 'Unknown error', 401, 'Unauthorized', new Headers())\n }\n\n return {\n authJwt: authResponse.token,\n refreshJwt: authResponse.refreshToken,\n }\n }\n\n private _isJwtInvalidOrExpired(jwt: string): boolean {\n const parts = jwt.split('.')\n if (parts.length !== 3) {\n return true\n }\n const payload = this._base64Decode(parts[1])\n // Using the 'exp' string is safe to use as it is part of the JWT RFC and cannot be modified by us.\n return !('exp' in payload) || payload['exp'] * 1000 < new Date().getTime() - 10000\n }\n\n private _base64Decode(encodedString: string): any {\n return JSON.parse(a2b(encodedString))\n }\n\n invalidateHeader(error: Error): void {\n this._error = error\n }\n\n isInErrorState(): boolean {\n return !!this._error\n }\n}\n","export class JwtError extends Error {\n constructor(readonly jwt: string | undefined, readonly refreshJwt: string | undefined, readonly message: string, readonly reason: Error) {\n super(message)\n }\n}\n","import { a2b } from '../utils'\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n * Returns true if the jwt is invalid or expired, false otherwise.\n */\nexport function isJwtInvalidOrExpired(jwt: string): boolean {\n try {\n const claims = decodeJwtClaims(jwt)\n // Using the 'exp' string is safe to use as it is part of the JWT RFC and cannot be modified by us.\n return !('exp' in claims) || claims['exp'] * 1000 < new Date().getTime()\n } catch (e) {\n return true\n }\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n * Get the claims of the jwt.\n */\nexport function decodeJwtClaims(jwt: string): any {\n const parts = jwt.split('.')\n if (parts.length !== 3) throw new Error('Invalid JWT: should be 3 parts')\n return JSON.parse(a2b(parts[1]))\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n * Get the group of the jwt.\n */\nexport function getGroupOfJwt(jwt: string): string {\n return decodeJwtClaims(jwt)['g']\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport Header = XHR.Header\n\nexport class NoAuthService implements AuthService {\n private error: Error | null = null\n\n async getAuthHeaders(): Promise> {\n if (!!this.error) {\n throw this.error\n }\n return Promise.resolve([])\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n }\n}\n","import { AuthenticationProvider } from './AuthenticationProvider'\nimport { UserGroup } from '../../icc-api/model/UserGroup'\nimport { AuthService } from './AuthService'\nimport { IccAuthApi, OAuthThirdParty } from '../../icc-api'\nimport { XHR } from '../../icc-api/api/XHR'\nimport XHRError = XHR.XHRError\nimport { decodeJwtClaims, isJwtInvalidOrExpired } from './JwtUtils'\nimport { AuthenticationResponse } from '../../icc-api/model/AuthenticationResponse'\n\n/**\n * Needed by a {@link SmartAuthProvider} to get the secrets (password, token, etc.) for authentication to the iCure SDK as needed.\n */\nexport interface AuthSecretProvider {\n /**\n * Provides a secret for authentication to the iCure SDK.\n *\n * ## Accepted secrets\n *\n * The method will be provided with an array of the secrets types that are acceptable (`acceptedSecrets`). Usually this array will contain multiple\n * elements, but this depends on the group configuration, the user (if he has 2fa setup or not), or the operation being performed. For groups using\n * default configurations and for patients without 2fa enabled for example the array will always contain the {@link AuthSecretType.PASSWORD} element.\n * Usually the array contain also the {@link AuthSecretType.LONG_LIVED_TOKEN} element, but if the user is attempting to perform a sensitive operations\n * such as changing his password the default group configuration does not allow for the user to authenticate using a JWT obtained from a long-lived\n * token for this operation, meaning the array will not contain the {@link AuthSecretType.LONG_LIVED_TOKEN} element.\n *\n * Regardless of the number of elements in the array only one secret of the accepted types is sufficient for the operation to succeed.\n *\n * ## TWO_FACTOR_AUTHENTICATION_TOKEN secret type\n *\n * The {@link AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN} secret type is only used when the user has 2fa enabled. In this case the SDK will call\n * this method twice, once containing the {@link AuthSecretType.PASSWORD} element in the `acceptedSecrets` array, and if the provided secret is a\n * valid password the SDK will immediately call this method again, this time containing the {@link AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN}\n * instead of the {@link AuthSecretType.PASSWORD} element.\n *\n * Any future call to this method from the same provider instance will not contain the {@link AuthSecretType.PASSWORD} element anymore, as it is\n * cached, but it may contain the {@link AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN} element instead.\n *\n * Note that the 2fa token is not needed for logging in through a long-lived or short-lived token, it is only used in combination with a password.\n * If the user is using 2fa, and you get in input as `acceptedSecrets` an array `[PASSWORD, LONG_LIVED_TOKEN, SHORT_LIVED_TOKEN]`, and you pass to\n * authenticate a long-lived token, the SDK will not call this method again to ask for the 2fa token.\n *\n * @param acceptedSecrets the types of secrets that are acceptable for the operation being performed.\n * @param previousAttempts the secrets that were previously attempted by the SDK for this operation. This array will be empty the first time this\n * method is called for a given operation, but it may contain multiple elements if the SDK has already called this method multiple times because the\n * previously returned secrets were not valid. The first element is the first secret that was attempted, and the last element is the most recently\n * attempted.\n * @param isUpgradeRequest specifies if the secret was requested to upgrade an existing and valid jwt.\n * @return a promise that resolves with the secret and the secret type to use for authentication. If the promise rejects then the ongoing SDK\n * operation will fail without being re-attempted.\n */\n getSecret(acceptedSecrets: AuthSecretType[], previousAttempts: AuthSecretDetails[], isUpgradeRequest: boolean): Promise\n}\n\n// We may want to add some onSuccess callback in future or similar\nexport type AuthSecretDetails =\n | { value: string; secretType: Exclude }\n | { value: string; secretType: AuthSecretType.EXTERNAL_AUTHENTICATION; oauthType: OAuthThirdParty }\n\n/**\n * Represents a type of secret that can be used for authentication with iCure.\n */\nexport enum AuthSecretType {\n /**\n * Password chosen by the user.\n */\n PASSWORD = 'PASSWORD', // pragma: allowlist secret\n /**\n * Time based one time password provided by authenticator applications, generated on the basis of a timestamp and a shared secret between the iCure\n * server and the authenticator application.\n */\n TWO_FACTOR_AUTHENTICATION_TOKEN = 'TWO_FACTOR_AUTHENTICATION_TOKEN',\n /**\n * A short-lived iCure token, an internal authentication token that lasts 5 minutes or less. Unlike passwords these tokens usually are generated by\n * some component of iCure, and are not chosen by the user.\n */\n SHORT_LIVED_TOKEN = 'SHORT_LIVED_TOKEN',\n /**\n * A long-lived iCure token, an internal authentication token that lasts longer than 5 minutes. Unlike passwords these tokens usually are generated\n * by some component of iCure, and are not chosen by the user.\n */\n LONG_LIVED_TOKEN = 'LONG_LIVED_TOKEN',\n /**\n * A token provided by an external authentication provider (e.g. Oauth/Google).\n * Not yet in use.\n */\n EXTERNAL_AUTHENTICATION = 'EXTERNAL_AUTHENTICATION',\n /**\n * A special case of external authentication where the provider is a digital identity provider.\n * Not yet in use.\n */\n // DIGITAL_ID = 'DIGITAL_ID',\n}\n\n// Here starts internal entities that should not be used directly.\n\n/**\n * @internal this class is meant for internal use only and may be changed without notice. The SmartAuthProvider will be initialised automatically\n * by the iCure api depending on the authentication options you provide.\n *\n * An authentication provider that automatically requests secrets for authentication as needed.\n *\n * This authentication provider can be initialised already with some secrets or tokens, and the provider will cache them and use them as needed for\n * as long as they remain valid. If at any point however the provider needs an updated secret or a secret of a different kind it will automatically\n * request this to the {@link SmartAuthProvider} to get the secret.\n *\n * An advantage of using this provider over others is that in case all the cached tokens and secrets were to expire while performing a request,\n * instead of having the request fail the provider will ask for new secrets from the {@link SmartAuthProvider} and the request will automatically\n * be retried with the new secret. Additionally, the provider may request updated secrets also for performing some sensitive operations (e.g. changing\n * password of the user) even if the cached tokens and/or did not expire. This could be the case for example if the cached secret is a long-lived\n * token, but in order to change the password the user needs to provide his current password.\n *\n * Note that in this context the cache of secrets and token is in memory only, and is not persisted in any way. Different instances of this provider\n * will not share the same cache.\n *\n */\nexport class SmartAuthProvider implements AuthenticationProvider {\n /**\n * Initialises a {@link SmartAuthProvider}.\n * @param authApi an \"anonymous\" {@link IccAuthApi} to use for authentication.\n * @param login\n * @param secretProvider\n * @param props optional initialisation properties.\n */\n static initialise(\n authApi: IccAuthApi,\n login: string,\n secretProvider: AuthSecretProvider,\n props: {\n initialSecret?: { password: string } | { longToken: string } | { oauthToken: string; oauthType: OAuthThirdParty }\n initialAuthToken?: string\n initialRefreshToken?: string\n loginGroupId?: string\n debugLog?: boolean\n } = {}\n ): SmartAuthProvider {\n let initialSecret: CachedSecretType | undefined = undefined\n if (props.initialSecret) {\n if ('password' in props.initialSecret) {\n initialSecret = { value: props.initialSecret.password, type: ServerAuthenticationClass.PASSWORD }\n } else if ('longToken' in props.initialSecret) {\n initialSecret = { value: props.initialSecret.longToken, type: ServerAuthenticationClass.LONG_LIVED_TOKEN }\n } else {\n initialSecret = {\n value: props.initialSecret.oauthToken,\n type: ServerAuthenticationClass.EXTERNAL_AUTHENTICATION,\n oauthType: props.initialSecret.oauthType,\n }\n }\n }\n return new SmartAuthProvider(\n new TokenProvider(\n login,\n props.loginGroupId,\n initialSecret,\n props.initialAuthToken,\n props.initialRefreshToken,\n authApi,\n secretProvider,\n props.debugLog != undefined ? props.debugLog : true\n ),\n props.loginGroupId\n )\n }\n\n private constructor(private readonly tokenProvider: TokenProvider, private readonly groupId: string | undefined) {}\n\n getAuthService(): AuthService {\n return new SmartAuthService(this.tokenProvider)\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n if (newGroupId == this.groupId) return Promise.resolve(this)\n if (!matches.find((match) => match.groupId == newGroupId)) throw new Error('New group id not found in matches.')\n const switchedProvider = await this.tokenProvider.switchedGroup(newGroupId)\n return new SmartAuthProvider(switchedProvider, this.groupId)\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.tokenProvider.getCachedTokensOrLoad()\n }\n}\n\nenum ServerAuthenticationClass {\n // DIGITAL_ID = 60,\n TWO_FACTOR_AUTHENTICATION = 50,\n SHORT_LIVED_TOKEN = 40,\n EXTERNAL_AUTHENTICATION = 30,\n PASSWORD = 20,\n LONG_LIVED_TOKEN = 10,\n}\n// Secrets lasting more than 5 minutes -> makes sense to reuse them to get an elevated security jwt\ntype LongLivedSecretType = ServerAuthenticationClass.LONG_LIVED_TOKEN | ServerAuthenticationClass.PASSWORD\ntype CachedSecretType =\n | { value: string; type: LongLivedSecretType | undefined }\n | { value: string; type: ServerAuthenticationClass.EXTERNAL_AUTHENTICATION; oauthType: OAuthThirdParty }\n// In some providers Oauth tokens may have short duration or may be usable only once. We only want to cache them if they are going to be reusable and\n// if they last more than 5 minutes.\nconst longLivedOAuthTokens = new Set([OAuthThirdParty.GOOGLE])\nclass TokenProvider {\n constructor(\n private login: string,\n private groupId: string | undefined,\n private currentLongLivedSecret: CachedSecretType | undefined,\n private cachedToken: string | undefined,\n private cachedRefreshToken: string | undefined,\n private readonly authApi: IccAuthApi,\n private readonly authSecretProvider: AuthSecretProvider,\n private readonly debugLog: boolean\n ) {}\n\n private debugCacheInfo(): String {\n return `\\n\\tcached bearer exp: ${this.cachedToken ? decodeJwtClaims(this.cachedToken)['exp'] : 'none'}\\n\\tcached refresh exp ${\n this.cachedRefreshToken ? decodeJwtClaims(this.cachedRefreshToken)['exp'] : 'none'\n }\\n\\tcached secret: ${this.currentLongLivedSecret?.value != undefined}\\n\\tcached secret type: ${this.currentLongLivedSecret?.type}`\n }\n\n async getCachedOrRefreshedOrNewToken(): Promise<{ token: string; type: RetrievedTokenType }> {\n if (!!this.cachedToken && !isJwtInvalidOrExpired(this.cachedToken)) {\n return { token: this.cachedToken, type: RetrievedTokenType.CACHED }\n } else if (!!this.cachedRefreshToken && !isJwtInvalidOrExpired(this.cachedRefreshToken)) {\n return this.refreshAndCacheToken(this.cachedRefreshToken)\n } else {\n return { token: await this.getAndCacheNewToken(undefined), type: RetrievedTokenType.NEW }\n }\n }\n\n async getCachedTokensOrLoad(): Promise<{ token: string; refreshToken: string }> {\n if (!this.cachedToken || !this.cachedRefreshToken) {\n await this.getAndCacheNewToken(undefined)\n }\n return { token: this.cachedToken!, refreshToken: this.cachedRefreshToken! }\n }\n\n async getNewTokenWithClass(minimumAuthenticationClass: number): Promise {\n return await this.getAndCacheNewToken(minimumAuthenticationClass)\n }\n\n private async getAndCacheNewToken(minimumAuthenticationClassLevel: number | undefined): Promise {\n const { token, refreshToken } = await this.getNewToken(minimumAuthenticationClassLevel ?? 0)\n this.cachedToken = token\n this.cachedRefreshToken = refreshToken\n return token\n }\n\n private async refreshAndCacheToken(refreshToken: string): Promise<{ token: string; type: RetrievedTokenType }> {\n if (this.debugLog) console.log(`Attempting to refresh bearer token ${this.debugCacheInfo()}`)\n return await this.authApi.refreshAuthenticationJWT(refreshToken).then(\n (authResult) => {\n if (!authResult.token) throw new Error('Internal error: refresh succeeded but no token was returned. Unsupported backend version?')\n this.cachedToken = authResult.token\n return { token: authResult.token, type: RetrievedTokenType.REFRESHED }\n },\n async () => ({ token: await this.getAndCacheNewToken(undefined), type: RetrievedTokenType.NEW })\n )\n }\n\n private async getNewToken(minimumAuthenticationClassLevel: number): Promise<{ token: string; refreshToken: string }> {\n if (this.debugLog) console.log(`Attempting to get new token for auth class ${minimumAuthenticationClassLevel} ${this.debugCacheInfo()}`)\n if (!!this.currentLongLivedSecret && (!this.currentLongLivedSecret.type || this.currentLongLivedSecret.type >= minimumAuthenticationClassLevel)) {\n if (this.debugLog) console.log('Using cached secret')\n const resultWithCachedSecret = await this.doGetTokenWithSecret(this.currentLongLivedSecret, minimumAuthenticationClassLevel)\n if ('success' in resultWithCachedSecret) {\n if (this.debugLog) console.log('New token using cached secret success')\n return resultWithCachedSecret.success\n } else if (\n resultWithCachedSecret.failure === DoGetTokenResultFailureReason.NEEDS_2FA &&\n minimumAuthenticationClassLevel <= ServerAuthenticationClass.TWO_FACTOR_AUTHENTICATION\n ) {\n if (this.debugLog) console.log('New token using cached secret requires 2fa')\n return this.askTotpAndGetToken(this.currentLongLivedSecret.value, minimumAuthenticationClassLevel)\n } else {\n if (this.debugLog) console.log('New token using cached secret failed')\n return this.askSecretAndGetToken(minimumAuthenticationClassLevel, true)\n }\n } else {\n if (this.debugLog) console.log('No cached credentials of correct auth class found')\n return this.askSecretAndGetToken(minimumAuthenticationClassLevel, true)\n }\n }\n\n private async askSecretAndGetToken(\n minimumAuthenticationClassLevel: number,\n passwordIsValidAs2fa: boolean\n ): Promise<{ token: string; refreshToken: string }> {\n const acceptedSecrets = [\n minimumAuthenticationClassLevel <= ServerAuthenticationClass.LONG_LIVED_TOKEN ? [AuthSecretType.LONG_LIVED_TOKEN] : [],\n minimumAuthenticationClassLevel <= ServerAuthenticationClass.SHORT_LIVED_TOKEN ? [AuthSecretType.SHORT_LIVED_TOKEN] : [],\n minimumAuthenticationClassLevel <= ServerAuthenticationClass.TWO_FACTOR_AUTHENTICATION &&\n (passwordIsValidAs2fa || minimumAuthenticationClassLevel <= ServerAuthenticationClass.PASSWORD)\n ? [AuthSecretType.PASSWORD]\n : [],\n ].flat()\n if (!acceptedSecrets.length)\n throw new Error('Internal error: no secret type is accepted for this request. Group may be misconfigured, or client may be outdated.')\n const attempts: AuthSecretDetails[] = []\n if (this.debugLog) console.log(`Asking for secret and getting token for auth class ${minimumAuthenticationClassLevel} ${this.debugCacheInfo()}`)\n while (true) {\n const secretDetails = await this.authSecretProvider.getSecret([...acceptedSecrets], attempts, minimumAuthenticationClassLevel > 0)\n if (!acceptedSecrets.includes(secretDetails.secretType))\n throw new Error(`Accepted secret types are ${JSON.stringify(acceptedSecrets)}, but got a secret of type ${secretDetails.secretType}.`)\n attempts.push(secretDetails)\n const result = await this.doGetTokenWithSecret(secretDetails, minimumAuthenticationClassLevel)\n if ('success' in result) {\n this.updateCachedSecret(secretDetails)\n return result.success\n } else if (result.failure == DoGetTokenResultFailureReason.NEEDS_2FA) {\n return this.askTotpAndGetToken(secretDetails.value, minimumAuthenticationClassLevel)\n } else if (secretDetails.value == AuthSecretType.PASSWORD && result.failure == DoGetTokenResultFailureReason.INVALID_AUTH_CLASS_LEVEL) {\n // If we tried a password, and it turns out that the user has 2fa not enabled next time we don't consider password valid\n return this.askSecretAndGetToken(minimumAuthenticationClassLevel, false)\n } // else retry\n }\n }\n\n private async askTotpAndGetToken(password: string, minimumAuthenticationClassLevel: number): Promise<{ token: string; refreshToken: string }> {\n if (minimumAuthenticationClassLevel > ServerAuthenticationClass.TWO_FACTOR_AUTHENTICATION)\n throw new Error(\n \"Internal error: asking for totp to login but minimumAuthenticationClassLevel is higher than TWO_FACTOR_AUTHENTICATION's level.\"\n )\n const attempts: AuthSecretDetails[] = []\n while (true) {\n const details = await this.authSecretProvider.getSecret([AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN], attempts, false)\n if (details.secretType != AuthSecretType.TWO_FACTOR_AUTHENTICATION_TOKEN)\n throw new Error(`Was expecting a 2fa token but got a secret of type ${details.secretType}.`)\n attempts.push(details)\n const result = await this.doGetTokenWithSecret({ value: `${password}|${details.value}` }, minimumAuthenticationClassLevel)\n if ('success' in result) {\n this.updateCachedSecret({ value: password, secretType: AuthSecretType.PASSWORD })\n return result.success\n } else if (result.failure != DoGetTokenResultFailureReason.INVALID_2FA) {\n throw new Error(`Unexpected error while trying to login with (previously) valid password and 2fa token ${result.failure}.`)\n } // else retry\n }\n }\n\n private async doGetTokenWithSecret(\n secret: { value: string; oauthType?: OAuthThirdParty },\n minimumAuthenticationClassLevel: number\n ): Promise {\n let authResultPromise: Promise\n if ('oauthType' in secret && !!secret.oauthType) {\n authResultPromise = this.authApi.loginWithThirdPartyToken(secret.oauthType, secret.value) // TODO add group id\n } else {\n authResultPromise = this.authApi.login({ username: this.login, password: secret.value }, this.groupId)\n }\n return authResultPromise.then(\n (authResult) => {\n const { token, refreshToken } = authResult\n if (!token || !refreshToken) throw new Error('Internal error: login succeeded but no token was returned. Unsupported backend version?')\n const claims = decodeJwtClaims(token)\n const authClassLevel = claims['tac']\n if (!authClassLevel || typeof authClassLevel !== 'number') {\n if (minimumAuthenticationClassLevel > 0) {\n throw new Error('Internal error: authClassLevel is not a number. Unsupported backend version?')\n } else return { success: { token, refreshToken } }\n }\n if (authClassLevel < minimumAuthenticationClassLevel) {\n return { failure: DoGetTokenResultFailureReason.INVALID_AUTH_CLASS_LEVEL }\n } else {\n return { success: { token, refreshToken } }\n }\n },\n (error) => {\n if (!(error instanceof XHRError)) throw error\n if (error.statusCode == 401 || error.statusCode == 412) {\n // Password is wrong (401) or unacceptable (e.g. too short, 412)\n return { failure: DoGetTokenResultFailureReason.INVALID_PW_OR_TOKEN }\n } else if (error.statusCode == 406) {\n // Password is correct, but 2fa token is not\n return { failure: DoGetTokenResultFailureReason.INVALID_2FA }\n } else if (error.statusCode == 417) {\n // Password is correct, but the user has 2fa enabled and no 2fa token was provided\n return { failure: DoGetTokenResultFailureReason.NEEDS_2FA }\n } else throw error\n }\n )\n }\n\n async switchedGroup(newGroupId: string): Promise {\n const groupSwitchedTokens = this.cachedRefreshToken\n ? await this.authApi.switchGroup(this.cachedRefreshToken, newGroupId).then(\n (response) => {\n if (!response.token || !response.refreshToken)\n throw new Error('Internal error: group switch succeeded but no token was returned. Unsupported backend version?')\n return { token: response.token, refreshToken: response.refreshToken }\n },\n () => ({ token: undefined, refreshToken: undefined })\n )\n : { token: undefined, refreshToken: undefined }\n return new TokenProvider(\n this.login,\n newGroupId,\n this.currentLongLivedSecret ? { value: this.currentLongLivedSecret.value, type: undefined } : undefined,\n groupSwitchedTokens.token,\n groupSwitchedTokens.refreshToken,\n this.authApi,\n this.authSecretProvider,\n this.debugLog\n )\n }\n\n private updateCachedSecret(details: AuthSecretDetails) {\n switch (details.secretType) {\n case AuthSecretType.PASSWORD:\n this.currentLongLivedSecret = { value: details.value, type: ServerAuthenticationClass.PASSWORD }\n break\n case AuthSecretType.LONG_LIVED_TOKEN:\n this.currentLongLivedSecret = { value: details.value, type: ServerAuthenticationClass.LONG_LIVED_TOKEN }\n break\n case AuthSecretType.EXTERNAL_AUTHENTICATION:\n if (longLivedOAuthTokens.has(details.oauthType)) {\n this.currentLongLivedSecret = {\n value: details.value,\n type: ServerAuthenticationClass.EXTERNAL_AUTHENTICATION,\n oauthType: details.oauthType,\n }\n }\n break\n }\n }\n}\ntype DoGetTokenResult = { success: { token: string; refreshToken: string } } | { failure: DoGetTokenResultFailureReason }\nenum DoGetTokenResultFailureReason {\n NEEDS_2FA,\n INVALID_2FA,\n INVALID_PW_OR_TOKEN,\n INVALID_AUTH_CLASS_LEVEL,\n}\nenum RetrievedTokenType {\n CACHED,\n REFRESHED,\n NEW,\n}\n\nenum SmartAuthServiceState {\n INITIAL,\n DONE_INITIAL,\n REATTEMPT,\n REATTEMPTED_WITH_NEW_UNBOUND_TOKEN,\n REATTEMPTED_WITH_AUTH_CLASS_SPECIFIC_TOKEN,\n EXPECT_REQUEST_WITH_SPECIFIC_AUTH_CLASS,\n TERMINAL_ERROR,\n}\nclass SmartAuthService implements AuthService {\n private currentState:\n | { id: SmartAuthServiceState.INITIAL }\n | { id: SmartAuthServiceState.DONE_INITIAL; initialToken: string }\n | { id: SmartAuthServiceState.REATTEMPT; initialToken: string; initialError: Error }\n | { id: SmartAuthServiceState.REATTEMPTED_WITH_NEW_UNBOUND_TOKEN }\n | { id: SmartAuthServiceState.REATTEMPTED_WITH_AUTH_CLASS_SPECIFIC_TOKEN }\n | { id: SmartAuthServiceState.EXPECT_REQUEST_WITH_SPECIFIC_AUTH_CLASS; errorFromNewToken: Error }\n | { id: SmartAuthServiceState.TERMINAL_ERROR; error: Error } = { id: SmartAuthServiceState.INITIAL }\n\n constructor(private readonly tokenProvider: TokenProvider) {}\n\n async jwtGetter(): Promise<{ token: string; refreshToken: string | undefined }> {\n const token = await this.getAuthToken(undefined)\n return { token, refreshToken: undefined }\n }\n\n async getAuthHeaders(minimumAuthenticationClassLevel: number | undefined): Promise> {\n return [new XHR.Header('Authorization', `Bearer ${await this.getAuthToken(minimumAuthenticationClassLevel)}`)]\n }\n\n private async getAuthToken(minimumAuthenticationClassLevel: number | undefined): Promise {\n switch (this.currentState.id) {\n case SmartAuthServiceState.INITIAL:\n if (minimumAuthenticationClassLevel != undefined) {\n throw new Error('Illegal state: cannot ask for a specific auth class level at the first request attempt.')\n } else {\n const { token } = await this.tokenProvider.getCachedOrRefreshedOrNewToken()\n this.currentState = { id: SmartAuthServiceState.DONE_INITIAL, initialToken: token }\n return token\n }\n case SmartAuthServiceState.REATTEMPT:\n if (minimumAuthenticationClassLevel != undefined) {\n const token = await this.tokenProvider.getNewTokenWithClass(minimumAuthenticationClassLevel)\n this.currentState = { id: SmartAuthServiceState.REATTEMPTED_WITH_AUTH_CLASS_SPECIFIC_TOKEN }\n return token\n } else {\n const { token } = await this.tokenProvider.getCachedOrRefreshedOrNewToken()\n if (token == this.currentState.initialToken) throw this.currentState.initialError\n this.currentState = { id: SmartAuthServiceState.REATTEMPTED_WITH_NEW_UNBOUND_TOKEN }\n return token\n }\n case SmartAuthServiceState.EXPECT_REQUEST_WITH_SPECIFIC_AUTH_CLASS:\n if (minimumAuthenticationClassLevel != undefined) {\n const token = await this.tokenProvider.getNewTokenWithClass(minimumAuthenticationClassLevel)\n this.currentState = { id: SmartAuthServiceState.REATTEMPTED_WITH_AUTH_CLASS_SPECIFIC_TOKEN }\n return token\n } else throw this.currentState.errorFromNewToken\n case SmartAuthServiceState.TERMINAL_ERROR:\n throw this.currentState.error\n default:\n throw new Error(`Illegal state: cannot get token in state ${this.currentState.id}.`)\n }\n }\n\n invalidateHeader(error: Error): void {\n switch (this.currentState.id) {\n case SmartAuthServiceState.DONE_INITIAL:\n this.currentState = { id: SmartAuthServiceState.REATTEMPT, initialToken: this.currentState.initialToken, initialError: error }\n break\n case SmartAuthServiceState.REATTEMPTED_WITH_NEW_UNBOUND_TOKEN:\n this.currentState = { id: SmartAuthServiceState.EXPECT_REQUEST_WITH_SPECIFIC_AUTH_CLASS, errorFromNewToken: error }\n break\n case SmartAuthServiceState.REATTEMPTED_WITH_AUTH_CLASS_SPECIFIC_TOKEN:\n this.currentState = { id: SmartAuthServiceState.TERMINAL_ERROR, error: error }\n break\n default:\n throw new Error(`Illegal state: cannot invalidate header in state ${this.currentState.id}.`)\n }\n }\n}\n","import { appendBuffer, hex2ua, ua2hex } from '../utils'\n\nexport interface AESUtils {\n encryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise\n\n encrypt(cryptoKey: CryptoKey, plainData: ArrayBuffer | Uint8Array, rawKey?: string): Promise\n\n decryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise\n\n /**\n *\n * @param cryptoKey (CryptoKey)\n * @param encryptedData (ArrayBuffer)\n * @param rawKey\n * @returns {Promise} will be ArrayBuffer\n */\n decrypt(cryptoKey: CryptoKey, encryptedData: ArrayBuffer | Uint8Array, rawKey?: string): Promise\n\n /**\n * @deprecated this method is not correct: in some cases decryption may not fail even if the wrong key is used: if the\n * first provided keys are wrong and the last one is correct the decryption will succeed for sure, but there is a small\n * chance that you will get garbage\n */\n decryptSome(cryptoKeys: CryptoKey[], uint8Array: Uint8Array): Promise\n\n /**\n *\n * @param toHex boolean, if true, it returns hex String\n * @returns {Promise} either Hex string or CryptoKey\n */\n generateCryptoKey(toHex: false): Promise\n\n generateCryptoKey(toHex: true): Promise\n\n generateCryptoKey(toHex: boolean): Promise\n\n generateIV(ivByteLength: number): Uint8Array\n\n /**\n * This function return a promise which will be the key Format will be either 'raw' or 'jwk'.\n * JWK: Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n *\n * @param cryptoKey CryptoKey\n * @param format will be 'raw' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKey(cryptoKey: CryptoKey, format: 'raw'): Promise\n\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n\n exportKey(cryptoKey: CryptoKey, format: 'jwk' | 'raw'): Promise\n\n /**\n * the ability to import a key that have already been created elsewhere, for use within the web\n * application that is invoking the import function, for use within the importing web application's\n * origin. This necessiates an interoperable key format, such as JSON Web Key [JWK] which may be\n * represented as octets.\n *\n * https://chromium.googlesource.com/chromium/blink.git/+/6b902997e3ca0384c8fa6fe56f79ecd7589d3ca6/LayoutTests/crypto/resources/common.js\n *\n * @param format 'raw' or 'jwk'\n * @param aesKey\n * @returns {*}\n */\n importKey(format: 'jwk' | 'raw', aesKey: JsonWebKey | ArrayBuffer | Uint8Array): Promise\n}\n\nexport class AESUtilsImpl implements AESUtils {\n /********* AES Config **********/\n ivLength = 16\n aesAlgorithmEncryptName = 'AES-CBC'\n\n aesKeyGenParams: AesKeyGenParams = {\n name: 'AES-CBC',\n length: 256,\n }\n private crypto: Crypto\n private _debug: boolean = false\n\n set debug(value: boolean) {\n this._debug = value\n }\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this.crypto = crypto\n }\n\n async encryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n return this.encrypt(\n await this.importKey('raw', hex2ua(rawKey.replace(/-/g, ''))),\n plainData,\n rawKey // Used for logging only if debug is enabled, ok to always pass\n )\n }\n\n encrypt(cryptoKey: CryptoKey, plainData: ArrayBuffer | Uint8Array, rawKey = ''): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject: (reason: any) => any) => {\n if (plainData instanceof Uint8Array) {\n const buffer = plainData.buffer\n plainData = (buffer.byteLength > plainData.byteLength ? buffer.slice(0, plainData.byteLength) : buffer) as ArrayBuffer\n }\n const aesAlgorithmEncrypt = {\n name: this.aesAlgorithmEncryptName,\n iv: this.generateIV(this.ivLength),\n }\n this._debug && console.log(`encrypt ${ua2hex(plainData)} with ${rawKey}`)\n this.crypto.subtle\n .encrypt(\n {\n ...aesAlgorithmEncrypt,\n } /* some ill behaved implementations change the values in place */,\n cryptoKey,\n plainData\n )\n .then(\n (cipherData) => {\n this._debug && console.log(`cipherData: ${ua2hex(cipherData)}`)\n return resolve(appendBuffer(aesAlgorithmEncrypt.iv.buffer as ArrayBuffer, cipherData))\n },\n (err) => reject('AES encryption failed: ' + err)\n )\n })\n }\n\n async decryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n return this.decrypt(\n await this.importKey('raw', hex2ua(rawKey.replace(/-/g, ''))),\n plainData,\n rawKey // Used for logging only if debug is enabled, ok to always pass\n )\n }\n\n /**\n *\n * @param cryptoKey (CryptoKey)\n * @param encryptedData (ArrayBuffer)\n * @param rawKey\n * @returns {Promise} will be ArrayBuffer\n */\n decrypt(cryptoKey: CryptoKey, encryptedData: ArrayBuffer | Uint8Array, rawKey?: string): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject: (reason: any) => any) => {\n if (!cryptoKey) {\n return reject('No crypto key provided for decryption')\n }\n const encryptedDataUint8 = encryptedData instanceof ArrayBuffer ? new Uint8Array(encryptedData) : encryptedData\n const aesAlgorithmEncrypt = {\n name: this.aesAlgorithmEncryptName,\n iv: encryptedDataUint8.subarray(0, this.ivLength),\n\n /*\n * IF THIS BIT OF CODE PRODUCES A DOMEXCEPTION CODE 0 ERROR, IT MIGHT BE RELATED TO THIS:\n *\n * NOTOK:\n * if (!hcparty.hcPartyKeys && !hcparty.hcPartyKeys[hcpartyId] && hcparty.hcPartyKeys[hcpartyId].length !== 2) {\n * throw 'No hcPartyKey for this Healthcare party(' + hcpartyId + ').';\n * }\n * var delegateHcPartyKey = hcparty.hcPartyKeys[hcpartyId][1];\n *\n * SHOULD BE:\n * var delegatorId = patient.delegations[hcpartyId][0].owner;\n * if (!hcparty.hcPartyKeys && !hcparty.hcPartyKeys[delegatorId] && hcparty.hcPartyKeys[delegatorId].length !== 2) {\n * throw 'No hcPartyKey for this Healthcare party(' + delegatorId + ').';\n * }\n * var delegateHcPartyKey = hcparty.hcPartyKeys[delegatorId][1];\n */\n }\n this._debug && console.log(`decrypt ${ua2hex(encryptedData)} with ${rawKey}`)\n this.crypto.subtle.decrypt(aesAlgorithmEncrypt, cryptoKey, encryptedDataUint8.subarray(this.ivLength, encryptedDataUint8.length)).then(\n (decipheredData) => {\n this._debug && console.log(`decipheredData: ${ua2hex(decipheredData)}`)\n resolve(decipheredData)\n },\n (err) => {\n reject(new Error('AES decryption failed: ' + err))\n }\n )\n })\n }\n\n async decryptSome(cryptoKeys: CryptoKey[], uint8Array: Uint8Array): Promise {\n try {\n return this.decrypt(cryptoKeys[0], uint8Array)\n } catch (e) {\n if (cryptoKeys.length > 1) {\n return this.decryptSome(cryptoKeys.slice(1), uint8Array)\n } else {\n throw e\n }\n }\n }\n\n // generate an AES key\n // noinspection JSUnusedGlobalSymbols\n /**\n *\n * @param toHex boolean, if true, it returns hex String\n * @returns {Promise} either Hex string or CryptoKey\n */\n generateCryptoKey(toHex: false): Promise\n generateCryptoKey(toHex: true): Promise\n generateCryptoKey(toHex: boolean): Promise {\n return new Promise((resolve: (value: CryptoKey | string) => any, reject: (reason: any) => any) => {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n const cryptoKeyPromise: Promise = this.crypto.subtle.generateKey(this.aesKeyGenParams, extractable, keyUsages) as Promise\n return toHex === undefined || !toHex\n ? cryptoKeyPromise.then(resolve, reject)\n : cryptoKeyPromise.then((k) => this.exportKey(k, 'raw'), reject).then((raw) => resolve(ua2hex(raw)), reject)\n })\n }\n\n // noinspection JSMethodCanBeStatic\n generateIV(ivByteLength: number): Uint8Array {\n return new Uint8Array(this.crypto.getRandomValues(new Uint8Array(ivByteLength)))\n }\n\n /**\n * This function return a promise which will be the key Format will be either 'raw' or 'jwk'.\n * JWK: Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n *\n * @param cryptoKey CryptoKey\n * @param format will be 'raw' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKey(cryptoKey: CryptoKey, format: 'raw'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'jwk' | 'raw'): Promise {\n return new Promise((resolve: (value: ArrayBuffer | JsonWebKey) => any, reject: (reason: any) => any) => {\n return this.crypto.subtle.exportKey(format as any, cryptoKey).then(resolve, reject)\n })\n }\n\n /**\n * the ability to import a key that have already been created elsewhere, for use within the web\n * application that is invoking the import function, for use within the importing web application's\n * origin. This necessiates an interoperable key format, such as JSON Web Key [JWK] which may be\n * represented as octets.\n *\n * https://chromium.googlesource.com/chromium/blink.git/+/6b902997e3ca0384c8fa6fe56f79ecd7589d3ca6/LayoutTests/crypto/resources/common.js\n *\n * @param format 'raw' or 'jwk'\n * @param aesKey\n * @returns {*}\n */\n importKey(format: 'jwk' | 'raw', aesKey: JsonWebKey | ArrayBuffer | Uint8Array): Promise {\n return new Promise((resolve: (value: CryptoKey) => any, reject: (reason: any) => any) => {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n return this.crypto.subtle\n .importKey(format as any, aesKey as any, this.aesKeyGenParams, extractable, keyUsages)\n .catch((err) => {\n if (format == 'raw' && (aesKey instanceof ArrayBuffer || ArrayBuffer.isView(aesKey))) {\n console.warn(`Import of key ${ua2hex(aesKey)} failed`)\n }\n throw err\n })\n .then(resolve, reject)\n })\n }\n}\n\nexport const AES = new AESUtilsImpl()\n","import { ExchangeDataManager } from './ExchangeDataManager'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { EntityWithDelegationTypeName } from '../utils/EntityWithDelegationTypeName'\n\nexport const ACCESS_CONTROL_KEYS_HEADER = 'Icure-Access-Control-Keys'\n\n/**\n * @internal this class is intended for internal use only and may be changed without notice.\n */\nexport class AccessControlKeysHeadersProvider {\n constructor(private readonly exchangeDataManager: ExchangeDataManager) {}\n\n // This will be enough only as long as we don't use the entities sfks in the access control keys.\n /**\n * Add the access control keys headers to the provided initial headers, allowing access control on users with anonymous delegations.\n * @param initialHeaders the initial headers\n * @param entityType the type of entity which the user is attempting to retrieve.\n */\n async addAccessControlKeysHeaders(initialHeaders: XHR.Header[], entityType: EntityWithDelegationTypeName): Promise {\n const newHeaders = await this.getAccessControlKeysHeaders(entityType)\n if (newHeaders.length > 0) return [...initialHeaders, ...newHeaders]\n else return initialHeaders\n }\n\n async getAccessControlKeysHeaders(entityType: EntityWithDelegationTypeName): Promise {\n const accessControlKeysValue = await this.exchangeDataManager.getAccessControlKeysValue(entityType)\n if (accessControlKeysValue) {\n return [new XHR.Header(ACCESS_CONTROL_KEYS_HEADER, accessControlKeysValue)]\n } else {\n return []\n }\n }\n}\n","import { CryptoPrimitives } from './CryptoPrimitives'\nimport { EntityWithDelegationTypeName, entityWithDelegationTypeNames } from '../utils/EntityWithDelegationTypeName'\nimport { ua2b64, ua2hex, utf8_2ua } from '../utils'\n\nconst ACCESS_CONTROL_KEY_LENGTH_BYTES = 16\n\n/**\n * @internal this class is intended for internal use only and may be changed without notice.\n */\nexport class AccessControlSecretUtils {\n constructor(private readonly primitives: CryptoPrimitives) {}\n\n /**\n * Size of the access control keys returned by this class.\n */\n get accessControlKeyLengthBytes(): number {\n return ACCESS_CONTROL_KEY_LENGTH_BYTES\n }\n\n /**\n * Get the access control key to use for entities of the provided type and using the provided secret foreign key. The combination of secret foreign\n * keys and entity type ensures that unauthorised people will not be able to draw links between entities of different types of data or different\n * confidentiality levels.\n * These keys will be sent to the icure server for access control of data owners which require anonymous delegations.\n * @param accessControlSecret an access control secret\n * @param entityTypeName an entity type name\n */\n async accessControlKeyFor(accessControlSecret: string, entityTypeName: EntityWithDelegationTypeName): Promise {\n return (await this.primitives.sha256(utf8_2ua(accessControlSecret + entityTypeName))).slice(0, ACCESS_CONTROL_KEY_LENGTH_BYTES)\n }\n\n async allAccessControlKeyFor(accessControlSecret: string): Promise {\n const res: ArrayBuffer[] = []\n for (const entityTypeName of entityWithDelegationTypeNames) {\n res.push((await this.primitives.sha256(utf8_2ua(accessControlSecret + entityTypeName))).slice(0, ACCESS_CONTROL_KEY_LENGTH_BYTES))\n }\n return res\n }\n\n /**\n * Get value to use as key in secure delegations for entities of the provided type with the provided secret foreign key. The combination of secret\n * foreign keys and entity type ensures that unauthorised people will not be able to draw links between entities of different types of data or\n * different confidentiality levels.\n * These keys will be used in the secure delegations map of security metadata.\n * @param accessControlSecret an access control secret\n * @param entityTypeName an entity type name\n */\n async secureDelegationKeyFor(accessControlSecret: string, entityTypeName: EntityWithDelegationTypeName): Promise {\n return ua2hex(await this.primitives.sha256(await this.accessControlKeyFor(accessControlSecret, entityTypeName)))\n }\n\n async allSecureDelegationKeysFor(accessControlSecret: string): Promise {\n const accessControlKeys = await this.allAccessControlKeyFor(accessControlSecret)\n const res: string[] = []\n for (const accessControlKey of accessControlKeys) {\n res.push(ua2hex(await this.primitives.sha256(accessControlKey)))\n }\n return res\n }\n\n async getEncodedAccessControlKeys(accessControlSecrets: string[], entityTypeName: EntityWithDelegationTypeName): Promise {\n const fullBuffer = new Uint8Array(accessControlSecrets.length * this.accessControlKeyLengthBytes)\n for (let i = 0; i < accessControlSecrets.length; i++) {\n const accessControlSecret = accessControlSecrets[i]\n const key = await this.accessControlKeyFor(accessControlSecret, entityTypeName)\n fullBuffer.set(new Uint8Array(key), i * this.accessControlKeyLengthBytes)\n }\n return ua2b64(fullBuffer)\n }\n}\n","import { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyPair } from './RSA'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { IccExchangeDataApi } from '../../icc-api/api/internal/IccExchangeDataApi'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { b64_2ua, hex2ua, ua2b64, ua2hex, utf8_2ua } from '../utils'\nimport * as _ from 'lodash'\nimport { fingerprintIsV1, fingerprintV1toV2 } from './utils'\nimport XHRError = XHR.XHRError\n\n/**\n * @internal this class is intended for internal use only and may be modified without notice\n * Functions to create and get exchange data.\n * The methods of this api require to pass the appropriate keys for encryption/decryption manually.\n */\nexport class BaseExchangeDataManager {\n constructor(\n readonly api: IccExchangeDataApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly primitives: CryptoPrimitives,\n private readonly selfRequiresAnonymousDelegations: boolean,\n private readonly doNotUseBulkGet: boolean\n ) {}\n\n /**\n * Get all the exchange data where the current data owner is the delegator or the delegate. However, some data owners, generally HCPs, may have a\n * prohibitively high amount of exchange data. If the crypto strategies specify that the current data owner requires anonymous delegation this\n * method returns all the exchange data found for the data owner, else the method returns undefined.\n * @return all the exchange data for the current data owner or undefined if the crypto strategies don't allow to retrieve all data for the current\n * data owner.\n */\n async getAllExchangeDataForCurrentDataOwnerIfAllowed(): Promise {\n if (!this.selfRequiresAnonymousDelegations) return undefined\n const dataOwnerId = await this.dataOwnerApi.getCurrentDataOwnerId()\n let latestResult = await this.api.getExchangeDataByParticipant(dataOwnerId, undefined, 1000)\n const allRetrieved = latestResult.rows ?? []\n while (latestResult.nextKeyPair?.startKeyDocId) {\n latestResult = await this.api.getExchangeDataByParticipant(dataOwnerId, latestResult.nextKeyPair.startKeyDocId, 1000)\n if (latestResult.rows) allRetrieved.push(...latestResult.rows)\n }\n return allRetrieved\n }\n\n /**\n * Get all exchange data for the provided delegator-delegate pair.\n * @param delegatorId id of a delegator data owner.\n * @param delegateId id of a delegate data owner.\n * @return all exchange data for the provided delegator-delegate pair.\n */\n async getExchangeDataByDelegatorDelegatePair(delegatorId: string, delegateId: string): Promise {\n return await this.api.getExchangeDataByDelegatorDelegate(delegatorId, delegateId)\n }\n\n /**\n * Get the exchange data with the provided id.\n * @param exchangeDataId id of the exchange data.\n * @return the exchange data with the provided id or undefined if no exchange data with such id could be found.\n */\n async getExchangeDataById(exchangeDataId: string): Promise {\n return await this.api.getExchangeDataById(exchangeDataId).catch((e) => {\n if (e instanceof XHRError && e.statusCode === 404) {\n return undefined\n } else throw e\n })\n }\n\n async getExchangeDataByIds(exchangeDataIds: string[]): Promise {\n if (this.doNotUseBulkGet) {\n const res: ExchangeData[] = []\n for (const exchangeDataId of exchangeDataIds) {\n const curr = await this.api.getExchangeDataById(exchangeDataId).catch((e) => {\n if (e instanceof XHRError && (e.statusCode === 404 || e.statusCode === 403)) {\n return undefined\n } else throw e\n })\n if (curr) res.push(curr)\n }\n return res\n } else {\n return await this.api.getExchangeDataByIds({ ids: exchangeDataIds })\n }\n }\n\n /**\n * Verifies the authenticity of the exchange data by checking the signature.\n * Note that all exchange data created by data owners other than the current data owner (including members of his hierarchy)\n * will always be unverified.\n * @param data collects the following information about the exchange data being verified:\n * - exchangeData the exchange data to verify.\n * - decryptedAccessControlSecret the access control secret decrypted from the exchange data.\n * - decryptedExchangeKey the exchange key decrypted from the exchange data.\n * - decryptedSharedSignatureKey the shared signature key decrypted from the exchange data.\n * @param verificationKeys verification keys for delegator signature by fingerprint.\n * @param verifyAsDelegator if true the method will also verify that the hmac key used for the signature was created by the delegator of the\n * exchange data. If true and the data was not created by the current data owner this method will return false.\n * @return the exchange data which could be verified given his signature and the available verification keys.\n * @throws if any of the provided exchange data has been created by a data owner other than the current data owner.\n */\n async verifyExchangeData(\n data: {\n exchangeData: ExchangeData\n decryptedAccessControlSecret: string\n decryptedExchangeKey: CryptoKey\n decryptedSharedSignatureKey: CryptoKey\n },\n verificationKeys: { [fp: string]: CryptoKey },\n verifyAsDelegator: boolean\n ): Promise {\n if (verifyAsDelegator && data.exchangeData.delegator !== (await this.dataOwnerApi.getCurrentDataOwnerId())) return false\n if (verifyAsDelegator && !(await this.verifyDelegatorSignature(data.exchangeData, data.decryptedSharedSignatureKey, verificationKeys)))\n return false\n const sharedSignatureData = await this.bytesToSignForSharedSignature({\n decryptedAccessControlSecret: data.decryptedAccessControlSecret,\n decryptedExchangeKey: data.decryptedExchangeKey,\n delegator: data.exchangeData.delegator,\n delegate: data.exchangeData.delegate,\n publicKeysFingerprintsV2: [\n ...new Set([\n ...Object.keys(data.exchangeData.exchangeKey),\n ...Object.keys(data.exchangeData.accessControlSecret),\n ...Object.keys(data.exchangeData.sharedSignatureKey),\n ]),\n ],\n })\n return await this.verifyDataWithSharedKey(sharedSignatureData, data.decryptedSharedSignatureKey, data.exchangeData.sharedSignature)\n }\n\n /**\n * Extracts and decrypts the access control secret from the provided exchange data.\n * These need to be hashed together with the entity class and confidentiality level in order to get the actual access control key\n * which will be sent to the server.\n * @param exchangeData the exchange data from which to extract access control secrets.\n * @param decryptionKeys rsa key pairs to use for decryption of the access control secret.\n * @return an object composed of:\n * - successfulDecryptions: array of all successfully decrypted access control keys\n * - failedDecryptions: array containing all exchange data for which the access control key could not be decrypted (using the provided keys).\n */\n async tryDecryptAccessControlSecret(\n exchangeData: ExchangeData[],\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{\n successfulDecryptions: string[]\n failedDecryptions: ExchangeData[]\n }> {\n return await this.tryDecryptExchangeData(\n exchangeData,\n decryptionKeys,\n (ed) => ed.accessControlSecret,\n (d) => this.importAccessControlSecret(new Uint8Array(d))\n )\n }\n\n /**\n * Extract and decrypts the exchange keys from the provided exchange data.\n * @param exchangeData the exchange data from which to extract exchange keys.\n * @param decryptionKeys rsa key pairs to use for the decryption of the exchange keys.\n * @return an object composed of:\n * - successfulDecryptions: array containing the successfully decrypted exchange keys.\n * - failedDecryptions: array containing all exchange data for which the access control key could not be decrypted (using the provided keys).\n */\n async tryDecryptExchangeKeys(\n exchangeData: ExchangeData[],\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{\n successfulDecryptions: CryptoKey[]\n failedDecryptions: ExchangeData[]\n }> {\n return await this.tryDecryptExchangeData(\n exchangeData,\n decryptionKeys,\n (ed) => ed.exchangeKey,\n (d) => this.importExchangeKey(new Uint8Array(d))\n )\n }\n\n /**\n * Extract and decrypts the shared signature key from the provided exchange data.\n * @param exchangeData the exchange data from which to extract exchange keys.\n * @param decryptionKeys rsa key pairs to use for the decryption of the exchange keys.\n * @return an object composed of:\n * - successfulDecryptions: array containing the successfully decrypted exchange keys.\n * - failedDecryptions: array containing all exchange data for which the access control key could not be decrypted (using the provided keys).\n */\n async tryDecryptSharedSignatureKeys(\n exchangeData: ExchangeData[],\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{\n successfulDecryptions: CryptoKey[]\n failedDecryptions: ExchangeData[]\n }> {\n return await this.tryDecryptExchangeData(\n exchangeData,\n decryptionKeys,\n (ed) => ed.sharedSignatureKey,\n (d) => this.importSharedSignatureKey(new Uint8Array(d))\n )\n }\n\n private async tryDecryptExchangeData(\n exchangeData: ExchangeData[],\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair },\n encryptedDataSelector: (data: ExchangeData) => { [keyPairFingerprint: string]: string },\n unmarshalDecrypted: (decrypted: ArrayBuffer) => Promise\n ): Promise<{\n successfulDecryptions: T[]\n failedDecryptions: ExchangeData[]\n }> {\n const successfulDecryptions: T[] = []\n const failedDecryptions: ExchangeData[] = []\n for (const ed of exchangeData) {\n try {\n const decrypted = await this.tryDecrypt(encryptedDataSelector(ed), decryptionKeys)\n if (decrypted) {\n successfulDecryptions.push(await unmarshalDecrypted(decrypted))\n } else {\n failedDecryptions.push(ed)\n }\n } catch (e) {\n failedDecryptions.push(ed)\n }\n }\n return { successfulDecryptions, failedDecryptions }\n }\n\n private async tryDecrypt(\n encryptedData: { [keyPairFingerprintV2: string]: string },\n decryptionKeys: { [publicKeyFingerprintV1: string]: KeyPair }\n ): Promise {\n const decryptionKeysWithV2Fp = Object.keys(decryptionKeys).reduce((prev, fp) => {\n return {\n ...prev,\n [fingerprintIsV1(fp) ? fingerprintV1toV2(fp) : fp]: decryptionKeys[fp],\n }\n }, {} as { [publicKeyFingerprint: string]: KeyPair })\n for (const [fp, encrypted] of Object.entries(encryptedData)) {\n try {\n const key = decryptionKeysWithV2Fp[fp]?.privateKey\n if (key) return await this.primitives.RSA.decrypt(key, b64_2ua(encrypted))\n } catch (e) {\n // Try with another key\n }\n }\n }\n\n /**\n * Creates exchange data from the current data owner to the provided delegate, uploading the newly created exchange data to the cloud.\n * This assumes that the keys have been verified.\n * @param delegateId id of the delegate for the new exchange data.\n * @param signatureKeys private keys to use for signing the created data.\n * @param encryptionKeys public keys to use for the encryption of the exchange data (from delegator and delegate).\n * @param optionalAttributes optional precalculated attributes for the creation of data\n * @return the newly created exchange data, and its decrypted exchange key and access control secret.\n */\n async createExchangeData(\n delegateId: string,\n signatureKeys: { [keyPairFingerprint: string]: CryptoKey },\n encryptionKeys: { [keyPairFingerprint: string]: CryptoKey },\n optionalAttributes: {\n id?: string\n } = {}\n ): Promise<{\n exchangeData: ExchangeData\n exchangeKey: CryptoKey\n accessControlSecret: string\n }> {\n if (!Object.keys(signatureKeys).length || !Object.keys(encryptionKeys).length) {\n throw new Error('Must specify at least one signature key and ')\n }\n const exchangeKey = await this.generateExchangeKey()\n const accessControlSecret = await this.generateAccessControlSecret()\n const sharedSignatureKey = await this.generateSharedSignatureKey()\n const encryptedExchangeKey = await this.encryptDataWithKeys(exchangeKey.rawBytes, encryptionKeys)\n const encryptedAccessControlSecret = await this.encryptDataWithKeys(accessControlSecret.rawBytes, encryptionKeys)\n const encryptedSharedSignatureKey = await this.encryptDataWithKeys(sharedSignatureKey.rawBytes, encryptionKeys)\n const baseExchangeData = {\n id: optionalAttributes.id ?? this.primitives.randomUuid(),\n delegator: await this.dataOwnerApi.getCurrentDataOwnerId(),\n delegate: delegateId,\n exchangeKey: encryptedExchangeKey,\n accessControlSecret: encryptedAccessControlSecret,\n sharedSignatureKey: encryptedSharedSignatureKey,\n }\n const sharedSignature = await this.signDataWithSharedKey(\n await this.bytesToSignForSharedSignature({\n delegate: baseExchangeData.delegate,\n delegator: baseExchangeData.delegator,\n decryptedAccessControlSecret: accessControlSecret.secret,\n decryptedExchangeKey: exchangeKey.key,\n publicKeysFingerprintsV2: Object.keys(encryptionKeys).map(fingerprintV1toV2),\n }),\n sharedSignatureKey.key\n )\n const delegatorSignature = await this.signDataWithDelegatorKeys(\n await this.bytesToSignForDelegatorSignature({\n sharedSignatureKey: sharedSignatureKey.key,\n }),\n signatureKeys\n )\n const exchangeData = new ExchangeData({ ...baseExchangeData, delegatorSignature, sharedSignature })\n return {\n exchangeData: await this.api.createExchangeData(exchangeData),\n exchangeKey: exchangeKey.key,\n accessControlSecret: accessControlSecret.secret,\n }\n }\n\n async tryRawDecryptExchangeData(\n exchangeData: ExchangeData,\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<\n | {\n rawExchangeKey: ArrayBuffer\n rawAccessControlSecret: ArrayBuffer\n rawSharedSignatureKey: ArrayBuffer\n }\n | undefined\n > {\n const rawExchangeKey = await this.tryDecrypt(exchangeData.exchangeKey, decryptionKeys)\n const rawAccessControlSecret = await this.tryDecrypt(exchangeData.accessControlSecret, decryptionKeys)\n const rawSharedSignatureKey = await this.tryDecrypt(exchangeData.sharedSignatureKey, decryptionKeys)\n if (!rawExchangeKey || !rawAccessControlSecret || !rawSharedSignatureKey) return undefined\n return { rawExchangeKey, rawAccessControlSecret, rawSharedSignatureKey }\n }\n\n /**\n * Updates existing exchange data and uploads it to the cloud in order to share it also with additional public keys, useful for example in cases\n * where one of the data owners involved in the exchange data has lost one of his keys.\n * If the content of the exchange data could not be decrypted using the provided keys the method will not update anything and will return undefined.\n * This method assumes that the new encryption keys have been verified.\n * @param exchangeData exchange data to update.\n * @param decryptionKeys keys to use to extract the content of the exchange data which will be shared with the new keys.\n * @param newEncryptionKeys new keys to add to the exchange data.\n * @return the updated exchange data, and its decrypted exchange key and access control secret, or undefined if the exchange data content could not\n * be decrypted and the exchange data could not be updated.\n */\n async tryUpdateExchangeData(\n exchangeData: ExchangeData,\n decryptionKeys: { [publicKeyFingerprint: string]: KeyPair },\n newEncryptionKeys: { [keyPairFingerprint: string]: CryptoKey }\n ): Promise<\n | {\n exchangeData: ExchangeData\n exchangeKey: CryptoKey\n accessControlSecret: string\n }\n | undefined\n > {\n const rawExchangeKey = await this.tryDecrypt(exchangeData.exchangeKey, decryptionKeys)\n const rawAccessControlSecret = await this.tryDecrypt(exchangeData.accessControlSecret, decryptionKeys)\n const rawSharedSignatureKey = await this.tryDecrypt(exchangeData.sharedSignatureKey, decryptionKeys)\n if (!rawExchangeKey || !rawAccessControlSecret || !rawSharedSignatureKey) return undefined\n return await this.updateExchangeDataWithRawDecryptedContent(\n exchangeData,\n newEncryptionKeys,\n rawExchangeKey,\n rawAccessControlSecret,\n rawSharedSignatureKey\n )\n }\n\n /**\n * Same as [tryUpdateExchangeData] but the decrypted content is already provided.\n */\n async updateExchangeDataWithRawDecryptedContent(\n exchangeData: ExchangeData,\n newEncryptionKeys: { [keyPairFingerprint: string]: CryptoKey },\n rawExchangeKey: ArrayBuffer,\n rawAccessControlSecret: ArrayBuffer,\n rawSharedSignatureKey: ArrayBuffer\n ): Promise<{\n exchangeData: ExchangeData\n exchangeKey: CryptoKey\n accessControlSecret: string\n }> {\n const exchangeKey = await this.importExchangeKey(new Uint8Array(rawExchangeKey))\n const accessControlSecret = await this.importAccessControlSecret(new Uint8Array(rawAccessControlSecret))\n const sharedSignatureKey = await this.importSharedSignatureKey(new Uint8Array(rawSharedSignatureKey))\n const existingExchangeKeyEntries = new Set(Object.keys(exchangeData.exchangeKey))\n const existingAcsEntries = new Set(Object.keys(exchangeData.accessControlSecret))\n const existingSharedSignatureKeyEntries = new Set(Object.keys(exchangeData.sharedSignatureKey))\n const missingEntries = Object.keys(newEncryptionKeys).filter(\n (fp) => !existingAcsEntries.has(fp) || !existingExchangeKeyEntries.has(fp) || !existingSharedSignatureKeyEntries.has(fp)\n )\n if (!missingEntries.length) return { exchangeData, exchangeKey, accessControlSecret }\n const encryptionKeysForMissingEntries = missingEntries.reduce((obj, fp) => {\n obj[fp] = newEncryptionKeys[fp]\n return obj\n }, {} as { [keyPairFingerprint: string]: CryptoKey })\n const updatedExchangeData = _.cloneDeep(exchangeData)\n updatedExchangeData.exchangeKey = {\n ...exchangeData.exchangeKey,\n ...(await this.encryptDataWithKeys(rawExchangeKey, encryptionKeysForMissingEntries)),\n }\n updatedExchangeData.accessControlSecret = {\n ...exchangeData.accessControlSecret,\n ...(await this.encryptDataWithKeys(rawAccessControlSecret, encryptionKeysForMissingEntries)),\n }\n updatedExchangeData.sharedSignatureKey = {\n ...exchangeData.sharedSignatureKey,\n ...(await this.encryptDataWithKeys(rawSharedSignatureKey, encryptionKeysForMissingEntries)),\n }\n const isVerified = await this.verifyExchangeData(\n {\n exchangeData,\n decryptedAccessControlSecret: accessControlSecret,\n decryptedExchangeKey: exchangeKey,\n decryptedSharedSignatureKey: sharedSignatureKey,\n },\n {},\n false\n )\n if (isVerified) {\n updatedExchangeData.sharedSignature = await this.signDataWithSharedKey(\n await this.bytesToSignForSharedSignature({\n delegate: updatedExchangeData.delegate,\n delegator: updatedExchangeData.delegator,\n decryptedAccessControlSecret: accessControlSecret,\n decryptedExchangeKey: exchangeKey,\n publicKeysFingerprintsV2: Object.keys(updatedExchangeData.exchangeKey),\n }),\n sharedSignatureKey\n )\n }\n return { exchangeData: await this.api.modifyExchangeData(new ExchangeData(updatedExchangeData)), exchangeKey, accessControlSecret }\n }\n\n private async bytesToSignForSharedSignature(data: {\n delegator: string\n delegate: string\n decryptedAccessControlSecret: string\n decryptedExchangeKey: CryptoKey\n publicKeysFingerprintsV2: string[]\n }): Promise {\n // Use array of array to ensure that order is preserved regardless of how the specific js implementation orders\n // the keys of an object\n const signObject = [\n ['delegator', data.delegator],\n ['delegate', data.delegate],\n ['exchangeKey', ua2hex(await this.primitives.AES.exportKey(data.decryptedExchangeKey, 'raw'))],\n ['accessControlSecret', data.decryptedAccessControlSecret],\n ['publicKeysFingerprints', data.publicKeysFingerprintsV2.sort()],\n ]\n const signJson = JSON.stringify(signObject)\n return utf8_2ua(signJson)\n }\n\n private async bytesToSignForDelegatorSignature(data: { sharedSignatureKey: CryptoKey }): Promise {\n return this.primitives.sha256(await this.primitives.HMAC.exportKey(data.sharedSignatureKey))\n }\n\n // Generates a new exchange key\n private async generateExchangeKey(): Promise<{\n key: CryptoKey // the imported key\n rawBytes: ArrayBuffer // the bytes to encrypt for in the exchange data\n }> {\n const rawBytes = await this.primitives.randomBytes(32)\n return {\n key: await this.importExchangeKey(rawBytes),\n rawBytes,\n }\n }\n\n private async importExchangeKey(decryptedBytes: ArrayBuffer): Promise {\n return await this.primitives.AES.importKey('raw', decryptedBytes)\n }\n\n private async exportExchangeKey(key: CryptoKey): Promise {\n return await this.primitives.AES.exportKey(key, 'raw')\n }\n\n private async generateSharedSignatureKey(): Promise<{\n key: CryptoKey // the imported key\n rawBytes: ArrayBuffer // the bytes to encrypt for in the exchange data\n }> {\n const key = await this.primitives.HMAC.generateKey()\n return { key, rawBytes: await this.primitives.HMAC.exportKey(key) }\n }\n\n private async importSharedSignatureKey(decryptedBytes: ArrayBuffer): Promise {\n return await this.primitives.HMAC.importKey(decryptedBytes)\n }\n\n private async exportSharedSignatureKey(key: CryptoKey): Promise {\n return await this.primitives.HMAC.exportKey(key)\n }\n\n // Generates a new access control secret\n private async generateAccessControlSecret(): Promise<{\n secret: string // the imported secret\n rawBytes: ArrayBuffer // the bytes to encrypt for in the exchange data\n }> {\n const rawBytes = this.primitives.randomBytes(16)\n return {\n secret: await this.importAccessControlSecret(rawBytes),\n rawBytes,\n }\n }\n\n private importAccessControlSecret(decryptedBytes: ArrayBuffer): Promise {\n return Promise.resolve(ua2hex(decryptedBytes))\n }\n\n private exportAccessControlSecret(secret: string): Promise {\n return Promise.resolve(hex2ua(secret))\n }\n\n private async encryptDataWithKeys(\n rawData: ArrayBuffer,\n keys: { [keyPairFingerprintV1: string]: CryptoKey }\n ): Promise<{ [keyPairFingerprintV2: string]: string }> {\n const res: { [keyPairFingerprintV2: string]: string } = {}\n for (const [fp, key] of Object.entries(keys)) {\n res[fingerprintIsV1(fp) ? fingerprintV1toV2(fp) : fp] = ua2b64(await this.primitives.RSA.encrypt(key, new Uint8Array(rawData)))\n }\n return res\n }\n\n private async extractHmacFromRsaPrivate(privateRsaKey: CryptoKey): Promise {\n if (privateRsaKey.algorithm.name != 'RSA-OAEP' && !privateRsaKey.usages.includes('decrypt')) {\n throw new Error('Internal error: got unexpected key for signature/verification')\n }\n const keyBytes = await this.primitives.RSA.exportKey(privateRsaKey, 'pkcs8')\n const keyAsHmacBytes = await this.primitives.sha512(keyBytes)\n return await this.primitives.HMAC.importKey(keyAsHmacBytes, false)\n }\n\n private async signDataWithDelegatorKeys(\n rawData: ArrayBuffer,\n keys: { [keyPairFingerprint: string]: CryptoKey }\n ): Promise<{ [keyPairFingerprint: string]: string }> {\n const res: { [keyPairFingerprint: string]: string } = {}\n for (const [fp, key] of Object.entries(keys)) {\n res[fingerprintV1toV2(fp)] = ua2b64(await this.primitives.HMAC.sign(await this.extractHmacFromRsaPrivate(key), new Uint8Array(rawData)))\n }\n return res\n }\n\n private async verifyDelegatorSignature(\n exchangeData: ExchangeData,\n decryptedSharedSignatureKey: CryptoKey,\n verificationKeys: { [keyPairFingerprint: string]: CryptoKey }\n ): Promise {\n const delegatorSignatureData = await this.bytesToSignForDelegatorSignature({\n sharedSignatureKey: decryptedSharedSignatureKey,\n })\n const keysByV2Fp = Object.fromEntries(Object.entries(verificationKeys).map(([fp, key]): [string, CryptoKey] => [fingerprintV1toV2(fp), key]))\n for (const [fp, signature] of Object.entries(exchangeData.delegatorSignature)) {\n const verificationKey = keysByV2Fp[fp]\n if (\n verificationKey &&\n (await this.primitives.HMAC.verify(await this.extractHmacFromRsaPrivate(verificationKey), delegatorSignatureData, b64_2ua(signature)))\n )\n return true\n }\n return false\n }\n\n private async signDataWithSharedKey(rawData: ArrayBuffer, key: CryptoKey): Promise {\n return ua2b64(await this.primitives.HMAC.sign(key, new Uint8Array(rawData)))\n }\n\n private async verifyDataWithSharedKey(rawData: ArrayBuffer, key: CryptoKey, signature: string): Promise {\n return await this.primitives.HMAC.verify(key, new Uint8Array(rawData), b64_2ua(signature))\n }\n}\n","import { KeyPair } from './RSA'\nimport { hex2ua, notConcurrent, ua2hex } from '../utils'\nimport { DataOwner, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IccDeviceApi, IccHcpartyApi, IccPatientApi } from '../../icc-api'\nimport { fingerprintV1, getShaVersionForKey } from './utils'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\n\n/**\n * @internal This class is meant only for internal use and may be changed without notice.\n * Functions to create and get exchange keys.\n * The methods of this api require to pass the appropriate keys for encryption/decryption manually.\n */\nexport class BaseExchangeKeysManager {\n private readonly generateKeyConcurrencyMap: { [key: string]: PromiseLike } = {}\n private readonly primitives: CryptoPrimitives\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly hcpartyBaseApi: IccHcpartyApi\n private readonly patientBaseApi: IccPatientApi\n private readonly deviceBaseApi: IccDeviceApi\n\n constructor(\n primitives: CryptoPrimitives,\n dataOwnerApi: IccDataOwnerXApi,\n hcpartyBaseApi: IccHcpartyApi,\n patientBaseApi: IccPatientApi,\n deviceBaseApi: IccDeviceApi\n ) {\n this.primitives = primitives\n this.dataOwnerApi = dataOwnerApi\n this.hcpartyBaseApi = hcpartyBaseApi\n this.patientBaseApi = patientBaseApi\n this.deviceBaseApi = deviceBaseApi\n }\n\n /**\n * Updates the aes exchange keys between the current data owner and another data owner to allow the other data owner to access the exchange key\n * using his new public key. Note that this will make existing exchange keys from the other data owner to the current data owner invalid for\n * encryption.\n * @param otherDataOwner the other data owner.\n * @param newDataOwnerPublicKey a new public key of the other data owner.\n * @param keyPairsByFingerprint all available key pairs to use for the decryption of existing aes exchange keys.\n */\n async giveAccessBackTo(\n otherDataOwner: string,\n newDataOwnerPublicKey: string,\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ) {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const other = await this.dataOwnerApi.getCryptoActorStub(otherDataOwner)\n const newKeyHashVersion = getShaVersionForKey(other.stub, newDataOwnerPublicKey)\n if (!newKeyHashVersion) throw new Error(`Public key not found for data owner ${otherDataOwner}`)\n const newPublicKey = await this.primitives.RSA.importKey('spki', hex2ua(newDataOwnerPublicKey), ['encrypt'], newKeyHashVersion)\n await this.extendForGiveAccessBackTo(selfId, otherDataOwner, fingerprintV1(newDataOwnerPublicKey), newPublicKey, keyPairsByFingerprint)\n await this.extendForGiveAccessBackTo(otherDataOwner, selfId, fingerprintV1(newDataOwnerPublicKey), newPublicKey, keyPairsByFingerprint)\n }\n\n /**\n * Get the encrypted exchange keys for a delegator-delegate pair.\n * @param delegatorId id of the delegator data owner.\n * @param delegateId id of the delegate data owner.\n * @return an array of exchange keys from the delegator to delegate where each key is encrypted with one or more public keys.\n */\n async getEncryptedExchangeKeysFor(delegatorId: string, delegateId: string): Promise<{ [publicKeyFingerprint: string]: string }[]> {\n const delegator = await this.dataOwnerApi.getCryptoActorStub(delegatorId)\n const res: { [publicKeyFingerprint: string]: string }[] = Object.values(delegator.stub.aesExchangeKeys ?? {}).flatMap((delegateToKey) => {\n const encryptedKeyForDelegate = delegateToKey[delegateId]\n if (encryptedKeyForDelegate) {\n return [encryptedKeyForDelegate]\n } else {\n return []\n }\n })\n const legacyDelegation = delegator.stub.hcPartyKeys?.[delegateId]?.[1]\n if (legacyDelegation) res.push({ '': legacyDelegation })\n return res\n }\n\n /**\n * Get all exchange keys where the provided data owner is involved either as the delegator or as the delegate.\n * @param dataOwnerId id of a data owner.\n * @param otherOwnerTypes only exchange keys between the current data owner and data owners of this type will be included in the result. If null considers all delegates\n * @return all exchange keys involving the provided data owner. Note that there may be an overlap between some keys to and from the data owner.\n */\n async getAllExchangeKeysWith(\n dataOwnerId: string,\n otherOwnerTypes: DataOwnerTypeEnum[] | null\n ): Promise<{\n keysToOwner: { [delegatorId: string]: { [delegatorFp: string]: { [entryFp: string]: string } } }\n keysFromOwner: { [delegatorFp: string]: { [delegateId: string]: { [entryFp: string]: string } } }\n }> {\n if (otherOwnerTypes != null && otherOwnerTypes.length === 0) throw new Error('otherOwnerTypes must not be empty!')\n const keysToOwner = await Promise.all([\n otherOwnerTypes == null || otherOwnerTypes.find((x) => x === 'hcp')\n ? this.hcpartyBaseApi.getAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n otherOwnerTypes == null || otherOwnerTypes.find((x) => x === 'patient')\n ? this.patientBaseApi.getPatientAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n otherOwnerTypes == null || otherOwnerTypes.find((x) => x === 'device')\n ? this.deviceBaseApi.getDeviceAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n ]).then(([a, b, c]) => ({ ...a, ...b, ...c } as { [delegatorId: string]: { [delegatorFp: string]: { [entryFp: string]: string } } }))\n const dataOwner = await this.dataOwnerApi.getCryptoActorStub(dataOwnerId)\n const allOwnerKeys = await this.combineLegacyHcpKeysWithAesExchangeKeys(dataOwner.stub, undefined, false)\n const filteredDelegates = new Set(\n await Array.from(new Set(Object.values(allOwnerKeys).flatMap((x) => Object.keys(x)))).reduce(async (acc, ownerId) => {\n const awaitedAcc = await acc\n if (ownerId === dataOwnerId || otherOwnerTypes == null) {\n return [...awaitedAcc, ownerId]\n } else {\n try {\n const dataOwnerType: DataOwnerTypeEnum = (await this.dataOwnerApi.getCryptoActorStub(ownerId)).type\n if (otherOwnerTypes.some((x) => x === dataOwnerType)) {\n return [...awaitedAcc, ownerId]\n } else return awaitedAcc\n } catch (_) {\n return awaitedAcc\n }\n }\n }, Promise.resolve([] as string[]))\n )\n const keysFromOwner = Object.fromEntries(\n Object.entries(allOwnerKeys)\n .map(([delegatorPubKey, delegateToKeys]) => [\n delegatorPubKey,\n Object.fromEntries(\n Object.entries(delegateToKeys).filter(([delegateId]) => filteredDelegates.has(delegateId)) as [string, { [k: string]: string }][]\n ),\n ])\n .filter(([, x]) => Object.keys(x).length > 0) as [string, { [k: string]: { [k: string]: string } }][]\n )\n return { keysToOwner, keysFromOwner }\n }\n\n /**\n * Attempts to decrypt many exchange keys using any of the provided key pairs.\n * @param encryptedExchangeKeys an array of exchange keys where each key is encrypted with one or more public keys.\n * @param keyPairsByFingerprint rsa key pairs to use for decryption.\n * @return an array all successfully decrypted exchange keys and an array containing all exchange keys which could not be decrypted.\n */\n async tryDecryptExchangeKeys(\n encryptedExchangeKeys: { [publicKeyFingerprint: string]: string }[],\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{\n successfulDecryptions: CryptoKey[]\n failedDecryptions: { [publicKeyFingerprint: string]: string }[]\n }> {\n const raws = new Set()\n const res: {\n successfulDecryptions: CryptoKey[]\n failedDecryptions: { [publicKeyFingerprint: string]: string }[]\n } = { successfulDecryptions: [], failedDecryptions: [] }\n for (const encryptedExchangeKey of encryptedExchangeKeys) {\n const decrypted = await this.tryDecryptExchangeKey(encryptedExchangeKey, keyPairsByFingerprint)\n if (decrypted !== undefined && !raws.has(decrypted.raw)) {\n raws.add(decrypted.raw)\n res.successfulDecryptions.push(decrypted.key)\n } else {\n res.failedDecryptions.push(encryptedExchangeKey)\n }\n }\n return res\n }\n\n private async extendForGiveAccessBackTo(\n delegatorId: string,\n delegateId: string,\n newPublicKeyFp: string,\n newPublicKey: CryptoKey,\n decryptionKeyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ) {\n await notConcurrent(this.generateKeyConcurrencyMap, delegatorId, async () => {\n const delegator = await this.dataOwnerApi.getCryptoActorStub(delegatorId)\n const delegate = await this.dataOwnerApi.getCryptoActorStub(delegateId)\n let didUpdateSomeKey = false\n const combinedKeys = await this.combineLegacyHcpKeysWithAesExchangeKeys(delegator.stub, delegate.stub, true)\n const updatedExchangeKeys: { [delegatorKey: string]: { [delegateId: string]: { [keyFp: string]: string } } } = {}\n const newEncryptionKeys = { [newPublicKeyFp]: newPublicKey }\n for (const [currDelegatorKey, currDelegatesToKeys] of Object.entries(combinedKeys)) {\n const updatedDelegatesToKeys: { [delegateId: string]: { [keyFp: string]: string } } = {}\n for (const [currDelegateId, currEncryptedKey] of Object.entries(currDelegatesToKeys)) {\n if (delegateId !== currDelegateId || newPublicKeyFp in currEncryptedKey) {\n updatedDelegatesToKeys[currDelegateId] = currEncryptedKey\n } else {\n const decrypted = await this.tryDecryptExchangeKey(currEncryptedKey, decryptionKeyPairsByFingerprint)\n if (decrypted) {\n didUpdateSomeKey = true\n updatedDelegatesToKeys[currDelegateId] = {\n ...currEncryptedKey,\n ...(await this.encryptExchangeKey(decrypted, newEncryptionKeys)).encryptedExchangeKey,\n }\n } else {\n updatedDelegatesToKeys[currDelegateId] = currEncryptedKey\n }\n }\n }\n updatedExchangeKeys[currDelegatorKey] = updatedDelegatesToKeys\n }\n if (didUpdateSomeKey) {\n await this.dataOwnerApi.modifyCryptoActorStub({\n type: delegator.type,\n stub: {\n ...delegator.stub,\n aesExchangeKeys: updatedExchangeKeys,\n },\n })\n }\n })\n }\n\n /**\n * Attempts to decrypt an exchange key using any of the provided key pairs.\n * @param encryptedExchangeKey an encrypted exchange key, in the form publicKeyXyzFingerprint -> hex(exchangeKeyEncryptedByPrivateKeyXyz).\n * @param keyPairsByFingerprint rsa key pairs to use for decryption.\n * @return the decrypted exchange key, in raw and key format (to allow deduplication), or undefined if the key could not be decrypted using the\n * provided keys.\n */\n private async tryDecryptExchangeKey(\n encryptedExchangeKey: { [publicKeyFingerprint: string]: string },\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{ raw: string; key: CryptoKey } | undefined> {\n for (const [entryKey, encrypted] of Object.entries(encryptedExchangeKey)) {\n // Due to bugs in past version the entry may actually contain the full public key instead of just the fingerprint.\n const fp = fingerprintV1(entryKey)\n const keyPair = keyPairsByFingerprint[fp]\n if (keyPair !== undefined) {\n const res = await this.tryDecryptExchangeKeyWith(encrypted, keyPair, fp)\n if (res !== undefined) return res\n }\n }\n const defaultEncryptedKey = encryptedExchangeKey['']\n if (defaultEncryptedKey !== undefined) {\n for (const keyPair of Object.values(keyPairsByFingerprint)) {\n // disable error logging, we are not sure keyPair is the correct key\n const res = await this.tryDecryptExchangeKeyWith(defaultEncryptedKey, keyPair, undefined)\n if (res !== undefined) return res\n }\n }\n return undefined\n }\n\n /**\n * Creates an encrypted exchange key for the provided public keys.\n * @param exchangeKey the exchange key in raw and imported format. If undefined a new key will be automatically created.\n * @param publicKeys additional public keys that will have access to the exchange key in spki format, hex-encoded.\n * @return the exchangeKey and an object with the exchange key encrypted with each of the provided public keys, hex-encoded, by fingerprint.\n */\n private async encryptExchangeKey(\n exchangeKey: { raw: string; key: CryptoKey } | undefined,\n publicKeys: { [keyFingerprint: string]: CryptoKey }\n ): Promise<{\n exchangeKey: CryptoKey\n encryptedExchangeKey: { [pubKeyFp: string]: string }\n }> {\n const exchangeKeyCrypto = exchangeKey?.key ?? (await this.primitives.AES.generateCryptoKey(false))\n const exchangeKeyBytes = exchangeKey !== undefined ? hex2ua(exchangeKey.raw) : await this.primitives.AES.exportKey(exchangeKeyCrypto, 'raw')\n const encryptedExchangeKey = await Object.entries(publicKeys).reduce(\n async (acc, [currKeyFp, currKey]) => ({\n ...(await acc),\n [currKeyFp]: ua2hex(await this.primitives.RSA.encrypt(currKey, new Uint8Array(exchangeKeyBytes))),\n }),\n Promise.resolve({} as { [pubKeyFp: string]: string })\n )\n return { exchangeKey: exchangeKeyCrypto, encryptedExchangeKey }\n }\n\n /**\n * Attempts to decrypt an exchange key using the provided key pairs.\n * If you are confident that the provided {@link keyPair} was used to encrypt {@link encryptedByOneKey} you should also provide {@link keyPairFp},\n * so that if the decryption fail an error will be logged to console before returning undefined.\n * @param encryptedByOneKey an exchange key which may be encrypted with {@link keyPair}.\n * @param keyPair an rsa key pair.\n * @param keyPairFp the fingerprint of the provided key pair or undefined to disable logging of error if the decryption failed.\n * @return the decrypted exchange key, in raw and key format (to allow deduplication), or undefined if the key could not be decrypted using the\n * provided key.\n */\n private async tryDecryptExchangeKeyWith(\n encryptedByOneKey: string,\n keyPair: KeyPair,\n keyPairFp: string | undefined // if undefined will not log errors, when we are not sure the key to be used is the provided key.\n ): Promise<{ raw: string; key: CryptoKey } | undefined> {\n try {\n const decrypted = await this.primitives.RSA.decrypt(keyPair.privateKey, hex2ua(encryptedByOneKey))\n return { raw: ua2hex(decrypted), key: await this.primitives.AES.importKey('raw', decrypted) }\n } catch (e) {\n if (keyPairFp) {\n console.error(`Failed to decrypt or import exchange key ${encryptedByOneKey} using key with fingerprint ${keyPairFp}.`, e)\n }\n }\n }\n // Copy all legacy hcp exchange keys into the new aes exchange keys\n private async combineLegacyHcpKeysWithAesExchangeKeys(\n owner: CryptoActorStub,\n delegate: CryptoActorStub | undefined,\n fillDelegateLegacyKey: boolean\n ): Promise<{ [ownerPublicKey: string]: { [delegateId: string]: { [fingerprint: string]: string } } }> {\n const ownerLegacyPublicKey = owner.publicKey\n if (ownerLegacyPublicKey != undefined && !(owner.aesExchangeKeys ?? {})[ownerLegacyPublicKey]) {\n /*\n * This condition would technically prevent new updates to the hcPartyKeys to be migrated to the aes exchange keys, but since I can only update\n * data for self data owner and parent entities this is not an issue, because I will always be using the new api from now on and I won't have\n * a situation where the legacy keys are updated but the aes exchange keys are not.\n */\n const counterPartsById: { [id: string]: CryptoActorStub } = {}\n if (fillDelegateLegacyKey) {\n counterPartsById[owner.id!] = owner\n if (delegate) {\n counterPartsById[delegate.id!] = delegate\n }\n for (const other of Object.keys(owner.hcPartyKeys ?? {}).filter((x) => x !== owner.id && x !== delegate?.id)) {\n try {\n counterPartsById[other] = (await this.dataOwnerApi.getCryptoActorStub(other)).stub\n } catch {\n // ignore\n }\n }\n }\n return {\n [ownerLegacyPublicKey]: Object.entries(owner.hcPartyKeys ?? {}).reduce((acc, [hcpId, keys]) => {\n const counterpartKey = counterPartsById[hcpId]?.publicKey\n acc[hcpId] = {\n [fingerprintV1(ownerLegacyPublicKey)]: keys[0],\n [(counterpartKey && fingerprintV1(counterpartKey)) ?? '']: keys[1],\n }\n return acc\n }, {} as { [delegateId: string]: { [fingerprint: string]: string } }),\n ...(owner.aesExchangeKeys ?? {}),\n }\n } else return owner.aesExchangeKeys ?? {}\n }\n}\n","import { EncryptedEntity } from '../../icc-api/model/models'\nimport { ExtendedApisUtils } from './ExtendedApisUtils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { EncryptedEntityWithType, EntityWithDelegationTypeName } from '../utils/EntityWithDelegationTypeName'\nimport { ShareMetadataBehaviour } from './ShareMetadataBehaviour'\nimport { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { EntityShareOrMetadataUpdateRequest } from '../../icc-api/model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../../icc-api/model/requests/EntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams } from '../../icc-api/model/requests/BulkShareOrUpdateMetadataParams'\n\n/**\n * @internal this class is intended for internal use only and may be changed without notice.\n * This class helps to create confidential medical data in systems where multiple hcps share data with each other using parent hcps: while normally\n * the hcps would share all data with other hcps part of the same \"family\" (e.g. an hospital) there are situations where the medical data is\n * confidential and should only be known by the doctor which created the data. In these situations it is also important that the secret foreign key\n * used in the confidential data is not known by other members of the hcp family, otherwise they may be able to draw some links between the medical\n * data and the patient.\n */\nexport class ConfidentialEntities {\n constructor(\n private readonly entitiesEncryption: ExtendedApisUtils,\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi\n ) {}\n\n /**\n * Ensures that the current data owner has access to a confidential secret id for the provided entity: this is an id that is known to the data owner\n * but is not known by any of his parents. If there is currently no confidential secret id for this entity the method returns a copy of the entity\n * with a new confidential secret id for the current data owner (the entity in the database won't be updated), else this method returns undefined.\n * New confidential secret ids will have an appropriate tag, but existing confidential secret ids may not necessarily have it.\n * @param entity an entity which needs to have a confidential secret id for the current data owner\n * @param entityType the type of the entity\n * @param doRequestBulkShareOrUpdate perform the request to share or update an entity encrypted metadata on the cloud API (and save to DB).\n * @return undefined if the entity already had a confidential secret id for the current user, or the updated AND SAVED entity with the new\n * confidential secret id.\n */\n async initialiseConfidentialSecretId(\n entity: T,\n entityType: EntityWithDelegationTypeName,\n doRequestBulkShareOrUpdate: (request: BulkShareOrUpdateMetadataParams) => Promise[]>\n ): Promise {\n if (await this.getConfidentialSecretId({ entity, type: entityType })) return undefined\n const confidentialSecretId = this.primitives.randomUuid()\n return (\n await this.entitiesEncryption.simpleShareOrUpdateEncryptedEntityMetadata(\n { entity, type: entityType },\n {\n [await this.dataOwnerApi.getCurrentDataOwnerId()]: {\n shareEncryptionKeys: ShareMetadataBehaviour.NEVER,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: [confidentialSecretId],\n requestedPermissions: RequestedPermissionEnum.MAX_WRITE,\n },\n },\n (request) => doRequestBulkShareOrUpdate(request)\n )\n ).updatedEntityOrThrow\n }\n\n /**\n * Get an existing confidential secret id of the provided entity for the provided data owner (current data owner by default). A confidential secret\n * id is a secret id known by the data owner but not known by any of his parents: note however that children will know confidential secret ids.\n * @param entity an entity for which you want to retrieve the confidential secret id.\n * @param dataOwnerId (current data owner by default) a data owner for which you want to get a confidential secret id.\n * @return the confidential secret id or undefined if there is no confidential secret id for the provided data owner.\n */\n async getConfidentialSecretId(entity: EncryptedEntityWithType, dataOwnerId?: string): Promise {\n return this.getConfidentialSecretIds(entity, dataOwnerId).then((x) => x[0])\n }\n\n /**\n * Get all existing confidential secret ids of the provided entity for the provided data owner (current data owner by default). A confidential secret\n * id is a secret id known by the data owner but not known by any of his parents: note however that children will know confidential secret ids.\n * @param entity an entity for which you want to retrieve the confidential secret id.\n * @param dataOwnerId (current data owner by default) a data owner for which you want to get a confidential secret id.\n * @return the confidential secret ids for the data owner (may be empty).\n */\n async getConfidentialSecretIds(entity: EncryptedEntityWithType, dataOwnerId?: string): Promise {\n // TODO throw exception if any parent key is not available? if we are missing even only one single parent key we can't be sure it is confidential\n const chosenDataOwnerId = dataOwnerId ?? (await this.dataOwnerApi.getCurrentDataOwnerId())\n const dataOwnerHierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIdsFrom(chosenDataOwnerId)\n const hierarchySecretIds = (await this.entitiesEncryption.secretIdsForHcpHierarchyOf(entity)).filter((x) =>\n dataOwnerHierarchy.includes(x.ownerId)\n )\n const keysForDataOwner = hierarchySecretIds.find((x) => x.ownerId === chosenDataOwnerId)\n\n if (!keysForDataOwner) return []\n return keysForDataOwner.extracted.filter((k) => !hierarchySecretIds.some((x) => x.ownerId !== chosenDataOwnerId && x.extracted.includes(k)))\n }\n\n /**\n * Gets a secret id known by the topmost parent of the current data owner hierarchy. If there is multiple secret ids shared with the topmost parent\n * there is no guarantee on which one will be chosen.\n * @param entity an entity.\n * @return a secret id known by the topmost parent of the current data owner hierarchy, or undefined if there is no secret id currently available\n * for the topmost parent.\n */\n async getAnySecretIdSharedWithParents(entity: EncryptedEntityWithType): Promise {\n return (await this.getSecretIdsSharedWithParents(entity))[0]\n }\n\n /**\n * Gets all secret ids known by the topmost parent of the current data owner hierarchy (or all secret ids known by the current data owner if he is\n * not part of any data owner hierarchy).\n * @param entity an entity.\n * @return all secret ids known by the topmost parent of the current data owner hierarchy, may be empty.\n */\n async getSecretIdsSharedWithParents(entity: EncryptedEntityWithType): Promise {\n return (await this.entitiesEncryption.secretIdsForHcpHierarchyOf(entity))[0].extracted\n }\n}\n","import { RSAUtils, RSAUtilsImpl } from './RSA'\nimport { AESUtils, AESUtilsImpl } from './AES'\nimport { ShamirClass, WebcryptoShamir } from './shamir'\nimport { HMACUtils, HMACUtilsImpl } from './HMACUtils'\n\nexport interface CryptoPrimitives {\n readonly shamir: ShamirClass\n readonly RSA: RSAUtils\n readonly AES: AESUtils\n readonly HMAC: HMACUtils\n /**\n * Generates a UUID using a cryptographically secure random number generator.\n */\n randomUuid(): string\n /**\n * @param data some data\n * @return the sha256 hash of {@link data}\n */\n sha256(data: ArrayBuffer | Uint8Array): Promise\n sha512(data: ArrayBuffer | Uint8Array): Promise\n /**\n * @param n how many bytes to generate\n * @return an array with n random bytes\n */\n randomBytes(n: number): Uint8Array\n}\n\n/**\n * Gives access to cryptographic primitives.\n */\nexport class WebCryptoPrimitives implements CryptoPrimitives {\n private readonly _rsa: RSAUtils\n private readonly _aes: AESUtils\n private readonly _shamir: ShamirClass\n private readonly _crypto: Crypto\n private readonly _hmac: HMACUtils\n\n get crypto(): Crypto {\n return this._crypto\n }\n\n get shamir(): ShamirClass {\n return this._shamir\n }\n\n get RSA(): RSAUtils {\n return this._rsa\n }\n\n get AES(): AESUtils {\n return this._aes\n }\n\n get HMAC(): HMACUtils {\n return this._hmac\n }\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this._crypto = crypto\n this._rsa = new RSAUtilsImpl(crypto)\n this._aes = new AESUtilsImpl(crypto)\n this._shamir = new WebcryptoShamir(crypto)\n this._hmac = new HMACUtilsImpl(crypto)\n }\n\n randomUuid() {\n return ((1e7).toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(\n /[018]/g,\n //Keep next inlined or you will lose the random\n (c) => (Number(c) ^ ((this.crypto.getRandomValues(new Uint8Array(1))! as Uint8Array)[0] & (15 >> (Number(c) / 4)))).toString(16)\n )\n }\n\n sha256(data: ArrayBuffer | Uint8Array): Promise {\n return this.crypto.subtle.digest('SHA-256', data)\n }\n\n sha512(data: ArrayBuffer | Uint8Array): Promise {\n return this.crypto.subtle.digest('SHA-512', data)\n }\n\n randomBytes(n: number): Uint8Array {\n const res = new Uint8Array(n)\n this.crypto.getRandomValues(res)\n return res\n }\n}\n","import { EncryptedEntityWithType, EntityWithDelegationTypeName } from '../utils/EntityWithDelegationTypeName'\nimport { SecureDelegation } from '../../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { SecureDelegationKeyMap } from '../../icc-api/model/internal/SecureDelegationKeyMap'\nimport { ExtendedApisUtils } from './ExtendedApisUtils'\nimport { ShareMetadataBehaviour } from './ShareMetadataBehaviour'\nimport { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { EncryptedFieldsManifest, parseEncryptedFields } from '../utils'\nimport { IccSecureDelegationKeyMapApi } from '../../icc-api/api/internal/IccSecureDelegationKeyMapApi'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../auth/AuthenticationProvider'\nimport { ACCESS_CONTROL_KEYS_HEADER, AccessControlKeysHeadersProvider } from './AccessControlKeysHeadersProvider'\nimport { AccessControlSecretUtils } from './AccessControlSecretUtils'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { DelegationMembersDetails, SecurityMetadataDecryptor } from './SecurityMetadataDecryptor'\n\n// TODO could be optimised using bulk methods\nexport class DelegationsDeAnonymization {\n private readonly delegationKeyMapFieldsToEncrypt: EncryptedFieldsManifest\n private readonly delegationKeyMapApi: IccSecureDelegationKeyMapApi\n\n constructor(\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly securityMetadataDecryptor: SecurityMetadataDecryptor,\n private readonly xapis: ExtendedApisUtils,\n private readonly cryptoPrimitives: CryptoPrimitives,\n private readonly accessControlSecretUtils: AccessControlSecretUtils,\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n private readonly accessControlKeysHeadersProvider: AccessControlKeysHeadersProvider\n ) {\n this.delegationKeyMapFieldsToEncrypt = parseEncryptedFields(['delegate', 'delegator'], 'SecureDelegationKeyMap')\n this.delegationKeyMapApi = new IccSecureDelegationKeyMapApi(host, headers, authenticationProvider, fetchImpl)\n }\n\n /**\n * Creates / updates information to allow the data owners in {@link shareWithDataOwners} to de-anonymize the delegations contained within\n * {@link entity}.\n * Note that the delegation de-anonymization information may be used also with other entities of the same type.\n */\n async createOrUpdateDeAnonymizationInfo(entityWithType: EncryptedEntityWithType, shareWithDataOwners: string[]) {\n const delegationsDetails = Object.entries(await this.securityMetadataDecryptor.getDelegationMemberDetails(entityWithType)).flatMap(\n ([canonicalKey, delegation]) => {\n const aliases = Object.entries(entityWithType.entity.securityMetadata?.keysEquivalences ?? {}).flatMap(([alias, canon]) => {\n if (canon == canonicalKey) {\n return [alias]\n } else {\n return []\n }\n })\n return [[canonicalKey, delegation], ...aliases.map((alias) => [alias, delegation])] as [string, DelegationMembersDetails][]\n }\n )\n const delegationsForDeanonInfoSharing = delegationsDetails.filter(([_, delegationInfo]) => {\n // Drop fully explicit ones: they don't need de-anonymization info\n return !delegationInfo.fullyExplicit\n })\n // A subset of delegations for which deanon info is relevant AND for which we can also create new info instead of sharing only existing one.\n const delegationsForNewDeanonInfoCreation = delegationsForDeanonInfoSharing.filter(([_, delegationInfo]) => {\n // Drop those for which we don't have the full information needed for the creation of new data.\n return !!delegationInfo.delegate && !!delegationInfo.delegator && !!delegationInfo.accessControlSecret\n })\n const existingDelegationsMap = await this.getDecryptedSecureDelegationKeyMaps(\n delegationsForDeanonInfoSharing.map((x) => x[0]),\n entityWithType.type\n )\n for (const delMapToShare of existingDelegationsMap) {\n await this.ensureDelegationKeyMapSharedWith(entityWithType.type, delMapToShare, shareWithDataOwners)\n }\n const existingDelegationsMapKeys = new Set(existingDelegationsMap.map((x) => x.delegationKey))\n const delegationsToCreate = delegationsForNewDeanonInfoCreation.filter(([k, _]) => !existingDelegationsMapKeys.has(k))\n for (const [delKey, membersDetails] of delegationsToCreate) {\n await this.createSecureDelegationKeyMap(entityWithType.type, delKey, membersDetails, shareWithDataOwners)\n }\n }\n\n /**\n * Get the data owners which can access the entity. See {@link EncryptedEntityXApi.getDataOwnersWithAccessTo} for more details.\n * @param entityWithType an entity.\n */\n async getDataOwnersWithAccessTo(entityWithType: EncryptedEntityWithType): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n return this.mergePermissions([\n await this.getDataOwnersWithAccessToSecureDelegations(entityWithType),\n {\n permissionsByDataOwnerId: Object.fromEntries(Object.keys(entityWithType.entity.delegations ?? {}).map((k) => [k, AccessLevelEnum.WRITE])),\n hasUnknownAnonymousDataOwners: false,\n },\n ])\n }\n\n private async getDataOwnersWithAccessToSecureDelegations(entityWithType: EncryptedEntityWithType): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n const secureDelegationDetails = await this.securityMetadataDecryptor.getDelegationMemberDetails(entityWithType)\n const secureDelegationWithUnknownMembers = Object.entries(secureDelegationDetails).flatMap(([canonicalKey, delegation]) => {\n if (!delegation.delegate || !delegation.delegator) {\n const aliases = Object.entries(entityWithType.entity.securityMetadata?.keysEquivalences ?? {}).flatMap(([alias, canon]) => {\n if (canon == canonicalKey) {\n return [alias]\n } else {\n return []\n }\n })\n return [{ keys: [canonicalKey, ...aliases], delegation }]\n } else {\n return []\n }\n })\n const secureDelegationKeyMapsByDelegationKey = Object.fromEntries(\n (\n await this.getDecryptedSecureDelegationKeyMaps(\n secureDelegationWithUnknownMembers.flatMap(({ keys }) => keys),\n entityWithType.type\n )\n ).map((x) => [x.delegationKey, x])\n )\n const permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum } = {}\n let hasUnknownAnonymousDataOwners = false\n function addAccess(dataOwnerId: string, level: AccessLevelEnum) {\n if (permissionsByDataOwnerId[dataOwnerId] !== AccessLevelEnum.WRITE) {\n permissionsByDataOwnerId[dataOwnerId] = level\n }\n }\n for (const delegation of Object.values(secureDelegationDetails)) {\n if (delegation.delegate) addAccess(delegation.delegate, delegation.accessLevel)\n if (delegation.delegator) addAccess(delegation.delegator, delegation.accessLevel)\n }\n for (const { keys, delegation } of secureDelegationWithUnknownMembers) {\n const bestKey = keys.find((k) => {\n const currMap = secureDelegationKeyMapsByDelegationKey[k]\n return currMap && !!currMap.delegator && !!currMap.delegate\n })\n if (bestKey) {\n const keyMap = secureDelegationKeyMapsByDelegationKey[bestKey]\n addAccess(keyMap.delegate!, delegation.accessLevel)\n addAccess(keyMap.delegator!, delegation.accessLevel)\n } else {\n hasUnknownAnonymousDataOwners = true\n }\n }\n return { permissionsByDataOwnerId, hasUnknownAnonymousDataOwners }\n }\n\n private async mergePermissions(\n values: {\n permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum }\n hasUnknownAnonymousDataOwners: boolean\n }[]\n ): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n const accumulatedPermissions: { [dataOwnerId: string]: AccessLevelEnum } = {}\n let hasUnknownAnonymousDataOwners = false\n for (const v of values) {\n hasUnknownAnonymousDataOwners = hasUnknownAnonymousDataOwners || v.hasUnknownAnonymousDataOwners\n for (const [dataOwnerId, level] of Object.entries(v.permissionsByDataOwnerId)) {\n if (accumulatedPermissions[dataOwnerId] !== AccessLevelEnum.WRITE) {\n accumulatedPermissions[dataOwnerId] = level\n }\n }\n }\n return {\n permissionsByDataOwnerId: accumulatedPermissions,\n hasUnknownAnonymousDataOwners,\n }\n }\n\n private async getDecryptedSecureDelegationKeyMaps(\n delegationIds: string[],\n entityType: EntityWithDelegationTypeName\n ): Promise {\n if (delegationIds.length) {\n const encryptedMaps = await this.delegationKeyMapApi.getByDelegationKeys(\n { ids: delegationIds },\n await this.accessControlKeysHeadersProvider.getAccessControlKeysHeaders(entityType)\n )\n const res: SecureDelegationKeyMap[] = []\n for (const encryptedMap of encryptedMaps) {\n // Use the original entity type\n const decryptionResult = (await this.xapis.tryDecryptEntities([encryptedMap], entityType, (x) => new SecureDelegationKeyMap(x)))[0]\n if (decryptionResult.decrypted) {\n res.push(decryptionResult.entity)\n }\n }\n return res\n } else return []\n }\n\n // Important: to avoid potentially leaking links between entities of different types the key map calculates the secure delegation keys using the\n // same entity type as the delegation key for which they are mapping information.\n private async ensureDelegationKeyMapSharedWith(entityType: EntityWithDelegationTypeName, keyMap: SecureDelegationKeyMap, delegates: string[]) {\n if (!keyMap.delegator || !keyMap.delegate) throw new Error('Illegal state: key map is missing delegator or delegate info.')\n const dataOwnersWithAccessToMapThroughDelegation = Object.values(\n await this.securityMetadataDecryptor.getDelegationMemberDetails({\n type: entityType,\n entity: keyMap,\n })\n )\n .flatMap((x) => [x.delegate, x.delegator])\n .filter((x) => !!x) as string[]\n // Delegator and delegate got access to the entity when it was first created: no need to share with them ever.\n const dataOwnersWithAccessToMap = new Set([keyMap.delegate, keyMap.delegator, ...dataOwnersWithAccessToMapThroughDelegation])\n const dataOwnersNeedingShare = delegates.filter((x) => !dataOwnersWithAccessToMap.has(x))\n if (dataOwnersNeedingShare.length) {\n ;(\n await this.xapis.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: keyMap,\n type: entityType,\n },\n Object.fromEntries(\n dataOwnersNeedingShare.map((x) => [\n x,\n {\n shareSecretIds: [],\n shareEncryptionKeys: ShareMetadataBehaviour.REQUIRED,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n requestedPermissions: RequestedPermissionEnum.FULL_READ,\n },\n ])\n ),\n async (request) =>\n this.delegationKeyMapApi.bulkShareSecureDelegationKeyMap(\n request,\n await this.accessControlKeysHeadersProvider.getAccessControlKeysHeaders(entityType)\n )\n )\n ).updatedEntityOrThrow\n }\n }\n\n // Important: to avoid potentially leaking links between entities of different types the key map calculates the secure delegation keys using the\n // same entity type as the delegation key for which they are mapping information.\n private async createSecureDelegationKeyMap(\n entityType: EntityWithDelegationTypeName,\n delegationKey: string,\n delegationMembersDetails: DelegationMembersDetails,\n delegates: string[]\n ) {\n if (!delegationMembersDetails.delegate || !delegationMembersDetails.delegator || !delegationMembersDetails.accessControlSecret)\n throw new Error('Illegal state: delegation members details are missing delegate, delegator or access control secret info.')\n const selfDoId = await this.dataOwnerApi.getCurrentDataOwnerId()\n // Ensure that both the delegator and delegate of the delegation this map refers tho can share it later on, even if they did not create it.\n // Usually either the delegator or delegate are the current data owner, but sometimes also the child of the delegator or delegate can do it.\n const initialDelegates = [delegationMembersDetails.delegate, delegationMembersDetails.delegator, ...delegates].filter((x) => x != selfDoId)\n const initalisedMapInfo = await this.xapis.entityWithInitialisedEncryptedMetadata(\n {\n id: this.cryptoPrimitives.randomUuid(),\n delegate: delegationMembersDetails.delegate,\n delegator: delegationMembersDetails.delegator,\n delegationKey: delegationKey,\n },\n entityType,\n undefined,\n undefined,\n true,\n Object.fromEntries(initialDelegates.map((x) => [x, AccessLevelEnum.READ]))\n )\n const encryptedKeyMap = (\n await this.xapis.tryEncryptEntities(\n [initalisedMapInfo.updatedEntity],\n entityType,\n this.delegationKeyMapFieldsToEncrypt,\n false,\n true,\n (x) => new SecureDelegationKeyMap(x)\n )\n )[0]\n await this.delegationKeyMapApi.create(\n encryptedKeyMap,\n new XHR.Header(\n ACCESS_CONTROL_KEYS_HEADER,\n await this.accessControlSecretUtils.getEncodedAccessControlKeys([delegationMembersDetails.accessControlSecret], entityType)\n )\n )\n }\n}\n","import { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { BaseExchangeDataManager } from './BaseExchangeDataManager'\nimport { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { AccessControlSecretUtils } from './AccessControlSecretUtils'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { fingerprintV1, getShaVersionForKey, hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { EntityWithDelegationTypeName, hex2ua } from '../utils'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { ShaVersion } from './RSA'\nimport { Mutex } from 'async-mutex'\nimport { SimpleLruCache } from '../utils/simple-lru-cache'\n\nexport type ExchangeDataManagerOptionalParameters = {\n // Only for not fully cached implementation (data owner can't request all his exchange data), amount of exchange data which can be cached\n lruCacheSize?: number // default = 2000\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice.\n * Initialises and returns the exchange data manager which is most appropriate for the current data owner.\n */\nexport async function initialiseExchangeDataManagerForCurrentDataOwner(\n base: BaseExchangeDataManager,\n encryptionKeys: UserEncryptionKeysManager,\n accessControlSecret: AccessControlSecretUtils,\n cryptoStrategies: CryptoStrategies,\n dataOwnerApi: IccDataOwnerXApi,\n primitives: CryptoPrimitives,\n useParentKeys: boolean,\n optionalParameters: ExchangeDataManagerOptionalParameters = {}\n): Promise {\n const currentOwner = CryptoActorStubWithType.fromDataOwner(await dataOwnerApi.getCurrentDataOwner())\n if (cryptoStrategies.dataOwnerRequiresAnonymousDelegation(currentOwner)) {\n const res = new FullyCachedExchangeDataManager(\n base,\n encryptionKeys,\n accessControlSecret,\n cryptoStrategies,\n dataOwnerApi,\n primitives,\n useParentKeys\n )\n await res.clearOrRepopulateCache()\n return res\n } else {\n return new LimitedLruCacheExchangeDataManager(\n base,\n encryptionKeys,\n accessControlSecret,\n cryptoStrategies,\n dataOwnerApi,\n primitives,\n useParentKeys,\n optionalParameters\n )\n }\n}\n\ntype CachedExchangeData = {\n exchangeData: ExchangeData\n decrypted?: {\n accessControlSecret: string\n exchangeKey: CryptoKey\n verified: boolean\n }\n}\n\n/**\n * @internal this class is intended for internal use only and may be changed without notice.\n * Exchange data manager which automatically handles decryption and cache\n */\nexport interface ExchangeDataManager {\n readonly base: BaseExchangeDataManager\n\n /**\n * Updates all exchange data between the current data owner and another data owner to allow the other data owner to access existing exchange data\n * using a new public key. Note that this will make existing exchange keys from the other data owner to the current data owner unverified, therefore\n * invalid for encryption.\n * @param otherDataOwner the other data owner.\n * @param newDataOwnerPublicKey a new public key of the other data owner.\n */\n giveAccessBackTo(otherDataOwner: string, newDataOwnerPublicKey: string): Promise\n\n /**\n * Gets any existing and verified exchange data from the current data owner to the provided delegate or creates new data if no verified data is\n * available, then caches it.\n * @param delegateId the id of the delegate.\n * @param allowCreationWithoutDelegateKey if true, when creating new exchange data, even if no verified key is available for the delegate the method\n * will create the new exchange data anyway (will not be usable by the delegate without additional steps).\n * @return the access control secret and key of the data to use for encryption.\n */\n getOrCreateEncryptionDataTo(\n delegateId: string,\n allowCreationWithoutDelegateKey: boolean\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey }>\n\n /**\n * Retrieve the cached decrypted exchange data key associated with any of the provided hashes/entry keys of secure delegations.\n * @param hashes hashes of access control secrets for a specific entity, as they appear in the key of secure delegation entries\n * @return the exchange data and decrypted key associated to that hash if cached\n */\n getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [hash: string]: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey } }>\n\n /**\n * Retrieves the exchange data with the provided id (from the cache if available or from the server otherwise if allowed by\n * and attempts to decrypt it, then caches the result.\n * @param ids ids of the exchange datas to retrieve\n * @param retrieveIfNotCached if false only cached data will be returned, and the access control hases options will be\n * ignored\n * @return a map containing the exchange data id associated with:\n * - exchangeData: the exchange data with the provided id\n * - exchangeKey: the exchange key corresponding to the provided exchange data if it could be decrypted, else undefined\n * - accessControlSecret: the access control secret corresponding to the provided exchange data if it could be decrypted, else undefined\n */\n getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{ [id: string]: { exchangeKey: CryptoKey | undefined; accessControlSecret: string | undefined; exchangeData: ExchangeData } }>\n\n /**\n * Clears the cache or fully repopulates the cache if the current data owner can retrieve all of his exchange data according to the crypto\n * strategies.\n */\n clearOrRepopulateCache(): Promise\n\n /**\n * If the current data owner requires anonymous delegations this returns the base64 representation of the concatenation of all available access\n * control keys for the current data owner.\n */\n getAccessControlKeysValue(entityType: EntityWithDelegationTypeName): Promise\n\n /**\n * If the current data owner requires anonymous delegations this returns the access control keys which may be used in secure delegations for the\n * data owner, which can be used to search for data.\n */\n getAllDelegationKeys(entityType: EntityWithDelegationTypeName): Promise\n}\n\nabstract class AbstractExchangeDataManager implements ExchangeDataManager {\n constructor(\n readonly base: BaseExchangeDataManager,\n protected readonly encryptionKeys: UserEncryptionKeysManager,\n protected readonly accessControlSecret: AccessControlSecretUtils,\n protected readonly cryptoStrategies: CryptoStrategies,\n protected readonly dataOwnerApi: IccDataOwnerXApi,\n protected readonly primitives: CryptoPrimitives,\n private readonly useParentKeys: boolean\n ) {}\n\n protected async decryptData(data: ExchangeData): Promise<\n | {\n accessControlSecret: string\n exchangeKey: CryptoKey\n verified: boolean\n }\n | undefined\n > {\n const decryptionKeys = this.encryptionKeys.getDecryptionKeys()\n const encryptionKeys = Object.fromEntries(\n this.encryptionKeys.getSelfVerifiedKeys().map((x): [string, CryptoKey] => [x.fingerprint, x.pair.privateKey])\n )\n const decryptedExchangeKey = (await this.base.tryDecryptExchangeKeys([data], decryptionKeys)).successfulDecryptions[0]\n if (!decryptedExchangeKey) return undefined\n const decryptedAccessControlSecret = (await this.base.tryDecryptAccessControlSecret([data], decryptionKeys)).successfulDecryptions[0]\n if (!decryptedAccessControlSecret)\n throw new Error(`Decryption key could be decrypted but access control secret could not for data ${JSON.stringify(data)}`)\n const decryptedSharedSignatureKey = (await this.base.tryDecryptSharedSignatureKeys([data], decryptionKeys)).successfulDecryptions[0]\n if (!decryptedSharedSignatureKey)\n throw new Error(`Decryption key could be decrypted but shared signature key could not for data ${JSON.stringify(data)}`)\n return {\n accessControlSecret: decryptedAccessControlSecret,\n exchangeKey: decryptedExchangeKey,\n verified: await this.base.verifyExchangeData(\n {\n exchangeData: data,\n decryptedAccessControlSecret,\n decryptedExchangeKey,\n decryptedSharedSignatureKey,\n },\n encryptionKeys,\n true\n ),\n }\n }\n\n protected async createNewExchangeData(\n delegateId: string,\n options: {\n newDataId?: string\n allowNoDelegateKeys?: boolean\n }\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey }> {\n const encryptionKeys: { [fp: string]: CryptoKey } = {}\n const selfVerifiedKeys = this.encryptionKeys.getSelfVerifiedKeys()\n selfVerifiedKeys.forEach(({ fingerprint, pair }) => {\n encryptionKeys[fingerprint] = pair.publicKey\n })\n if (delegateId != (await this.dataOwnerApi.getCurrentDataOwnerId())) {\n const delegate = await this.dataOwnerApi.getCryptoActorStub(delegateId)\n const sha256KeysOfDelegate = hexPublicKeysWithSha256Of(delegate.stub)\n const sha1KeysOfDelegate = hexPublicKeysWithSha1Of(delegate.stub)\n let allVerifiedDelegateKeys: string[]\n if (!sha256KeysOfDelegate.size && !sha1KeysOfDelegate.size) {\n if (!options.allowNoDelegateKeys)\n throw new Error(`Could not create exchange data to ${delegateId} as no public key for the delegate was found.`)\n allVerifiedDelegateKeys = []\n } else if (this.useParentKeys && (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()).includes(delegateId)) {\n allVerifiedDelegateKeys = await this.encryptionKeys.getVerifiedPublicKeysFor(delegate.stub)\n } else {\n allVerifiedDelegateKeys = await this.cryptoStrategies.verifyDelegatePublicKeys(\n delegate,\n [...Array.from(sha256KeysOfDelegate), ...Array.from(sha1KeysOfDelegate)],\n this.primitives\n )\n }\n if (!allVerifiedDelegateKeys.length && !options.allowNoDelegateKeys)\n throw new Error(`Could not create exchange data to ${delegateId} as no public key for the delegate could be verified.`)\n for (const delegateKey of allVerifiedDelegateKeys) {\n if (sha1KeysOfDelegate.has(delegateKey)) {\n encryptionKeys[fingerprintV1(delegateKey)] = await this.primitives.RSA.importKey('spki', hex2ua(delegateKey), ['encrypt'], ShaVersion.Sha1)\n } else if (sha256KeysOfDelegate.has(delegateKey)) {\n encryptionKeys[fingerprintV1(delegateKey)] = await this.primitives.RSA.importKey(\n 'spki',\n hex2ua(delegateKey),\n ['encrypt'],\n ShaVersion.Sha256\n )\n } else throw new Error('Illegal state: verified keys should contain only keys for OAPE-SHA1 or OAPE-SHA256.')\n }\n }\n const newData = await this.base.createExchangeData(\n delegateId,\n Object.fromEntries(selfVerifiedKeys.map((x): [string, CryptoKey] => [x.fingerprint, x.pair.privateKey])),\n encryptionKeys,\n options.newDataId ? { id: options.newDataId } : {}\n )\n return {\n exchangeData: newData.exchangeData,\n accessControlSecret: newData.accessControlSecret,\n exchangeKey: newData.exchangeKey,\n }\n }\n\n async giveAccessBackTo(otherDataOwner: string, newDataOwnerPublicKey: string) {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const newKeyFp = fingerprintV1(newDataOwnerPublicKey)\n const other = await this.dataOwnerApi.getCryptoActorStub(otherDataOwner)\n const newKeyHashVersion = getShaVersionForKey(other.stub, newDataOwnerPublicKey)\n if (!newKeyHashVersion) throw new Error(`Public key not found for data owner ${otherDataOwner}`)\n const importedNewKey = await this.primitives.RSA.importKey('spki', hex2ua(newDataOwnerPublicKey), ['encrypt'], newKeyHashVersion)\n const decryptionKeys = this.encryptionKeys.getDecryptionKeys()\n const allExchangeDataToUpdate =\n self == otherDataOwner\n ? await this.base.getExchangeDataByDelegatorDelegatePair(self, self)\n : [\n ...(await this.base.getExchangeDataByDelegatorDelegatePair(self, otherDataOwner)),\n ...(await this.base.getExchangeDataByDelegatorDelegatePair(otherDataOwner, self)),\n ]\n for (const dataToUpdate of allExchangeDataToUpdate) {\n if (!Object.keys(dataToUpdate.exchangeKey).find((fp) => fp == newKeyFp)) {\n const updated = await this.base.tryUpdateExchangeData(dataToUpdate, decryptionKeys, { [newKeyFp]: importedNewKey })\n if (!updated) {\n console.warn(`Failed to give access back to exchanged data ${JSON.stringify(dataToUpdate)}`)\n }\n }\n }\n }\n\n clearOrRepopulateCache(): Promise {\n throw new Error('Implemented by concrete class')\n }\n\n getOrCreateEncryptionDataTo(\n delegateId: string,\n allowCreationWithoutDelegateKey: boolean\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey }> {\n throw new Error('Implemented by concrete class')\n }\n\n getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [p: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } }> {\n throw new Error('Implemented by concrete class')\n }\n\n getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{\n [p: string]: {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n }> {\n throw new Error('Implemented by concrete class')\n }\n\n getAccessControlKeysValue(entityType: EntityWithDelegationTypeName): Promise {\n throw new Error('Implemented by concrete class')\n }\n\n getAllDelegationKeys(entityType: EntityWithDelegationTypeName): Promise {\n throw new Error('Implemented by concrete class')\n }\n}\n\nclass FullyCachedExchangeDataManager extends AbstractExchangeDataManager {\n private caches: Promise<{\n dataById: { [id: string]: CachedExchangeData }\n hashToId: { [hash: string]: string }\n delegateToVerifiedEncryptionDataId: { [delegate: string]: string }\n entityTypeToAccessControlKeysValue: { [entityType in EntityWithDelegationTypeName]?: string }\n }> = Promise.resolve({ dataById: {}, hashToId: {}, delegateToVerifiedEncryptionDataId: {}, entityTypeToAccessControlKeysValue: {} })\n private createExchangeDataMutex = new Mutex()\n\n async clearOrRepopulateCache(): Promise {\n this.caches = this.doRepopulateCache()\n await this.caches\n }\n\n async getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [hash: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } }> {\n function retrieveByHashesFromCaches(caches: {\n dataById: { [id: string]: CachedExchangeData }\n hashToId: { [hash: string]: string }\n delegateToVerifiedEncryptionDataId: { [delegate: string]: string }\n }): { [hash: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } } {\n return hashes.reduce((res, hash) => {\n const id = caches.hashToId[hash]\n if (id) {\n const cached = caches.dataById[id]\n if (cached?.decrypted) {\n res[hash] = {\n exchangeData: cached.exchangeData,\n exchangeKey: cached.decrypted.exchangeKey,\n accessControlSecret: cached.decrypted.accessControlSecret,\n }\n }\n }\n return res\n }, {} as { [hash: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } })\n }\n\n return retrieveByHashesFromCaches(await this.caches)\n }\n\n private async getCachedEncryptionDataTo(\n delegateId: string\n ): Promise<{ exchangeKey: CryptoKey; accessControlSecret: string; exchangeData: ExchangeData } | undefined> {\n const caches = await this.caches\n const dataId = caches.delegateToVerifiedEncryptionDataId[delegateId]\n const cached = dataId ? caches.dataById[dataId] : undefined\n if (cached && cached?.decrypted) {\n return {\n exchangeData: cached.exchangeData,\n accessControlSecret: cached.decrypted.accessControlSecret,\n exchangeKey: cached.decrypted.exchangeKey,\n }\n } else {\n return undefined\n }\n }\n\n async getOrCreateEncryptionDataTo(\n delegateId: string,\n allowCreationWithoutDelegateKey: boolean\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey }> {\n const initialCached = await this.getCachedEncryptionDataTo(delegateId)\n if (initialCached) return initialCached\n const release = await this.createExchangeDataMutex.acquire()\n try {\n const cachedAfterMutex = await this.getCachedEncryptionDataTo(delegateId)\n if (cachedAfterMutex) return cachedAfterMutex\n const created = await this.createNewExchangeData(delegateId, { allowNoDelegateKeys: allowCreationWithoutDelegateKey })\n this.cacheData(created.exchangeData, true, {\n accessControlSecret: created.accessControlSecret,\n exchangeKey: created.exchangeKey,\n verified: true,\n })\n return created\n } finally {\n release()\n }\n }\n\n async getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{\n [p: string]: {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n }> {\n const caches = await this.caches\n const res: {\n [p: string]: {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n } = {}\n for (const id of ids) {\n const data = caches.dataById[id]\n if (data) {\n res[id] = {\n exchangeData: data.exchangeData,\n exchangeKey: data.decrypted?.exchangeKey,\n accessControlSecret: data.decrypted?.accessControlSecret,\n }\n }\n }\n return res\n }\n\n private cacheData(\n exchangeData: ExchangeData,\n isNewData: boolean,\n decrypted: { accessControlSecret: string; exchangeKey: CryptoKey; verified: boolean } | undefined\n ): void {\n this.caches = this.caches.then(async (caches) => {\n caches.dataById[exchangeData.id!] = { exchangeData, decrypted }\n if (decrypted) {\n const hashes = await this.accessControlSecret.allSecureDelegationKeysFor(decrypted.accessControlSecret)\n hashes.forEach((hash) => {\n caches.hashToId[hash] = exchangeData.id!\n })\n if (decrypted.verified) {\n caches.delegateToVerifiedEncryptionDataId[exchangeData.delegate] = exchangeData.id!\n }\n }\n if (isNewData) caches.entityTypeToAccessControlKeysValue = {}\n return caches\n })\n }\n\n private async doRepopulateCache(): Promise<{\n dataById: { [id: string]: CachedExchangeData }\n hashToId: { [hash: string]: string }\n delegateToVerifiedEncryptionDataId: { [delegate: string]: string }\n entityTypeToAccessControlKeysValue: { [entityType in EntityWithDelegationTypeName]?: string }\n }> {\n const allData = await this.base.getAllExchangeDataForCurrentDataOwnerIfAllowed()\n if (!allData) throw new Error('Impossible to use fully cached exchange data manager for current data owner.')\n const dataById: { [id: string]: CachedExchangeData } = {}\n const hashToId: { [hash: string]: string } = {}\n const delegateToVerifiedEncryptionDataId: { [delegate: string]: string } = {}\n for (const currData of allData) {\n const currDecrypted = await this.decryptData(currData)\n dataById[currData.id!] = { exchangeData: currData, decrypted: currDecrypted }\n if (currDecrypted?.verified) {\n delegateToVerifiedEncryptionDataId[currData.delegate] = currData.id!\n }\n if (currDecrypted?.accessControlSecret) {\n for (const h of await this.accessControlSecret.allSecureDelegationKeysFor(currDecrypted!.accessControlSecret)) {\n hashToId[h] = currData.id!\n }\n }\n }\n const entityTypeToAccessControlKeysValue: { [entityType in EntityWithDelegationTypeName]?: string } = {}\n return { dataById, hashToId, delegateToVerifiedEncryptionDataId, entityTypeToAccessControlKeysValue }\n }\n\n async getAccessControlKeysValue(entityType: EntityWithDelegationTypeName): Promise {\n const caches = await this.caches\n const cached = caches.entityTypeToAccessControlKeysValue[entityType]\n if (cached) return cached\n const accessControlSecrets = Object.values(caches.dataById).flatMap((x) => (x.decrypted ? [x.decrypted.accessControlSecret] : []))\n const fullData = await this.accessControlSecret.getEncodedAccessControlKeys(accessControlSecrets, entityType)\n caches.entityTypeToAccessControlKeysValue[entityType] = fullData\n return fullData\n }\n\n async getAllDelegationKeys(entityType: EntityWithDelegationTypeName): Promise {\n const caches = await this.caches\n const accessControlSecrets = Object.values(caches.dataById).flatMap((x) => (x.decrypted ? [x.decrypted.accessControlSecret] : []))\n const res: string[] = []\n for (const accessControlSecret of accessControlSecrets) {\n // Usage of sfks in secure delegation key should be configurable: it is not necessary for all users and it has some performance impact\n res.push(await this.accessControlSecret.secureDelegationKeyFor(accessControlSecret, entityType))\n }\n return res\n }\n}\n\nclass LimitedLruCacheExchangeDataManager extends AbstractExchangeDataManager {\n private readonly idToData: SimpleLruCache = new SimpleLruCache()\n private readonly hashToId: Map = new Map()\n private readonly delegateToVerifiedEncryptionDataId: Map = new Map()\n private readonly maxCachedExchangeData: number\n private readonly cacheMutex = new Mutex()\n\n constructor(\n base: BaseExchangeDataManager,\n encryptionKeys: UserEncryptionKeysManager,\n accessControlSecret: AccessControlSecretUtils,\n cryptoStrategies: CryptoStrategies,\n dataOwnerApi: IccDataOwnerXApi,\n primitives: CryptoPrimitives,\n useParentKeys: boolean,\n optionalParameters: {\n lruCacheSize?: number\n }\n ) {\n super(base, encryptionKeys, accessControlSecret, cryptoStrategies, dataOwnerApi, primitives, useParentKeys)\n this.maxCachedExchangeData = optionalParameters.lruCacheSize ?? 2000\n }\n\n async clearOrRepopulateCache(): Promise {\n this.idToData.clear()\n this.hashToId.clear()\n this.delegateToVerifiedEncryptionDataId.clear()\n }\n\n async getCachedDecryptionDataKeyByAccessControlHash(\n hashes: string[]\n ): Promise<{ [p: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string } }> {\n const release = await this.cacheMutex.acquire()\n try {\n const res: {\n [p: string]: { exchangeData: ExchangeData; exchangeKey: CryptoKey; accessControlSecret: string }\n } = {}\n for (const hash of hashes) {\n const dataId = this.hashToId.get(hash)\n if (dataId) {\n const retrieved = this.idToData.getCached(dataId)\n if (!retrieved) throw new Error(`Data with id ${dataId} should have been already cached.`)\n if (retrieved.decrypted) {\n res[hash] = {\n exchangeData: retrieved.exchangeData,\n exchangeKey: retrieved.decrypted.exchangeKey,\n accessControlSecret: retrieved.decrypted.accessControlSecret,\n }\n }\n }\n }\n return res\n } finally {\n release()\n }\n }\n\n async getDecryptionDataKeyByIds(\n ids: string[],\n retrieveIfNotCached: boolean\n ): Promise<{\n [p: string]: {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n }> {\n const release = await this.cacheMutex.acquire()\n try {\n const res: {\n [p: string]: {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n } = {}\n const uncached: string[] = []\n for (const id of ids) {\n const cached: (CachedExchangeData & { hashes: string[] }) | null = this.idToData.getCached(id)\n if (cached) {\n res[id] = {\n exchangeKey: cached.decrypted?.exchangeKey,\n accessControlSecret: cached.decrypted?.accessControlSecret,\n exchangeData: cached.exchangeData,\n }\n } else if (retrieveIfNotCached) {\n uncached.push(id)\n }\n }\n if (uncached.length > 0) {\n const retrieved = await this.base.getExchangeDataByIds(uncached)\n for (const data of retrieved) {\n const decrypted = await this.decryptData(data)\n if (decrypted) {\n const hashes = await this.accessControlSecret.allSecureDelegationKeysFor(decrypted.accessControlSecret)\n this.addToCache({ exchangeData: data, hashes, decrypted })\n } else {\n this.addToCache({ exchangeData: data, hashes: [] })\n }\n res[data.id!] = {\n exchangeKey: decrypted?.exchangeKey,\n accessControlSecret: decrypted?.accessControlSecret,\n exchangeData: data,\n }\n }\n }\n return res\n } finally {\n release()\n }\n }\n\n async getOrCreateEncryptionDataTo(\n delegateId: string,\n allowCreationWithoutDelegateKey: boolean\n ): Promise<{ exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey }> {\n const release = await this.cacheMutex.acquire()\n try {\n let existingId = this.delegateToVerifiedEncryptionDataId.get(delegateId)\n if (!existingId) {\n await this.populateCacheToDelegate(delegateId)\n existingId = this.delegateToVerifiedEncryptionDataId.get(delegateId)\n }\n if (existingId) {\n const cached = this.idToData.getCached(existingId)\n if (!cached) throw new Error(`Illegal state: data with id ${existingId} should have been in cache`)\n if (cached.decrypted) {\n return {\n exchangeData: cached.exchangeData,\n exchangeKey: cached.decrypted.exchangeKey,\n accessControlSecret: cached.decrypted.accessControlSecret,\n }\n } else throw new Error(`Illegal state: cached verified data should be decrypted.`)\n } else {\n const created = await this.createNewExchangeData(delegateId, {\n allowNoDelegateKeys: allowCreationWithoutDelegateKey,\n })\n const hashes = await this.accessControlSecret.allSecureDelegationKeysFor(created.accessControlSecret)\n const data = {\n exchangeData: created.exchangeData,\n decrypted: {\n accessControlSecret: created.accessControlSecret,\n exchangeKey: created.exchangeKey,\n verified: true,\n },\n hashes,\n }\n this.addToCache(data)\n return {\n exchangeData: data.exchangeData,\n exchangeKey: data.decrypted!.exchangeKey,\n accessControlSecret: data.decrypted!.accessControlSecret,\n }\n }\n } finally {\n release()\n }\n }\n\n // Loads and adds to the cache all exchange data from the current data owner to the given delegate. Allows to check if there is already data from\n // the current data owner to the delegate which is good for encryption.\n private async populateCacheToDelegate(delegateId: string): Promise {\n const dataToDelegate = await this.base.getExchangeDataByDelegatorDelegatePair(await this.dataOwnerApi.getCurrentDataOwnerId(), delegateId)\n for (const data of dataToDelegate) {\n const decrypted = await this.decryptData(data)\n if (decrypted) {\n const hashes = await this.accessControlSecret.allSecureDelegationKeysFor(decrypted.accessControlSecret)\n this.addToCache({ exchangeData: data, hashes, decrypted })\n } else {\n this.addToCache({ exchangeData: data, hashes: [] })\n }\n }\n }\n\n private addToCache(data: CachedExchangeData & { hashes: string[] }) {\n if (this.idToData.size >= this.maxCachedExchangeData) {\n this.evictOneEntry()\n }\n data.hashes.forEach((hash) => this.hashToId.set(hash, data.exchangeData.id!))\n if (data.decrypted?.verified && !this.delegateToVerifiedEncryptionDataId.has(data.exchangeData.delegate)) {\n this.delegateToVerifiedEncryptionDataId.set(data.exchangeData.delegate, data.exchangeData.id!)\n }\n this.idToData.set(data.exchangeData.id!, data)\n }\n\n private evictOneEntry() {\n const evicted = this.idToData.evictLeastRecentlyUsed()\n evicted.hashes.forEach((hash) => this.hashToId.delete(hash))\n if (this.delegateToVerifiedEncryptionDataId.get(evicted.exchangeData.delegate) === evicted.exchangeData.id) {\n this.delegateToVerifiedEncryptionDataId.delete(evicted.exchangeData.delegate)\n }\n }\n\n getAccessControlKeysValue(): Promise {\n return Promise.resolve(undefined)\n }\n\n getAllDelegationKeys(): Promise {\n return Promise.resolve(undefined)\n }\n}\n","import { IccExchangeDataMapApi } from '../../icc-api/api/internal/IccExchangeDataMapApi'\nimport { LruTemporisedAsyncCache } from '../utils/lru-temporised-async-cache'\nimport { ExchangeDataMap } from '../../icc-api/model/internal/ExchangeDataMap'\nimport { ExchangeDataMapCreationBatch } from '../../icc-api/model/ExchangeDataMapCreationBatch'\n\n/**\n * @internal this class is intended for internal use only and may be modified without notice\n * This class manages the Exchange Data Map entities, caching with an LRU cache on retrieval.\n */\nexport class ExchangeDataMapManager {\n constructor(private readonly api: IccExchangeDataMapApi) {}\n\n private exchangeDataMapCache: LruTemporisedAsyncCache = new LruTemporisedAsyncCache(1000, () => -1)\n\n /**\n * This function creates a batch of Exchange Data Map, ignoring the one that already exist and are already present in the cache.\n * The ones that are not are created and their ids are cached.\n * @param batch a map where each key is the hex-encoded access control key to another map that associates the encoded id of an\n * Exchange Data entity to the fingerprint of the key used to encrypt it.\n */\n async createExchangeDataMaps(batch: { [accessControlKey: string]: { [fp: string]: string } }): Promise {\n const entriesToCreate: { [accessControlKey: string]: { [fp: string]: string } } = {}\n for (const [k, v] of Object.entries(batch)) {\n if (!(await this.exchangeDataMapCache.getIfCachedJob(k))) {\n entriesToCreate[k] = v\n }\n }\n if (Object.keys(entriesToCreate).length > 0) {\n await this.api.createExchangeDataMapBatch(new ExchangeDataMapCreationBatch({ batch: entriesToCreate }))\n await Promise.all(\n Object.keys(entriesToCreate).map(async (entry) => {\n await this.exchangeDataMapCache.get(entry, () => Promise.resolve({ item: null }))\n })\n )\n }\n }\n\n /**\n * Retrieves a batch of Exchange Data Maps.\n * @param accessControlKeyHashes the hex-encoded hashes of the Exchange Data Maps to retrieve.\n */\n async getExchangeDataMapBatch(accessControlKeyHashes: string[]): Promise {\n const exchangeDataMaps = await this.api.getExchangeDataMapByBatch(accessControlKeyHashes)\n await Promise.all(\n exchangeDataMaps.map(async (entry) => {\n await this.exchangeDataMapCache.get(entry.id, () => Promise.resolve({ item: null }))\n })\n )\n return exchangeDataMaps\n }\n}\n","import { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\n\n/**\n * @internal This class is meant only for internal use and may be changed without notice.\n * More powerful version of {@link BaseExchangeKeysManager} with a simplified interface. Has the following functionalities:\n * - Caches results\n * - Automatically creates new exchange keys if none is available\n * - Automatically choose the public keys to use during the creation of new exchange keys\n * - Automatically retrieves the private keys to use during decryption.\n */\nexport class ExchangeKeysManager {\n private cache: { [delegator: string]: { [delegate: string]: CryptoKey[] } } = {}\n\n get base(): BaseExchangeKeysManager {\n return this.baseExchangeKeysManager\n }\n\n constructor(\n private readonly keyManager: UserEncryptionKeysManager,\n private readonly baseExchangeKeysManager: BaseExchangeKeysManager,\n private readonly dataOwnerApi: IccDataOwnerXApi\n ) {}\n\n /**\n * Get all keys currently available for a delegator-delegate pair. At least one of the two data owners must be part of the hierarchy for the current\n * data owner.\n * @param delegatorId id of a delegator\n * @param delegateId id of a delegate\n * @throws if neither the delegator nor the delegate is part of the hierarchy of the current data owner.\n * @return all available exchange keys from the delegator-delegate pair.\n */\n async getDecryptionExchangeKeysFor(delegatorId: string, delegateId: string): Promise {\n return this.cache[delegatorId]?.[delegateId] ?? []\n }\n\n /**\n * Reloads all exchange keys for the cache.\n */\n async reloadCache(): Promise {\n const hierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n const encryptedKeysDataByHierarchyMember = Object.fromEntries(\n await Promise.all(\n hierarchy.map((doId) =>\n this.base.getAllExchangeKeysWith(doId, null).then(\n (\n res\n ): [\n string,\n {\n keysToOwner: { [p: string]: { [p: string]: { [p: string]: string } } }\n keysFromOwner: { [p: string]: { [p: string]: { [p: string]: string } } }\n }\n ] => [doId, res]\n )\n )\n )\n )\n const encryptedKeys: { [delegator: string]: { [delegate: string]: { [pubFp: string]: string }[] } } = {}\n for (const [dataOwner, info] of Object.entries(encryptedKeysDataByHierarchyMember)) {\n for (const [delegator, encryptedByDelegatorFp] of Object.entries(info.keysToOwner)) {\n if (!encryptedKeys[delegator]) {\n encryptedKeys[delegator] = {}\n }\n if (!encryptedKeys[delegator][dataOwner]) {\n encryptedKeys[delegator][dataOwner] = []\n }\n const keysForDelegatorDelegate = encryptedKeys[delegator][dataOwner]\n for (const encryptedEntries of Object.values(encryptedByDelegatorFp)) {\n keysForDelegatorDelegate.push(encryptedEntries)\n }\n }\n for (const encryptedByDelegateId of Object.values(info.keysFromOwner)) {\n for (const [delegate, encryptedEntries] of Object.entries(encryptedByDelegateId)) {\n if (!encryptedKeys[dataOwner]) {\n encryptedKeys[dataOwner] = {}\n }\n if (!encryptedKeys[dataOwner][delegate]) {\n encryptedKeys[dataOwner][delegate] = []\n }\n encryptedKeys[dataOwner][delegate].push(encryptedEntries)\n }\n }\n }\n const decryptionKeys = this.keyManager.getDecryptionKeys()\n const decrypted: { [delegator: string]: { [delegate: string]: CryptoKey[] } } = {}\n for (const [delegator, keysByDelegate] of Object.entries(encryptedKeys)) {\n const currDelegatorData: { [delegate: string]: CryptoKey[] } = {}\n for (const [delegate, keys] of Object.entries(keysByDelegate)) {\n currDelegatorData[delegate] = (await this.base.tryDecryptExchangeKeys(keys, decryptionKeys)).successfulDecryptions\n }\n decrypted[delegator] = currDelegatorData\n }\n this.cache = decrypted\n }\n}\n","import { EncryptedEntity, EncryptedEntityStub } from '../../icc-api/model/models'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport {\n b2a,\n decryptObject,\n EncryptedEntityWithType,\n EncryptedFieldsManifest,\n encryptObject,\n EntityWithDelegationTypeName,\n hex2ua,\n truncateTrailingNulls,\n ua2utf8,\n utf8_2ua,\n} from '../utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { SecurityMetadataDecryptor, SecurityMetadataType } from './SecurityMetadataDecryptor'\nimport { SecureDelegation } from '../../icc-api/model/SecureDelegation'\nimport { ExtendedApisUtils } from './ExtendedApisUtils'\nimport { EntityShareOrMetadataUpdateRequest } from '../../icc-api/model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EntityBulkShareResult } from '../../icc-api/model/requests/EntityBulkShareResult'\nimport { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport { SecureDelegationsManager } from './SecureDelegationsManager'\nimport { ShareResult, ShareResultFailure, ShareResultSuccess } from '../utils/ShareResult'\nimport { ShareMetadataBehaviour } from './ShareMetadataBehaviour'\nimport { IccUserXApi } from '../icc-user-x-api'\nimport { MinimalEntityBulkShareResult } from '../../icc-api/model/requests/MinimalEntityBulkShareResult'\nimport { BulkShareOrUpdateMetadataParams, EntityRequestInformation } from '../../icc-api/model/requests/BulkShareOrUpdateMetadataParams'\nimport * as _ from 'lodash'\nimport AccessLevel = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport RequestedPermissionInternal = EntityShareRequest.RequestedPermissionInternal\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\n\n/**\n * @internal this class is for internal use only and may be changed without notice.\n * Methods to support extended apis.\n */\nexport class ExtendedApisUtilsImpl implements ExtendedApisUtils {\n constructor(\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly securityMetadataDecryptor: SecurityMetadataDecryptor,\n private readonly secureDelegationsManager: SecureDelegationsManager,\n private readonly userApi: IccUserXApi,\n private readonly useParentKeys: boolean\n ) {}\n\n async encryptionKeysOf(entity: EncryptedEntityWithType, dataOwnerId?: string): Promise {\n return await this.decryptAndMergeHierarchy(dataOwnerId, (hierarchy) =>\n this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.EncryptionKey)\n )\n }\n\n async encryptionKeysForHcpHierarchyOf(entity: EncryptedEntityWithType): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.decryptHierarchy((hierarchy) =>\n this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.EncryptionKey)\n )\n }\n\n async secretIdsOf(entity: EncryptedEntityWithType, dataOwnerId?: string): Promise {\n return await this.decryptAndMergeHierarchy(dataOwnerId, (hierarchy) =>\n this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.SecretId)\n )\n }\n\n async secretIdsForHcpHierarchyOf(entity: EncryptedEntityWithType): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.decryptHierarchy((hierarchy) => this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.SecretId))\n }\n\n async owningEntityIdsOf(entity: EncryptedEntityWithType, dataOwnerId?: string): Promise {\n return await this.decryptAndMergeHierarchy(dataOwnerId, (hierarchy) =>\n this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.OwningEntityId)\n )\n }\n\n async owningEntityIdsForHcpHierarchyOf(entity: EncryptedEntityWithType): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.decryptHierarchy((hierarchy) =>\n this.securityMetadataDecryptor.decryptAll(entity.entity, hierarchy, SecurityMetadataType.OwningEntityId)\n )\n }\n\n async hasWriteAccess(entity: EncryptedEntityWithType): Promise {\n return (\n (await this.securityMetadataDecryptor.getEntityAccessLevel(entity.entity, await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())) ===\n AccessLevel.WRITE\n )\n }\n\n async entityWithInitialisedEncryptedMetadata(\n entity: T,\n entityType: EntityWithDelegationTypeName,\n owningEntity: string | undefined,\n owningEntitySecretId: string | undefined,\n initialiseEncryptionKey: boolean,\n autoDelegations: { [p: string]: SecureDelegation.AccessLevelEnum }\n ): Promise<{ updatedEntity: T; rawEncryptionKey: string | undefined; secretId: string }> {\n this.throwDetailedExceptionForInvalidParameter('entity.id', entity.id, 'entityWithInitialisedEncryptedMetadata', arguments)\n this.checkEmptyEncryptionMetadata(entity)\n const newRawKey = initialiseEncryptionKey ? await this.primitives.AES.generateCryptoKey(true) : undefined\n const newSecretId = this.primitives.randomUuid()\n return {\n updatedEntity: await this.secureDelegationsManager.entityWithInitialisedEncryptedMetadata(\n {\n ...entity,\n secretForeignKeys: owningEntitySecretId ? [owningEntitySecretId] : [],\n },\n entityType,\n newSecretId ? [newSecretId] : [],\n !!owningEntity ? [owningEntity] : [],\n newRawKey ? [newRawKey] : [],\n autoDelegations\n ),\n rawEncryptionKey: newRawKey,\n secretId: newSecretId,\n }\n }\n\n async bulkShareOrUpdateEncryptedEntityMetadata(\n entitiesType: EntityWithDelegationTypeName,\n entitiesUpdates: {\n entity: EncryptedEntityStub\n dataForDelegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n }\n }[],\n doRequestBulkShareOrUpdate: (request: BulkShareOrUpdateMetadataParams) => Promise[]>\n ): Promise<{\n updatedEntities: T[]\n unmodifiedEntitiesIds: string[]\n updateErrors: {\n entityId: string\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n code?: number\n reason?: string\n }[]\n }> {\n const { allRequestsByEntityId, orderedRequestsInfoByEntityId, unmodifiedEntitiesIds } = await this.prepareBulkShareRequests(\n entitiesType,\n entitiesUpdates\n )\n const results =\n Object.keys(allRequestsByEntityId).length > 0 ? await doRequestBulkShareOrUpdate({ requestsByEntityId: allRequestsByEntityId }) : []\n const updatedEntities: T[] = []\n const updateErrors: {\n entityId: string\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n code?: number\n reason?: string\n }[] = []\n for (const result of results) {\n if (result.updatedEntity) {\n updatedEntities.push(result.updatedEntity)\n }\n for (const [errorRequestId, error] of Object.entries(result.rejectedRequests ?? {})) {\n const requestIndex = Number(errorRequestId)\n const { delegateId, request, updatedForMigration } = orderedRequestsInfoByEntityId[result.entityId][requestIndex]\n updateErrors.push({\n entityId: result.entityId,\n delegateId,\n request,\n updatedForMigration,\n code: error.code,\n reason: error.reason,\n })\n }\n }\n // TODO implement auto-retry for failed requests if the shouldRetry flag in result.rejectedRequests is set to true\n return {\n updatedEntities,\n updateErrors,\n unmodifiedEntitiesIds,\n }\n }\n\n async bulkShareOrUpdateEncryptedEntityMetadataNoEntities(\n entitiesType: EntityWithDelegationTypeName,\n entitiesUpdates: {\n entity: EncryptedEntityStub\n dataForDelegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKeys: string[]\n shareOwningEntityIds: string[]\n requestedPermissions: EntityShareRequest.RequestedPermissionEnum\n }\n }\n }[],\n doRequestBulkShareOrUpdate: (request: BulkShareOrUpdateMetadataParams) => Promise\n ): Promise<{\n unmodifiedEntitiesIds: string[]\n successfulUpdates: { entityId: string; delegateId: string }[]\n updateErrors: {\n entityId: string\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: EntityShareRequest.RequestedPermissionEnum\n }\n updatedForMigration: boolean\n code?: number\n reason?: string\n }[]\n }> {\n const { allRequestsByEntityId, orderedRequestsInfoByEntityId, unmodifiedEntitiesIds } = await this.prepareBulkShareRequests(\n entitiesType,\n entitiesUpdates\n )\n const results = await doRequestBulkShareOrUpdate({ requestsByEntityId: allRequestsByEntityId })\n const updateErrors: {\n entityId: string\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n code?: number\n reason?: string\n }[] = []\n for (const result of results) {\n for (const [errorRequestId, error] of Object.entries(result.rejectedRequests ?? {})) {\n const requestIndex = Number(errorRequestId)\n const { delegateId, request, updatedForMigration } = orderedRequestsInfoByEntityId[result.entityId][requestIndex]\n updateErrors.push({\n entityId: result.entityId,\n delegateId,\n request,\n updatedForMigration,\n code: error.code,\n reason: error.reason,\n })\n }\n }\n const successfulRequests = Object.entries(allRequestsByEntityId)\n .flatMap(([entityId, requests]) => Object.keys(requests).map((delegateId) => ({ entityId, delegateId })))\n .filter(({ entityId, delegateId }) => !updateErrors.some((error) => error.entityId === entityId && error.delegateId === delegateId))\n return {\n successfulUpdates: successfulRequests,\n updateErrors,\n unmodifiedEntitiesIds,\n }\n }\n\n private async prepareBulkShareRequests(\n entitiesType: EntityWithDelegationTypeName,\n entitiesUpdates: {\n entity: EncryptedEntityStub\n dataForDelegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n }\n }[]\n ): Promise<{\n unmodifiedEntitiesIds: string[]\n allRequestsByEntityId: { [entityId: string]: EntityRequestInformation }\n orderedRequestsInfoByEntityId: {\n [entityId: string]: {\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n }[]\n }\n }> {\n if (new Set(entitiesUpdates.map((e) => e.entity.id)).size !== entitiesUpdates.length) {\n throw new Error('Duplicate requests: the same entity id is present more than once in the input')\n }\n const allRequestsByEntityId = {} as { [entityId: string]: EntityRequestInformation }\n const orderedRequestsInfoByEntityId: {\n [entityId: string]: {\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n }[]\n } = {}\n const unmodifiedEntitiesIds: string[] = []\n for (const { entity, dataForDelegates } of entitiesUpdates) {\n const entityId = entity.id\n if (!entityId) throw new Error('Share of an entity requires for the entity to already exist and have an id')\n const entityWithType = { entity, type: entitiesType }\n const currentRequests = {} as { [requestId: string]: EntityShareOrMetadataUpdateRequest }\n const currentOrderedRequests: {\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n }[] = []\n const migrationRequests = await this.makeMigrationRequestsIfNeeded(entityWithType, dataForDelegates)\n for (const [delegate, request] of Object.entries(migrationRequests)) {\n currentRequests[String(currentOrderedRequests.length)] = request\n currentOrderedRequests.push({\n delegateId: delegate,\n request: dataForDelegates[delegate],\n updatedForMigration: true,\n })\n }\n for (const [delegate, userRequest] of Object.entries(dataForDelegates)) {\n if (!migrationRequests[delegate]) {\n const request = await this.secureDelegationsManager.makeShareOrUpdateRequestParams(\n entityWithType,\n delegate,\n userRequest.shareSecretIds ?? [],\n userRequest.shareEncryptionKeys ?? [],\n userRequest.shareOwningEntityIds ?? [],\n userRequest.requestedPermissions\n )\n if (request) {\n currentRequests[String(currentOrderedRequests.length)] = request\n currentOrderedRequests.push({\n delegateId: delegate,\n request: userRequest,\n updatedForMigration: false,\n })\n }\n }\n }\n if (Object.keys(currentRequests).length > 0) {\n const existingDelegationMembersDetails = await this.securityMetadataDecryptor.getDelegationMemberDetails(entityWithType)\n const accessibleMembers = new Set(\n this.useParentKeys ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds() : [await this.dataOwnerApi.getCurrentDataOwnerId()]\n )\n const potentialParentDelegations = Object.entries(existingDelegationMembersDetails).flatMap(([k, members]) => {\n if ((!!members.delegate && accessibleMembers.has(members.delegate)) || (!!members.delegator && accessibleMembers.has(members.delegator))) {\n return [k]\n } else return []\n })\n allRequestsByEntityId[entityId] = { requests: currentRequests, potentialParentDelegations }\n orderedRequestsInfoByEntityId[entityId] = currentOrderedRequests\n } else {\n unmodifiedEntitiesIds.push(entityId)\n }\n }\n return { unmodifiedEntitiesIds, allRequestsByEntityId, orderedRequestsInfoByEntityId }\n }\n\n async simpleShareOrUpdateEncryptedEntityMetadata(\n entity: { entity: T; type: EntityWithDelegationTypeName },\n delegates: {\n [p: string]: {\n shareSecretIds: string[] | undefined\n shareEncryptionKeys: ShareMetadataBehaviour | undefined\n shareOwningEntityIds: ShareMetadataBehaviour | undefined\n requestedPermissions: EntityShareRequest.RequestedPermissionEnum | undefined\n }\n },\n doRequestBulkShareOrUpdate: (request: BulkShareOrUpdateMetadataParams) => Promise[]>\n ): Promise> {\n const availableEncryptionKeys = await this.encryptionKeysOf(entity)\n const availableOwningEntityIds = await this.owningEntityIdsOf(entity)\n const dataForDelegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKeys: string[]\n shareOwningEntityIds: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n } = {}\n for (const [delegateId, delegateRequests] of Object.entries(delegates)) {\n if (!availableEncryptionKeys.length && delegateRequests.shareEncryptionKeys === ShareMetadataBehaviour.REQUIRED) {\n throw new Error(\n `Entity ${JSON.stringify(\n entity\n )} has no encryption keys or the current data owner can't access any encryption keys, but sharing is required.`\n )\n }\n if (!availableOwningEntityIds.length && delegateRequests.shareOwningEntityIds === ShareMetadataBehaviour.REQUIRED) {\n throw new Error(\n `Entity ${JSON.stringify(\n entity\n )} has no owning entity ids or the current data owner can't access any owning entity ids, but sharing is required.`\n )\n }\n dataForDelegates[delegateId] = {\n shareSecretIds: delegateRequests.shareSecretIds ?? (await this.secretIdsOf(entity)),\n shareEncryptionKeys: delegateRequests.shareEncryptionKeys === ShareMetadataBehaviour.NEVER ? [] : availableEncryptionKeys,\n shareOwningEntityIds: delegateRequests.shareOwningEntityIds === ShareMetadataBehaviour.NEVER ? [] : availableOwningEntityIds,\n requestedPermissions: delegateRequests.requestedPermissions ?? RequestedPermissionEnum.MAX_WRITE,\n }\n }\n const shareResult = await this.bulkShareOrUpdateEncryptedEntityMetadata(\n entity.type,\n [\n {\n entity: entity.entity,\n dataForDelegates,\n },\n ],\n (x) => doRequestBulkShareOrUpdate(x)\n )\n if (shareResult.unmodifiedEntitiesIds.includes(entity.entity.id!)) {\n return new ShareResultSuccess(entity.entity)\n }\n if (!shareResult.updateErrors.length && shareResult.updatedEntities.length === 1) {\n return new ShareResultSuccess(shareResult.updatedEntities[0])\n }\n const requestedDelegates = new Set(Object.keys(delegates))\n const errorsOfRequestedDelegates = shareResult.updateErrors.filter((x) => requestedDelegates.has(x.delegateId))\n if (errorsOfRequestedDelegates.length === 0 && shareResult.updatedEntities.length === 1) {\n console.warn(`Errors with migration of encrypted metadata ${JSON.stringify(shareResult.updateErrors)}.`)\n return new ShareResultSuccess(shareResult.updatedEntities[0])\n }\n return new ShareResultFailure(\n shareResult.updateErrors,\n `There was an error sharing entity with id ${entity.entity.id}. Check the logs for more details.`\n )\n }\n\n private async makeMigrationRequestsIfNeeded(\n entity: EncryptedEntityWithType,\n userRequestsForEntity: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n }\n ): Promise<{ [delegateId: string]: EntityShareOrMetadataUpdateRequest }> {\n const hierarchy = this.useParentKeys\n ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n : [await this.dataOwnerApi.getCurrentDataOwnerId()]\n const legacySecretIds = await this.securityMetadataDecryptor.decryptAllLegacyDelegations(entity.entity, hierarchy, SecurityMetadataType.SecretId)\n const legacyEncryptionKeys = await this.securityMetadataDecryptor.decryptAllLegacyDelegations(\n entity.entity,\n hierarchy,\n SecurityMetadataType.EncryptionKey\n )\n const legacyOwningEntityIds = await this.securityMetadataDecryptor.decryptAllLegacyDelegations(\n entity.entity,\n hierarchy,\n SecurityMetadataType.OwningEntityId\n )\n const res = {} as { [delegateId: string]: EntityShareOrMetadataUpdateRequest }\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n for (const hierarchyMember of hierarchy) {\n const hierarchyMemberMigration = await this.makeMigrationRequestForMemberOfHierarchy(\n entity,\n selfId,\n hierarchyMember,\n userRequestsForEntity[hierarchyMember],\n legacySecretIds,\n legacyEncryptionKeys,\n legacyOwningEntityIds\n )\n if (hierarchyMemberMigration) {\n res[hierarchyMember] = hierarchyMemberMigration\n }\n }\n return res\n }\n\n private async makeMigrationRequestForMemberOfHierarchy(\n entity: EncryptedEntityWithType,\n selfId: string,\n currMemberId: string,\n userRequestForDelegate:\n | {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n | undefined,\n legacySecretIds: { decrypted: string; dataOwnersWithAccess: string[] }[],\n legacyEncryptionKeys: { decrypted: string; dataOwnersWithAccess: string[] }[],\n legacyOwningEntityIds: { decrypted: string; dataOwnersWithAccess: string[] }[]\n ): Promise {\n // This implementation is very specific from migration from delegations to secure delegations. If in future we will have to migrate from secure delegations to something else, this method may need significant changes in its logic.\n const subHierarchy = this.useParentKeys ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIdsFrom(currMemberId) : [currMemberId]\n const subHierarchySet = new Set(subHierarchy)\n const legacyAccess =\n selfId === entity.entity.id && currMemberId === selfId\n ? AccessLevel.WRITE\n : await this.securityMetadataDecryptor.getEntityLegacyDelegationAccessLevel(entity.entity, subHierarchy)\n if (!legacyAccess) return undefined\n const selfLegacySecretIds = legacySecretIds.filter((x) => x.dataOwnersWithAccess.some((d) => subHierarchySet.has(d))).map((x) => x.decrypted)\n const selfLegacyEncryptionKeys = legacyEncryptionKeys\n .filter((x) => x.dataOwnersWithAccess.some((d) => subHierarchySet.has(d)))\n .map((x) => x.decrypted)\n const selfLegacyOwningEntityIds = legacyOwningEntityIds\n .filter((x) => x.dataOwnersWithAccess.some((d) => subHierarchySet.has(d)))\n .map((x) => x.decrypted)\n let missingSecretIds: string[] = []\n let missingEncryptionKeys: string[] = []\n let missingOwningEntityIds: string[] = []\n if (selfLegacySecretIds.length > 0) {\n const currentSecretIds = new Set(\n (await this.securityMetadataDecryptor.decryptAllSecureDelegations(entity.entity, [currMemberId], SecurityMetadataType.SecretId)).map(\n (x) => x.decrypted\n )\n )\n missingSecretIds = selfLegacySecretIds.filter((x) => !currentSecretIds.has(x))\n }\n if (selfLegacyEncryptionKeys.length > 0) {\n const currentEncryptionKeys = new Set(\n (await this.securityMetadataDecryptor.decryptAllSecureDelegations(entity.entity, [currMemberId], SecurityMetadataType.EncryptionKey)).map(\n (x) => x.decrypted\n )\n )\n missingEncryptionKeys = selfLegacyEncryptionKeys.filter((x) => !currentEncryptionKeys.has(x))\n }\n if (selfLegacyOwningEntityIds.length > 0) {\n const currentOwningEntityIds = new Set(\n (await this.securityMetadataDecryptor.decryptAllSecureDelegations(entity.entity, [currMemberId], SecurityMetadataType.OwningEntityId)).map(\n (x) => x.decrypted\n )\n )\n missingOwningEntityIds = selfLegacyOwningEntityIds.filter((x) => !currentOwningEntityIds.has(x))\n }\n const mustCreateRootDelegation =\n selfId === entity.entity.id &&\n currMemberId === selfId &&\n !(await this.securityMetadataDecryptor.getEntitySecureDelegationAccessLevel(entity.entity, subHierarchy))\n if (missingSecretIds.length > 0 || missingEncryptionKeys.length > 0 || missingOwningEntityIds.length > 0 || mustCreateRootDelegation) {\n let requestedPermissions: RequestedPermissionInternal\n if (currMemberId === selfId) {\n requestedPermissions = RequestedPermissionInternal.ROOT\n } else {\n requestedPermissions = RequestedPermissionInternal.FULL_WRITE // Legacy permission if present is always write\n }\n return await this.secureDelegationsManager.makeShareOrUpdateRequestParams(\n entity,\n currMemberId,\n Array.from(new Set([...missingSecretIds, ...(userRequestForDelegate?.shareSecretIds ?? [])])),\n Array.from(new Set([...missingEncryptionKeys, ...(userRequestForDelegate?.shareEncryptionKeys ?? [])])),\n Array.from(new Set([...missingOwningEntityIds, ...(userRequestForDelegate?.shareOwningEntityIds ?? [])])),\n requestedPermissions\n )\n } else return undefined\n }\n\n async tryDecryptDataOf(\n entity: EncryptedEntityWithType,\n content: ArrayBuffer | Uint8Array,\n validator: (decryptedData: ArrayBuffer) => Promise | undefined\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n const triedKeys: Set = new Set()\n const result = await this.doIncrementallyDecryptingKeys(entity.entity, entity.type, async (e, t, keys) => {\n for (const k of keys) {\n if (!triedKeys.has(k.raw)) {\n triedKeys.add(k.raw)\n try {\n const decrypted = await this.primitives.AES.decrypt(k.key, content)\n if (!validator || (await validator(decrypted))) return { success: decrypted }\n } catch (e) {\n console.warn(`Error while attempting to decrypt attachment of ${entity.entity.id} with raw key ${k.raw}: ${e}`)\n }\n }\n }\n return null\n })\n if (result != null) {\n return { data: result.success, wasDecrypted: true }\n } else {\n return { data: content, wasDecrypted: false }\n }\n }\n\n async encryptDataOf(\n entity: T,\n type: EntityWithDelegationTypeName,\n content: ArrayBuffer | Uint8Array,\n saveEntity: (entity: T) => Promise\n ): Promise<{ encryptedData: ArrayBuffer; updatedEntity: T | undefined }> {\n const ensureInitialisedKeysResult = await this.ensureEncryptionKeysInitialised(entity, type)\n let updatedEntity: T | undefined\n if (!!ensureInitialisedKeysResult) {\n updatedEntity = await saveEntity(ensureInitialisedKeysResult)\n }\n const encrypted = await this.doIncrementallyDecryptingKeys(entity, type, async (e, t, keys) => {\n for (const k of keys) {\n try {\n return {\n success: {\n encryptedData: await this.primitives.AES.encrypt(k.key, content),\n updatedEntity: updatedEntity,\n },\n }\n } catch (e) {\n console.warn(`Error while encrypting with raw key ${k.raw}: ${e}`)\n }\n }\n return null\n })\n if (encrypted != null) return encrypted.success\n throw new Error(`Could not extract any valid encryption keys for entity ${JSON.stringify(entity)}.`)\n }\n\n async tryDecryptEntities(\n entities: T[],\n entityType: EntityWithDelegationTypeName,\n constructor: (json: any) => T\n ): Promise<{ entity: T; decrypted: boolean }[]> {\n const nothingToDecryptResults = new Map()\n for (const entity of entities) {\n const nothingToDecrypt = await decryptObject(entity, async (encrypted) => {\n return null\n })\n if (nothingToDecrypt != null) {\n nothingToDecryptResults.set(entity.id!, constructor(nothingToDecrypt))\n }\n }\n const actuallyDecryptedResults = await this.doManyIncrementallyDecryptingKeys(\n entities.filter((e) => !nothingToDecryptResults.has(e.id!)),\n entityType,\n async (entity, t, keys) => {\n // The decrypt object will try all keys on each of the sub-objects; this is intentional because even though it\n // shouldn't happen, but it is still possible that some entity could be accidentally merged badly and the merged\n // entity has multiple encryptedSelf (on different sub-entities) that use different keys.\n const decrypted = await decryptObject(entity, (encrypted) => this.tryDecryptJson(keys, encrypted, false))\n if (decrypted != null) {\n return { success: constructor(decrypted) }\n } else {\n return null\n }\n }\n )\n const res = []\n for (const entity of entities) {\n const decrypted = actuallyDecryptedResults.get(entity.id!) ?? nothingToDecryptResults.get(entity.id!)\n if (!decrypted) {\n res.push({ entity: entity, decrypted: false })\n } else {\n res.push({ entity: decrypted, decrypted: true })\n }\n }\n return res\n }\n\n async tryDecryptJson(\n potentialKeys: { key: CryptoKey; raw: string }[],\n encrypted: Uint8Array,\n truncateTrailingDecryptedNulls: boolean\n ): Promise<{} | null> {\n for (const key of potentialKeys) {\n try {\n const decrypted = await this.primitives.AES.decrypt(key.key, encrypted, key.raw)\n return JSON.parse(ua2utf8(truncateTrailingDecryptedNulls ? truncateTrailingNulls(new Uint8Array(decrypted)) : decrypted))\n } catch (e) {}\n }\n return null\n }\n\n async tryEncryptEntities(\n entities: T[],\n entityType: EntityWithDelegationTypeName,\n fieldsToEncrypt: EncryptedFieldsManifest,\n encodeBinaryData: boolean,\n requireEncryption: boolean,\n constructor: (json: any) => T\n ): Promise {\n const entitiesWithInitialisedEncryptionKeys: T[] = []\n for (const entity of entities) {\n entitiesWithInitialisedEncryptionKeys.push((await this.ensureEncryptionKeysInitialised(entity, entityType)) ?? entity)\n }\n const results = await this.doManyIncrementallyDecryptingKeys(entitiesWithInitialisedEncryptionKeys, entityType, async (e, t, keys) => {\n for (const k of keys) {\n try {\n const encrypted = await encryptObject(\n e,\n (obj) => {\n // TODO encoding of binary data should probably be applied to everything?\n const json = encodeBinaryData\n ? JSON.stringify(obj, (k, v) => {\n return v instanceof ArrayBuffer || ArrayBuffer.isView(v)\n ? b2a(new Uint8Array(v as ArrayBufferLike).reduce((d, b) => d + String.fromCharCode(b), ''))\n : v\n })\n : JSON.stringify(obj)\n\n return this.primitives.AES.encrypt(k.key, utf8_2ua(json), k.raw)\n },\n fieldsToEncrypt,\n entityType\n )\n return { success: constructor(encrypted) }\n } catch (e) {\n console.warn(`Error while encrypting with raw key ${k.raw}: ${e}`)\n }\n }\n return null\n })\n if (results.size != entitiesWithInitialisedEncryptionKeys.length) {\n if (requireEncryption) {\n throw new Error(\n `Could not encrypt entities ${entitiesWithInitialisedEncryptionKeys.flatMap((e): string[] => (results.has(e.id!) ? [] : [e.id!]))}`\n )\n } else {\n for (const e of entitiesWithInitialisedEncryptionKeys) {\n if (!results.has(e.id!)) {\n await encryptObject(\n e,\n async (obj: { [key: string]: any }) => {\n const hasNonEmptyValues = Object.values(obj).some(\n (v) => v !== undefined && (typeof v !== 'object' || (Array.isArray(v) && v.length > 0) || Object.keys(v).length > 0)\n )\n if (hasNonEmptyValues) {\n throw new Error(\n `Impossible to modify encrypted content of an entity if no encryption key is known.\\nEntity: ${JSON.stringify(\n e\n )}\\nTo encrypt: ${JSON.stringify(obj)}`\n )\n }\n return Promise.resolve(new ArrayBuffer(1))\n },\n fieldsToEncrypt,\n 'entity'\n )\n results.set(e.id!, e)\n }\n }\n }\n }\n return entitiesWithInitialisedEncryptionKeys.map((e) => results.get(e.id!)!)\n }\n\n async ensureEncryptionKeysInitialised(entity: T, entityType: EntityWithDelegationTypeName): Promise {\n if (this.securityMetadataDecryptor.hasAnyEncryptionKeys(entity)) return undefined\n if (!entity.rev) {\n throw new Error(\n 'New encrypted entity is lacking encryption metadata. ' +\n 'Please instantiate new entities using the `newInstance` method from the respective extended api.'\n )\n }\n /*\n * Add encryption key and share with all auto-delegates already in legacy delegations.\n * TODO disable this logic and simply throw error for post-2018 customers.\n */\n const existingDelegations = new Set(Object.keys(entity.delegations ?? {}))\n const usersWithAccessToNewKey = Object.fromEntries(\n Object.values((await this.userApi.getCurrentUser()).autoDelegations ?? {})\n .flatMap((x) => x)\n .filter((x) => existingDelegations.has(x))\n .map((x) => [x, AccessLevelEnum.WRITE])\n )\n return await this.secureDelegationsManager.entityWithInitialisedEncryptedMetadata(\n {\n ...entity,\n secretForeignKeys: entity.secretForeignKeys ?? [],\n },\n entityType,\n [],\n [],\n [await this.primitives.AES.generateCryptoKey(true)],\n usersWithAccessToNewKey\n )\n }\n\n private async decryptHierarchy(\n decryptedDataProvider: (dataOwners: string[]) => Promise<{ ownerId: string; extracted: string[] }[]>\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n const canDecryptOwnerIds = this.useParentKeys\n ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n : [await this.dataOwnerApi.getCurrentDataOwnerId()]\n return await decryptedDataProvider(canDecryptOwnerIds)\n }\n\n private async decryptAndMergeHierarchy(\n dataOwnerId: string | undefined,\n decryptedDataProvider: (dataOwners: string[]) => Promise<{ ownerId: string; extracted: string[] }[]>\n ): Promise {\n const hierarchy = this.useParentKeys\n ? dataOwnerId\n ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIdsFrom(dataOwnerId)\n : await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n : [dataOwnerId ?? (await this.dataOwnerApi.getCurrentDataOwnerId())]\n const decryptedData = await decryptedDataProvider(hierarchy)\n const merged = decryptedData.flatMap((x) => x.extracted)\n return this.deduplicate(merged)\n }\n\n private async tryImportKey(key: string): Promise {\n if (!/^[0-9A-Fa-f\\-]+$/g.test(key)) return undefined\n try {\n return await this.primitives.AES.importKey('raw', hex2ua(key.replace(/-/g, '')))\n } catch (e) {\n console.warn(`Could not import key ${key} as an encryption key.`, e)\n return undefined\n }\n }\n\n async doIncrementallyDecryptingKeys(\n entity: E,\n entityType: EntityWithDelegationTypeName,\n action: (entity: E, entityType: EntityWithDelegationTypeName, keys: { key: CryptoKey; raw: string }[]) => Promise<{ success: T } | null>\n ): Promise<{ success: T } | null> {\n const res = await this.doManyIncrementallyDecryptingKeys([entity], entityType, (e, t, ks) => action(e, t, ks))\n if (res.has(entity.id!)) {\n return { success: res.get(entity.id!)! }\n } else {\n return null\n }\n }\n\n async doManyIncrementallyDecryptingKeys(\n entities: E[],\n entitiesType: EntityWithDelegationTypeName,\n action: (entity: E, entityType: EntityWithDelegationTypeName, keys: { key: CryptoKey; raw: string }[]) => Promise<{ success: T } | null>\n ): Promise> {\n if (entities.length == 0) return new Map()\n if (new Set(entities.map((e) => e.id)).size != entities.length) {\n throw new Error(`Duplicate entries in entities ${entities.map((x) => x.id)}`)\n }\n const hierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n const allExtractedKeysForEntities = Object.fromEntries(entities.map((x) => [x.id!, new Set()] as [string, Set]))\n const newlyExtractedKeysForEntities = Object.fromEntries(entities.map((x) => [x.id!, new Set()] as [string, Set]))\n const results = new Map()\n const remainingEntitiesById = Object.fromEntries(entities.map((x) => [x.id!, x] as [string, E]))\n const importedKeysByRaw = new Map()\n const primitives = this.primitives\n\n async function updateExtractedKeysAndDoActionIfNecessary(\n newKeys: { [entityId: string]: string[] },\n forceUpdateOnEntitiesWithNewExtractedKeys: boolean\n ): Promise {\n for (const [entityId, keys] of Object.entries(newKeys)) {\n const newlyExtractedSet = newlyExtractedKeysForEntities[entityId]\n const alreadyExtractedSet = allExtractedKeysForEntities[entityId]\n for (const k of keys) {\n if (!alreadyExtractedSet.has(k)) {\n newlyExtractedSet.add(k)\n if (!importedKeysByRaw.has(k)) {\n importedKeysByRaw.set(k, await primitives.AES.importKey('raw', hex2ua(k)))\n }\n }\n }\n }\n if (\n forceUpdateOnEntitiesWithNewExtractedKeys ||\n Object.keys(remainingEntitiesById).every((eId) => newlyExtractedKeysForEntities[eId].size > 0)\n ) {\n for (const entity of Object.values(remainingEntitiesById)) {\n const currId = entity.id!\n const currNewlyExtracted = newlyExtractedKeysForEntities[currId]\n if (currNewlyExtracted.size > 0) {\n const currAllExtracted = allExtractedKeysForEntities[currId]\n currNewlyExtracted.forEach((k) => currAllExtracted.add(k))\n currNewlyExtracted.clear()\n const actionResult = await action(\n entity,\n entitiesType,\n [...currAllExtracted].map((raw): { raw: string; key: CryptoKey } => ({\n raw: raw,\n key: importedKeysByRaw.get(raw)!,\n }))\n )\n if (actionResult != null) {\n delete remainingEntitiesById[currId]\n results.set(currId, actionResult.success)\n }\n }\n }\n }\n }\n\n await updateExtractedKeysAndDoActionIfNecessary(\n await this.securityMetadataDecryptor.decryptLegacyDelegations(\n Object.values(remainingEntitiesById),\n hierarchy,\n SecurityMetadataType.EncryptionKey\n ),\n false\n )\n if (Object.keys(remainingEntitiesById).length == 0) return results\n await updateExtractedKeysAndDoActionIfNecessary(\n await this.securityMetadataDecryptor.decryptSecureDelegationsUsingCache(\n Object.values(remainingEntitiesById),\n hierarchy,\n SecurityMetadataType.EncryptionKey\n ),\n false\n )\n if (Object.keys(remainingEntitiesById).length == 0) return results\n await updateExtractedKeysAndDoActionIfNecessary(\n await this.securityMetadataDecryptor.decryptSecureDelegationsUsingKnownExchangeData(\n Object.values(remainingEntitiesById),\n hierarchy,\n SecurityMetadataType.EncryptionKey\n ),\n false\n )\n if (Object.keys(remainingEntitiesById).length == 0) return results\n await updateExtractedKeysAndDoActionIfNecessary(\n await this.securityMetadataDecryptor.decryptSecureDelegationsUsingExchangeDataMap(\n Object.values(remainingEntitiesById),\n hierarchy,\n SecurityMetadataType.EncryptionKey\n ),\n false\n )\n if (Object.keys(remainingEntitiesById).length == 0) return results\n await updateExtractedKeysAndDoActionIfNecessary({}, true)\n return results\n }\n\n private deduplicate(values: T[]): T[] {\n return [...new Set(values)]\n }\n\n private throwDetailedExceptionForInvalidParameter(argName: string, argValue: any, methodName: string, methodArgs: IArguments) {\n if (argValue) return\n\n let details = '\\nMethod name: icc-crypto-x-api.' + methodName + '()\\nArguments:'\n\n if (methodArgs) {\n try {\n const argsArray = [...methodArgs]\n argsArray.forEach((arg, index) => (details += '\\n[' + index + ']: ' + JSON.stringify(arg)))\n } catch (ex) {\n details += '; a problem occured while logging arguments details: ' + ex\n }\n }\n\n throw new Error('### THIS SHOULD NOT HAPPEN: ' + argName + ' has an invalid value: ' + argValue + details)\n }\n\n private checkEmptyEncryptionMetadata(entity: EncryptedEntity) {\n this.doCheckEmptyEncryptionMetadata(entity, true)\n }\n\n hasEmptyEncryptionMetadata(entity: EncryptedEntity): boolean {\n return this.doCheckEmptyEncryptionMetadata(entity, false)\n }\n\n private doCheckEmptyEncryptionMetadata(entity: EncryptedEntity, throwErrorIfNonEmpty: boolean): boolean {\n const existingMetadata = []\n if (entity.delegations && Object.keys(entity.delegations).length) existingMetadata.push('delegations')\n if (entity.cryptedForeignKeys && Object.keys(entity.cryptedForeignKeys).length) existingMetadata.push('cryptedForeignKeys')\n if (entity.encryptionKeys && Object.keys(entity.encryptionKeys).length) existingMetadata.push('encryptionKeys')\n if (entity.secretForeignKeys && entity.secretForeignKeys.length) existingMetadata.push('secretForeignKeys')\n if (entity.securityMetadata && Object.keys(entity.securityMetadata).length) existingMetadata.push('securityMetadata')\n if (existingMetadata.length > 0) {\n if (throwErrorIfNonEmpty) {\n throw new Error(\n `Entity should have no encryption metadata on initialisation, but the following fields already have some values: ${existingMetadata}\\n` +\n JSON.stringify(entity, undefined, 2)\n )\n } else return false\n }\n return true\n }\n}\n","import { ua2hex } from '../utils'\n\nexport interface HMACUtils {\n generateKey(): Promise\n exportKey(key: CryptoKey): Promise\n importKey(key: ArrayBuffer, requireRecommendedKeySize?: Boolean): Promise\n sign(key: CryptoKey, data: ArrayBuffer): Promise\n verify(key: CryptoKey, data: ArrayBuffer, signature: ArrayBuffer): Promise\n}\n\nexport class HMACUtilsImpl implements HMACUtils {\n private readonly _crypto: Crypto\n private readonly recommendedKeyLengthBytes = 128\n private readonly params: HmacKeyGenParams = {\n name: 'HMAC',\n hash: 'SHA-512',\n }\n\n constructor(crypto: Crypto) {\n this._crypto = crypto\n }\n\n async generateKey(): Promise {\n const generatedKey = await this._crypto.subtle.generateKey({ ...this.params }, true, ['sign', 'verify'])\n const exportedKey = await this._crypto.subtle.exportKey('raw', generatedKey)\n if (exportedKey.byteLength !== this.recommendedKeyLengthBytes) {\n throw new Error(`Generated key has unexpected length - expected ${this.recommendedKeyLengthBytes} bytes, got ${exportedKey.byteLength} bytes`)\n }\n return generatedKey\n }\n\n async exportKey(key: CryptoKey): Promise {\n return this._crypto.subtle.exportKey('raw', key)\n }\n\n async importKey(key: ArrayBuffer, requireRecommendedKeySize?: Boolean): Promise {\n if (requireRecommendedKeySize != false && key.byteLength !== this.recommendedKeyLengthBytes) {\n throw new Error(`Key has unexpected length - expected ${this.recommendedKeyLengthBytes} bytes, got ${key.byteLength} bytes`)\n }\n return await this._crypto.subtle.importKey(\n 'raw',\n key,\n {\n ...this.params,\n length: key.byteLength * 8,\n },\n true,\n ['sign', 'verify']\n )\n }\n\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\n return this._crypto.subtle.sign({ ...this.params }, key, data)\n }\n\n async verify(key: CryptoKey, data: ArrayBuffer, signature: ArrayBuffer): Promise {\n return this._crypto.subtle.verify({ ...this.params }, key, signature, data)\n }\n}\n","import { KeyPair } from './RSA'\nimport { RecoveryDataEncryption, RecoveryDataUseFailureReason } from './RecoveryDataEncryption'\n\n/**\n * Allows to recover user keypairs using builtin recovery mechanisms.\n * This interface includes recovery methods that require some input from your application (e.g. a recovery key created from a different device).\n * Other recovery methods (such as transfer keys) are used automatically by the sdk when available and don't require any input from your application.\n */\nexport class KeyPairRecoverer {\n constructor(private readonly recoveryDataEncryption: RecoveryDataEncryption) {}\n\n /**\n * Recover a keypair using a recovery key created in the past using the {@link IccRecoveryXApi.createRecoveryInfoForAvailableKeyPairs} method.\n * @param recoveryKey the result of a past call to {@link IccRecoveryXApi.createRecoveryInfoForAvailableKeyPairs}.\n * @param autoDelete if true, the recovery data will be deleted from the server after it could be used successfully.\n * This will prevent the recovery key from being used again.\n * @return an object containing a single `success` associated to an object in the form dataOwnerId -> publicKeySpki -> keyPair, where:\n * - The `dataOwnerId` keys are the ids of the data owner which created the recovery data and his parents, if the recovery data contains also the\n * parents keys\n * - The `publicKeySpki` keys are all public key pairs for the data owner, in hex-encoded spki format (full, no fingerprint)\n * - The `keyPair` is the imported privateKey + publicKey.\n *\n * OR an object containing a single `failure` associated to a {@link RecoveryDataUseFailureReason} if the recovery data could not be used to\n * perform the operation.\n */\n recoverWithRecoveryKey(\n recoveryKey: string,\n autoDelete: boolean\n ): Promise<{ success: { [dataOwnerId: string]: { [publicKeySpki: string]: KeyPair } } } | { failure: RecoveryDataUseFailureReason }> {\n return this.recoveryDataEncryption.getAndDecryptKeyPairsRecoveryData(recoveryKey, autoDelete)\n }\n}\n","import { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyPair, ShaVersion } from './RSA'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { hex2ua, ua2hex } from '../utils'\nimport { fingerprintToPublicKeysMapOf, fingerprintV1, getShaVersionForKey } from './utils'\nimport { BaseExchangeDataManager } from './BaseExchangeDataManager'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\n\n/**\n * @internal this class is intended only for internal use and may be changed without notice.\n *\n */\nexport class KeyRecovery {\n constructor(\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly baseExchangeKeysManager: BaseExchangeKeysManager,\n private readonly baseExchangeDataManager: BaseExchangeDataManager\n ) {}\n\n /*TODO\n * Currently there is no support for the recovery of signature keys. When implementing a recovery solution we should consider:\n * - unlike decryption keys signature keys are completely useless if not verified.\n * - we are fine losing the signature private key, but if we could recover and verify the public key it would reduce the inconveniences on user and\n * limit the creation of new exchange data\n * - We can't guarantee that encrypted data in iCure was put there by us... unless we put a piece of the private key as well: we can save an\n * hash of (any verification public key + any encryption private key) in the data owner: only the owner of the private key can create this hash,\n * so if the data owner can recreate the hash with one of his recovered and verified encryption private keys then the signature public key will\n * for sure be safe as well.\n */\n\n /**\n * Attempt to recover private keys of a data owner using all available key recovery methods and all available private keys. The method will\n * automatically try to use newly recovered key pairs to recover additional key pairs.\n * @param dataOwner a data owner.\n * @param knownKeys keys available for the data owner.\n * @return new key pairs (exclude already known pairs) which could be recovered using the known keys.\n */\n async recoverKeys(\n dataOwner: DataOwnerWithType,\n knownKeys: { [pubKeyFp: string]: KeyPair }\n ): Promise<{ [pubKeyFp: string]: KeyPair }> {\n const selfPublicKeys = Array.from([\n ...this.dataOwnerApi.getHexPublicKeysWithSha1Of(dataOwner.dataOwner),\n ...this.dataOwnerApi.getHexPublicKeysWithSha256Of(dataOwner.dataOwner),\n ])\n const knownKeysFpSet = new Set(Object.keys(knownKeys))\n const missingKeysFpSet = new Set(selfPublicKeys.map((x) => fingerprintV1(x)).filter((x) => !knownKeysFpSet.has(x)))\n\n const recoveryFunctions = [this.recoverFromTransferKeys.bind(this), this.recoverFromShamirSplitKeys.bind(this)]\n let allPrivateKeys: { [pubKeyFingerprint: string]: KeyPair } = { ...knownKeys }\n let foundNewPrivateKeys = true\n\n while (missingKeysFpSet.size > 0 && foundNewPrivateKeys) {\n // TODO for each recovered verify correct association with public key\n foundNewPrivateKeys = false\n for (const recover of recoveryFunctions) {\n const recovered = await recover(dataOwner, allPrivateKeys, missingKeysFpSet)\n const validatedRecovered: { [fp: string]: KeyPair } = {}\n for (const [fp, keyPair] of Object.entries(recovered)) {\n const valid = await this.primitives.RSA.checkKeyPairValidity(keyPair)\n if (valid) {\n validatedRecovered[fp] = keyPair\n }\n }\n if (Object.keys(validatedRecovered).length > 0) {\n foundNewPrivateKeys = true\n Object.keys(validatedRecovered).forEach((fp) => missingKeysFpSet.delete(fp))\n allPrivateKeys = { ...allPrivateKeys, ...validatedRecovered }\n }\n }\n }\n\n return Object.fromEntries(Object.entries(allPrivateKeys).filter(([keyFp]) => !knownKeysFpSet.has(keyFp)))\n }\n\n /*TODO?\n * Ask access back suggestion: if by getting access back to an exchange key with another data owner I may recover additional keys we could suggest\n * to ask for access back to that data owner.\n */\n\n private async recoverFromShamirSplitKeys(\n dataOwner: DataOwnerWithType,\n allKeys: { [pubKeyFingerprint: string]: KeyPair },\n missingKeysFp: Set\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n if (\n dataOwner.dataOwner.publicKey &&\n dataOwner.dataOwner.privateKeyShamirPartitions &&\n Object.keys(dataOwner.dataOwner.privateKeyShamirPartitions).length > 0\n ) {\n const selfId = dataOwner.dataOwner.id!\n const shamirSplits: { [keyPairFp: string]: { [delegateId: string]: string } } = {\n [fingerprintV1(dataOwner.dataOwner.publicKey!)]: dataOwner.dataOwner.privateKeyShamirPartitions!,\n }\n const delegatesOfSplits = Array.from(\n new Set(\n Object.entries(shamirSplits).flatMap(([splitKeyFp, splitKeyData]) => (missingKeysFp.has(splitKeyFp) ? Object.keys(splitKeyData) : []))\n )\n )\n const exchangeKeys: { [delegateId: string]: CryptoKey[] } = {}\n for (const delegate of delegatesOfSplits) {\n exchangeKeys[delegate] = await this.getExchangeKeys(selfId, delegate, allKeys)\n }\n return await this.recoverWithSplits(dataOwner, shamirSplits, exchangeKeys)\n } else return {}\n }\n\n private async recoverWithSplits(\n dataOwner: DataOwnerWithType,\n splits: { [keyPairFp: string]: { [delegateId: string]: string } },\n exchangeKeys: { [delegateId: string]: CryptoKey[] }\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n const res: { [pubKeyFingerprint: string]: KeyPair } = {}\n const keysByFp = fingerprintToPublicKeysMapOf(dataOwner.dataOwner, ShaVersion.Sha1)\n const keysByFpWithSha256 = fingerprintToPublicKeysMapOf(dataOwner.dataOwner, ShaVersion.Sha256)\n for (const [fp, split] of Object.entries(splits)) {\n const pub = keysByFp[fp] ?? keysByFpWithSha256[fp]\n const shaVersion = !!pub && !!keysByFp[fp] ? ShaVersion.Sha1 : !!pub && !!keysByFpWithSha256[fp] ? ShaVersion.Sha256 : undefined\n if (!!pub && !!shaVersion) {\n const recovered = await this.tryRecoverSplitPrivate(split, exchangeKeys, shaVersion)\n if (recovered) {\n const pub = keysByFp[fp]\n try {\n res[fp] = {\n privateKey: recovered,\n publicKey: await this.primitives.RSA.importKey('spki', hex2ua(pub), ['encrypt'], shaVersion),\n }\n } catch (e) {\n console.warn(`Failed to import public key ${pub}`, e)\n }\n }\n } else {\n console.warn(`Missing public key for fingerprint ${fp} of recovered shamir key.`)\n }\n }\n return res\n }\n\n private async tryRecoverSplitPrivate(\n split: { [delegateId: string]: string },\n exchangeKeys: { [delegateId: string]: CryptoKey[] },\n shaVersion: ShaVersion\n ): Promise {\n const splitsCount = Object.keys(split).length\n if (splitsCount === 1) {\n // Not sure about the key nor if the key is accessible\n const [delegate, encryptedKey] = Object.entries(split)[0]\n for (const exchangeKey of exchangeKeys[delegate] ?? []) {\n try {\n const decrypted = await this.primitives.AES.decrypt(exchangeKey, hex2ua(encryptedKey))\n const importedKey = await this.primitives.RSA.importKey('pkcs8', decrypted, ['decrypt'], shaVersion)\n if (importedKey) return importedKey\n } catch (e) {}\n }\n return undefined\n } else {\n const decryptedSplits: string[] = []\n for (const delegateAndEncryptedSplit of Object.entries(split)) {\n const decrypted = await this.tryDecryptSplitPiece(delegateAndEncryptedSplit, exchangeKeys, splitsCount)\n if (decrypted) decryptedSplits.push(ua2hex(decrypted).slice(1)) // Drop padding\n }\n try {\n const combinedKey = hex2ua(this.primitives.shamir.combine(decryptedSplits))\n return await this.primitives.RSA.importKey('pkcs8', combinedKey, ['decrypt'], shaVersion)\n } catch (e) {\n // Could be not enough splits decrypted\n return undefined\n }\n }\n }\n\n private async tryDecryptSplitPiece(\n delegateAndEncryptedSplit: [string, string],\n exchangeKeys: { [delegateId: string]: CryptoKey[] },\n splitsCount: number\n ): Promise {\n const [delegate, encryptedPiece] = delegateAndEncryptedSplit\n for (const exchangeKey of exchangeKeys[delegate] ?? []) {\n try {\n const decrypted = await this.primitives.AES.decrypt(exchangeKey, hex2ua(encryptedPiece))\n if (this.validateDecryptedSplit(decrypted, splitsCount)) return decrypted\n } catch (e) {}\n }\n return undefined\n }\n\n private validateDecryptedSplit(decryptedSplit: ArrayBuffer, splitsCount: number): boolean {\n // Normally shamir split starts with 8 followed by the index of the split in hexadecimal.\n // However, we pad with an extra 'f' at the beginning\n const decryptedHex = ua2hex(decryptedSplit)\n if (decryptedHex[0] !== 'f' || decryptedHex[1] !== '8') return false\n try {\n const splitIndex = parseInt(decryptedHex.slice(2, 4), 16)\n return splitIndex > 0 && splitIndex <= splitsCount\n } catch (e) {\n return false\n }\n }\n\n private async recoverFromTransferKeys(\n dataOwner: DataOwnerWithType,\n allKeys: { [pubKeyFingerprint: string]: KeyPair },\n missingKeysFp: Set\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n const publicKeyFingerprintToPublicKey = {\n ...fingerprintToPublicKeysMapOf(dataOwner.dataOwner, ShaVersion.Sha1),\n ...fingerprintToPublicKeysMapOf(dataOwner.dataOwner, ShaVersion.Sha256),\n }\n const missingKeysTransferData: { [recoverableKeyPubFp: string]: { publicKey: string; encryptedPrivateKey: Set } } = {}\n Object.values(dataOwner.dataOwner.transferKeys ?? {}).forEach((transferKeysByEncryptor) => {\n Object.entries(transferKeysByEncryptor).forEach(([transferToPublicKey, transferPrivateKeyEncrypted]) => {\n const transferToPublicKeyFp = fingerprintV1(transferToPublicKey) // We are not sure if transfer public key will be a fp or not\n if (missingKeysFp.has(transferToPublicKeyFp)) {\n const existingEntryValue = missingKeysTransferData[transferToPublicKeyFp]\n if (existingEntryValue) {\n existingEntryValue.encryptedPrivateKey.add(transferPrivateKeyEncrypted)\n } else {\n const fullPublicKey = publicKeyFingerprintToPublicKey[transferToPublicKeyFp]\n if (fullPublicKey) {\n missingKeysTransferData[transferToPublicKeyFp] = {\n publicKey: fullPublicKey,\n encryptedPrivateKey: new Set([transferPrivateKeyEncrypted]),\n }\n } else {\n console.warn('Invalid data owner: there is a transfer key for an unknown public key')\n }\n }\n }\n })\n })\n const availableExchangeKeys = await this.getExchangeKeys(dataOwner.dataOwner.id!, dataOwner.dataOwner.id!, allKeys)\n\n return Object.entries(missingKeysTransferData).reduce(async (acc, [recoverableKeyPubFp, transferData]) => {\n const awaitedAcc = await acc\n const shaVersion = getShaVersionForKey(dataOwner.dataOwner, transferData.publicKey)\n if (!!shaVersion) {\n const decryptedTransferData = await this.tryDecryptTransferData(transferData, availableExchangeKeys, shaVersion)\n if (decryptedTransferData != undefined) {\n return { ...awaitedAcc, [recoverableKeyPubFp]: decryptedTransferData }\n } else return awaitedAcc\n } else return awaitedAcc\n }, Promise.resolve({} as { [pubKeyFingerprint: string]: KeyPair }))\n }\n\n private async tryDecryptTransferData(\n transferData: { publicKey: string; encryptedPrivateKey: Set },\n availableExchangeKeys: CryptoKey[],\n shaVersion: ShaVersion\n ): Promise | undefined> {\n for (const encryptedTransferKey of transferData.encryptedPrivateKey) {\n const decryptedTransferKey = await this.tryDecryptTransferKey(encryptedTransferKey, availableExchangeKeys, shaVersion)\n if (decryptedTransferKey != undefined)\n return {\n privateKey: decryptedTransferKey,\n publicKey: await this.primitives.RSA.importKey('spki', hex2ua(transferData.publicKey), ['encrypt'], shaVersion),\n }\n }\n return undefined\n }\n\n // attempt to decrypt a transfer key in pkcs8 using any of the provided exchange keys\n private async tryDecryptTransferKey(\n encryptedTransferKey: string, // in hex format\n exchangeKeys: CryptoKey[],\n shaVersion: ShaVersion\n ): Promise {\n const encryptedKeyBytes = hex2ua(encryptedTransferKey)\n for (const exchangeKey of exchangeKeys) {\n try {\n const decryptedKeyData = await this.primitives.AES.decrypt(exchangeKey, encryptedKeyBytes)\n const importedPrivateKey = await this.primitives.RSA.importPrivateKey('pkcs8', decryptedKeyData, shaVersion)\n if (importedPrivateKey != undefined) return importedPrivateKey\n } catch (e) {\n /* failure is a valid possibility: we don't know the correct key to use */\n }\n }\n return undefined\n }\n\n // Get exchange keys from aes exchange keys / hc party keys and exchange data\n private async getExchangeKeys(\n from: string,\n to: string,\n availableDecryptionKeys: { [pubKeyFingerprint: string]: KeyPair }\n ): Promise {\n const aesExchangeKeys = await this.baseExchangeKeysManager.tryDecryptExchangeKeys(\n await this.baseExchangeKeysManager.getEncryptedExchangeKeysFor(from, to),\n availableDecryptionKeys\n )\n const decryptedExchangeDataKeys = await this.baseExchangeDataManager.tryDecryptExchangeKeys(\n await this.baseExchangeDataManager.getExchangeDataByDelegatorDelegatePair(from, to),\n availableDecryptionKeys\n )\n return [...aesExchangeKeys.successfulDecryptions, ...decryptedExchangeDataKeys.successfulDecryptions]\n }\n}\n","import { CryptoPrimitives } from './CryptoPrimitives'\nimport { HMACUtils } from './HMACUtils'\nimport { ShamirClass } from './shamir'\nimport { AESUtils } from './AES'\nimport { KeyPair, RSAUtils, ShaVersion } from './RSA'\nimport { b64_2ua, hex2ua, ua2b64, ua2hex, ua2utf8, utf8_2ua } from '../utils'\n\n/**\n * Allows to use the expo-kryptom module as crypto primitives. This is necessary when building expo (react native) apps.\n */\nexport class NativeCryptoPrimitivesBridge implements CryptoPrimitives {\n constructor(expoKryptomModule: { Aes: AesService; Rsa: RsaService; Hmac: HmacService; StrongRandom: StrongRandomService; Digest: DigestService }) {\n this.strongRandom = expoKryptomModule.StrongRandom\n this.digest = expoKryptomModule.Digest\n this.shamir = new StrongRandomShamir(this.strongRandom)\n this.AES = new NativeAesBridge(expoKryptomModule.Aes, this.strongRandom)\n this.HMAC = new NativeHmacBridge(expoKryptomModule.Hmac)\n this.RSA = new NativeRsaBridge(expoKryptomModule.Rsa)\n }\n\n readonly AES: AESUtils\n readonly HMAC: HMACUtils\n readonly RSA: RSAUtils\n readonly shamir: ShamirClass\n private readonly strongRandom: StrongRandomService\n private readonly digest: DigestService\n\n randomBytes(n: number): Uint8Array {\n return this.strongRandom.randomBytes(n)\n }\n\n randomUuid(): string {\n return this.strongRandom.randomUUID()\n }\n\n async sha256(data: ArrayBuffer | Uint8Array): Promise {\n return await this.digest.sha256(data instanceof ArrayBuffer ? new Uint8Array(data) : data)\n }\n\n async sha512(data: ArrayBuffer | Uint8Array): Promise {\n throw new Error('Not yet implemented')\n }\n}\n\nclass StrongRandomShamir extends ShamirClass {\n constructor(private readonly strongRandom: StrongRandomService) {\n super()\n }\n\n protected fillRandom(arr: Uint32Array): void {\n const random = this.strongRandom.randomBytes(arr.byteLength)\n // Note that the new Uint32Array does not copy the random array\n arr.set(new Uint32Array(random.buffer))\n }\n}\n\nclass NativeAesBridge implements AESUtils {\n constructor(private readonly aes: AesService, private readonly random: StrongRandomService) {}\n\n async decrypt(cryptoKey: CryptoKey, encryptedData: ArrayBuffer | Uint8Array): Promise {\n return await this.aes.decrypt(new Uint8Array(encryptedData), getKryptomKey(cryptoKey))\n }\n\n decryptSome(cryptoKeys: CryptoKey[], uint8Array: Uint8Array): Promise {\n try {\n return this.decrypt(cryptoKeys[0], uint8Array)\n } catch (e) {\n if (cryptoKeys.length > 1) {\n return this.decryptSome(cryptoKeys.slice(1), uint8Array)\n } else {\n throw e\n }\n }\n }\n\n async decryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n const imported = await this.importKey('raw', hex2ua(rawKey))\n return this.decrypt(imported, plainData)\n }\n\n async encrypt(cryptoKey: CryptoKey, plainData: ArrayBuffer | Uint8Array): Promise {\n return await this.aes.encrypt(new Uint8Array(plainData), getKryptomKey(cryptoKey), null)\n }\n\n async encryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n const imported = await this.importKey('raw', hex2ua(rawKey))\n return this.encrypt(imported, plainData)\n }\n\n exportKey(cryptoKey: CryptoKey, format: 'raw'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n async exportKey(cryptoKey: CryptoKey, format: 'jwk' | 'raw'): Promise {\n const rawKey = await this.aes.exportRawKey(getKryptomKey(cryptoKey))\n if (format == 'raw') return rawKey\n return {\n kty: 'oct',\n alg: rawKey.byteLength == 32 ? 'A256CBC' : 'A128CBC',\n ext: true,\n key_ops: ['encrypt', 'decrypt'],\n k: ua2b64(rawKey).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_'),\n }\n }\n\n generateCryptoKey(toHex: false): Promise\n generateCryptoKey(toHex: true): Promise\n async generateCryptoKey(toHex: boolean): Promise {\n if (toHex) {\n return Promise.resolve(ua2hex(this.random.randomBytes(32)))\n } else {\n const aesKey = await this.aes.generateKey(AesAlgorithm.AesCbcPkcs7, 256)\n return new AesCryptoKey(aesKey, 256)\n }\n }\n\n generateIV(ivByteLength: number): Uint8Array {\n return this.random.randomBytes(ivByteLength)\n }\n\n async importKey(format: 'jwk' | 'raw', aesKey: JsonWebKey | ArrayBuffer | Uint8Array): Promise {\n let keyBytes: Uint8Array\n if (format === 'jwk') {\n if (\n (aesKey as JsonWebKey).kty !== 'oct' ||\n ((aesKey as JsonWebKey).alg !== 'A256CBC' && (aesKey as JsonWebKey).alg !== 'A128CBC') ||\n !(aesKey as JsonWebKey).ext ||\n !(aesKey as JsonWebKey).key_ops?.includes('encrypt') ||\n !(aesKey as JsonWebKey).key_ops?.includes('decrypt') ||\n !(aesKey as JsonWebKey).k\n ) {\n throw new Error(\n 'Invalid JWK - must have kty=oct, alg=(A256CBC||A128CBC), ext=true, key_ops=[encrypt, decrypt], and must have non-empty k field'\n )\n }\n // b64_2ua works also with url-safe base64\n keyBytes = new Uint8Array(b64_2ua((aesKey as JsonWebKey).k!))\n } else if (format === 'raw') {\n if (aesKey! instanceof ArrayBuffer && !ArrayBuffer.isView(aesKey))\n throw new Error(\"aesKey must be an ArrayBuffer or an ArrayBufferView when format is 'raw'\")\n keyBytes = new Uint8Array(aesKey as ArrayBufferLike)\n } else throw new Error(`Invalid format ${format}`)\n const imported = await this.aes.importRawKey(keyBytes, AesAlgorithm.AesCbcPkcs7)\n return new AesCryptoKey(imported, keyBytes.length)\n }\n}\n\nfunction getKryptomKey(cryptoKey: CryptoKey) {\n if ('kryptomKey' in cryptoKey) {\n return cryptoKey.kryptomKey as T\n } else throw new Error('Invalid crypto key: only crypto keys generated or loaded with this implementation of crypto primitives are supported')\n}\n\nclass AesCryptoKey implements CryptoKey {\n constructor(readonly kryptomKey: AesKey, readonly size: number) {}\n\n get algorithm(): AesKeyAlgorithm {\n return { name: 'AES-CBC', length: this.size }\n }\n get extractable(): boolean {\n return true\n }\n get type(): KeyType {\n return 'secret'\n }\n get usages(): KeyUsage[] {\n return ['encrypt', 'decrypt']\n }\n\n toJSON() {\n return {}\n }\n}\n\nclass NativeHmacBridge implements HMACUtils {\n constructor(private readonly hmac: HmacService) {}\n\n async exportKey(key: CryptoKey): Promise {\n return await this.hmac.exportRawKey(getKryptomKey(key))\n }\n\n async generateKey(): Promise {\n const kryptomKey = await this.hmac.generateKey(HmacAlgorithm.HmacSha512)\n return new HmacCryptoKey(kryptomKey)\n }\n\n async importKey(key: ArrayBuffer): Promise {\n const kryptomKey = await this.hmac.importRawKey(new Uint8Array(key), HmacAlgorithm.HmacSha512)\n return new HmacCryptoKey(kryptomKey)\n }\n\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\n return await this.hmac.sign(new Uint8Array(data), getKryptomKey(key))\n }\n\n async verify(key: CryptoKey, data: ArrayBuffer, signature: ArrayBuffer): Promise {\n return await this.hmac.verify(new Uint8Array(signature), new Uint8Array(data), getKryptomKey(key))\n }\n}\n\nclass HmacCryptoKey implements CryptoKey {\n constructor(readonly kryptomKey: HmacKey) {}\n\n get algorithm(): HmacKeyAlgorithm {\n return { name: 'HMAC', hash: { name: 'SHA-512' }, length: 1024 }\n }\n get extractable(): boolean {\n return true\n }\n get type(): KeyType {\n return 'secret'\n }\n get usages(): KeyUsage[] {\n return ['sign', 'verify']\n }\n\n toJSON() {\n return {}\n }\n}\n\nclass NativeRsaBridge implements RSAUtils {\n constructor(private readonly rsa: RsaService) {}\n\n async checkKeyPairValidity(keyPair: KeyPair): Promise {\n try {\n const text = 'shibboleth'\n const encryptedText = await this.encrypt(keyPair.publicKey, utf8_2ua(text))\n const decryptedText = ua2utf8(await this.decrypt(keyPair.privateKey, new Uint8Array(encryptedText)))\n return decryptedText === text\n } catch (e) {\n return false\n }\n }\n\n async decrypt(privateKey: CryptoKey, encryptedData: Uint8Array): Promise {\n return await this.rsa.decrypt(encryptedData, getKryptomKey(privateKey))\n }\n\n async encrypt(publicKey: CryptoKey, plainData: Uint8Array): Promise {\n return await this.rsa.encrypt(plainData, getKryptomKey(publicKey))\n }\n\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'spki'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'pkcs8'): Promise\n async exportKey(cryptoKey: CryptoKey, format: 'jwk' | 'spki' | 'pkcs8'): Promise {\n if (format === 'jwk') {\n if (cryptoKey.type === 'private') {\n return await this.rsa.exportPrivateKeyJwk(getKryptomKey(cryptoKey))\n } else {\n return await this.rsa.exportPublicKeyJwk(getKryptomKey(cryptoKey))\n }\n } else if (format === 'spki') {\n return await this.rsa.exportPublicKeySpki(getKryptomKey(cryptoKey))\n } else if (format === 'pkcs8') {\n return await this.rsa.exportPrivateKeyPkcs8(getKryptomKey(cryptoKey))\n } else throw new Error(`Invalid format ${format}`)\n }\n\n exportKeys(keyPair: KeyPair, privKeyFormat: 'jwk', pubKeyFormat: 'jwk'): Promise>\n exportKeys(keyPair: KeyPair, privKeyFormat: 'pkcs8', pubKeyFormat: 'spki'): Promise>\n async exportKeys(\n keyPair: KeyPair,\n privKeyFormat: 'jwk' | 'pkcs8',\n pubKeyFormat: 'jwk' | 'spki'\n ): Promise> {\n let privateKey: JsonWebKey | ArrayBuffer\n if (privKeyFormat === 'jwk') {\n privateKey = await this.rsa.exportPrivateKeyJwk(getKryptomKey(keyPair.privateKey))\n } else {\n privateKey = await this.rsa.exportPrivateKeyPkcs8(getKryptomKey(keyPair.privateKey))\n }\n let publicKey: JsonWebKey | ArrayBuffer\n if (pubKeyFormat === 'jwk') {\n publicKey = await this.rsa.exportPublicKeyJwk(getKryptomKey(keyPair.publicKey))\n } else {\n publicKey = await this.rsa.exportPublicKeySpki(getKryptomKey(keyPair.publicKey))\n }\n return { privateKey, publicKey }\n }\n\n async generateKeyPair(shaVersion: ShaVersion): Promise> {\n const generated = await this.rsa.generateKey(this.kryptomAlgorithm(shaVersion), 2048)\n // In expo-kryptom a private keys and public keys are supertypes of keypair.\n return {\n privateKey: new PrivateRsaCryptoKey(generated, this.encryptionKeysAlgorithm(shaVersion)),\n publicKey: new PublicRsaCryptoKey(generated, this.encryptionKeysAlgorithm(shaVersion)),\n }\n }\n\n async generateSignatureKeyPair(): Promise> {\n const generated = await this.rsa.generateKey(RsaSignatureAlgorithm.PssWithSha256, 2048)\n return {\n privateKey: new PrivateRsaCryptoKey(generated, this.signatureKeysAlgorithm()),\n publicKey: new PublicRsaCryptoKey(generated, this.signatureKeysAlgorithm()),\n }\n }\n\n importKey(\n format: 'jwk' | 'spki' | 'pkcs8',\n keydata: JsonWebKey | ArrayBuffer,\n keyUsages: KeyUsage[],\n hashAlgorithm: ShaVersion\n ): Promise {\n if (keyUsages[0] == 'encrypt' && (format == 'jwk' || format == 'spki')) {\n return this.importPublicKey(format, keydata, hashAlgorithm)\n } else if (keyUsages[0] == 'decrypt' && (format == 'jwk' || format == 'pkcs8')) {\n return this.importPrivateKey(format, keydata, hashAlgorithm)\n } else throw new Error(`Combination of key usages and key format not supported: ${keyUsages} ${format}`)\n }\n\n async importKeyPair(\n privateKeyFormat: string,\n privateKeydata: JsonWebKey | ArrayBuffer,\n publicKeyFormat: string,\n publicKeyData: JsonWebKey | ArrayBuffer,\n hashAlgorithm: ShaVersion\n ): Promise> {\n let importedPrivate: RsaPrivateKey\n let importedPublic: RsaPublicKey\n const algorithm = this.kryptomAlgorithm(hashAlgorithm)\n if (privateKeyFormat == 'jwk') {\n importedPrivate = await this.rsa.importPrivateKeyJwk(privateKeydata as PrivateRsaKeyJwk, algorithm)\n } else {\n importedPrivate = await this.rsa.importPrivateKeyPkcs8(new Uint8Array(privateKeydata as ArrayBuffer), algorithm)\n }\n if (publicKeyFormat == 'jwk') {\n importedPublic = await this.rsa.importPublicKeyJwk(publicKeyData as PublicRsaKeyJwk, algorithm)\n } else {\n importedPublic = await this.rsa.importPublicKeySpki(new Uint8Array(publicKeyData as ArrayBuffer), algorithm)\n }\n return {\n privateKey: new PrivateRsaCryptoKey(importedPrivate, this.encryptionKeysAlgorithm(hashAlgorithm)),\n publicKey: new PublicRsaCryptoKey(importedPublic, this.encryptionKeysAlgorithm(hashAlgorithm)),\n }\n }\n\n async importPrivateKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer, hashAlgorithm: ShaVersion): Promise {\n let imported: RsaPrivateKey\n if (format == 'jwk') {\n imported = await this.rsa.importPrivateKeyJwk(keydata as PrivateRsaKeyJwk, this.kryptomAlgorithm(hashAlgorithm))\n } else {\n imported = await this.rsa.importPrivateKeyPkcs8(new Uint8Array(keydata as ArrayBuffer), this.kryptomAlgorithm(hashAlgorithm))\n }\n return new PrivateRsaCryptoKey(imported, this.encryptionKeysAlgorithm(hashAlgorithm))\n }\n\n async importPublicKey(format: 'jwk' | 'spki', keydata: JsonWebKey | ArrayBuffer, hashAlgorithm: ShaVersion): Promise {\n let imported: RsaPublicKey\n if (format == 'jwk') {\n imported = await this.rsa.importPublicKeyJwk(keydata as PublicRsaKeyJwk, this.kryptomAlgorithm(hashAlgorithm))\n } else {\n imported = await this.rsa.importPublicKeySpki(new Uint8Array(keydata as ArrayBuffer), this.kryptomAlgorithm(hashAlgorithm))\n }\n return new PublicRsaCryptoKey(imported, this.encryptionKeysAlgorithm(hashAlgorithm))\n }\n\n async importSignatureKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer): Promise {\n let importedKey: RsaPrivateKey\n if (format == 'jwk') {\n importedKey = await this.rsa.importPrivateKeyJwk(keydata as PrivateRsaKeyJwk, RsaSignatureAlgorithm.PssWithSha256)\n } else {\n importedKey = await this.rsa.importPrivateKeyPkcs8(new Uint8Array(keydata as ArrayBuffer), RsaSignatureAlgorithm.PssWithSha256)\n }\n return new PrivateRsaCryptoKey(importedKey, this.signatureKeysAlgorithm())\n }\n\n async importVerificationKey(format: 'jwk' | 'spki', keydata: JsonWebKey | ArrayBuffer): Promise {\n let importedKey: RsaPublicKey\n if (format == 'jwk') {\n importedKey = await this.rsa.importPublicKeyJwk(keydata as PublicRsaKeyJwk, RsaSignatureAlgorithm.PssWithSha256)\n } else {\n importedKey = await this.rsa.importPublicKeySpki(new Uint8Array(keydata as ArrayBuffer), RsaSignatureAlgorithm.PssWithSha256)\n }\n return new PublicRsaCryptoKey(importedKey, this.signatureKeysAlgorithm())\n }\n\n async sign(privateKey: CryptoKey, data: ArrayBuffer): Promise {\n return await this.rsa.signature(new Uint8Array(data), getKryptomKey(privateKey))\n }\n\n async verifySignature(publicKey: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer): Promise {\n return await this.rsa.verify(new Uint8Array(signature), new Uint8Array(data), getKryptomKey(publicKey))\n }\n\n private kryptomAlgorithm(shaVersion: ShaVersion): RsaEncryptionAlgorithm {\n return shaVersion == 'sha-256' ? RsaEncryptionAlgorithm.OaepWithSha256 : RsaEncryptionAlgorithm.OaepWithSha1\n }\n\n private encryptionKeysAlgorithm(shaVersion: ShaVersion): RsaHashedKeyAlgorithm {\n return {\n name: 'RSA-OAEP',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: shaVersion == 'sha-256' ? 'SHA-256' : 'SHA-1' },\n }\n }\n\n private signatureKeysAlgorithm(): RsaHashedKeyAlgorithm {\n return {\n name: 'RSA-PSS',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: 'SHA-256' },\n }\n }\n}\n\nclass PrivateRsaCryptoKey implements CryptoKey {\n constructor(readonly kryptomKey: RsaPrivateKey, readonly algorithm: RsaKeyAlgorithm) {}\n\n get extractable(): boolean {\n return true\n }\n\n get type(): KeyType {\n return 'private'\n }\n\n get usages(): KeyUsage[] {\n return this.algorithm.name != 'RSA-PSS' ? ['decrypt'] : ['sign']\n }\n\n toJSON() {\n return {}\n }\n}\n\nclass PublicRsaCryptoKey implements CryptoKey {\n constructor(readonly kryptomKey: RsaPublicKey, readonly algorithm: RsaKeyAlgorithm) {}\n\n get extractable(): boolean {\n return true\n }\n\n get type(): KeyType {\n return 'public'\n }\n\n get usages(): KeyUsage[] {\n return this.algorithm.name != 'RSA-PSS' ? ['encrypt'] : ['verify']\n }\n\n toJSON() {\n return {}\n }\n}\n\nenum AesAlgorithm {\n AesCbcPkcs7 = 'AesCbcPkcs7',\n}\nenum RsaEncryptionAlgorithm {\n OaepWithSha1 = 'OaepWithSha1',\n OaepWithSha256 = 'OaepWithSha256',\n}\nenum RsaSignatureAlgorithm {\n PssWithSha256 = 'PssWithSha256',\n}\ntype RsaAlgorithm = RsaEncryptionAlgorithm | RsaSignatureAlgorithm\nenum HmacAlgorithm {\n HmacSha512 = 'HmacSha512',\n}\n\ninterface HmacKey {\n algorithmIdentifier: HmacAlgorithm\n}\n\ninterface AesKey {\n algorithmIdentifier: AesAlgorithm\n}\n\ninterface RsaKeyPair {\n algorithmIdentifier: RsaAlgorithm\n}\n\ninterface RsaPrivateKey {\n algorithmIdentifier: RsaAlgorithm\n}\n\ninterface RsaPublicKey {\n algorithmIdentifier: RsaAlgorithm\n}\n\ntype PrivateRsaKeyJwk = {\n alg: string\n d: string\n dp: string\n dq: string\n e: string\n ext: boolean\n key_ops: string[]\n n: string\n p: string\n q: string\n qi: string\n}\n\ntype PublicRsaKeyJwk = {\n alg: string\n e: string\n ext: boolean\n key_ops: string[]\n n: string\n}\n\ninterface AesService {\n generateKey(algorithmIdentifier: AesAlgorithm, size: number): Promise\n encrypt(data: Uint8Array, key: AesKey, iv: Uint8Array | null): Promise\n decrypt(ivAndEncryptedData: Uint8Array, key: AesKey): Promise\n exportRawKey(key: AesKey): Promise\n importRawKey(rawKey: Uint8Array, algorithmIdentifier: AesAlgorithm): Promise\n}\n\ninterface RsaService {\n generateKey(algorithmIdentifier: RsaAlgorithm, size: number): Promise\n encrypt(data: Uint8Array, key: RsaPublicKey): Promise\n decrypt(data: Uint8Array, key: RsaPrivateKey): Promise\n signature(data: Uint8Array, key: RsaPrivateKey): Promise\n verify(signature: Uint8Array, data: Uint8Array, key: RsaPublicKey): Promise\n exportPrivateKeyPkcs8(key: RsaPrivateKey): Promise\n exportPrivateKeyJwk(key: RsaPrivateKey): Promise\n exportPublicKeySpki(key: RsaPublicKey): Promise\n exportPublicKeyJwk(key: RsaPublicKey): Promise\n importPrivateKeyPkcs8(privateKeyPkcs8: Uint8Array, algorithmIdentifier: RsaAlgorithm): Promise\n importPrivateKeyJwk(privateKey: PrivateRsaKeyJwk, algorithmIdentifier: RsaAlgorithm): Promise\n importPublicKeySpki(publicKeySpki: Uint8Array, algorithmIdentifier: RsaAlgorithm): Promise\n importPublicKeyJwk(publicKey: PublicRsaKeyJwk, algorithmIdentifier: RsaAlgorithm): Promise\n importKeyPair(privateKeyPkcs8: Uint8Array, algorithmIdentifier: RsaAlgorithm): Promise\n}\n\ninterface HmacService {\n generateKey(algorithmIdentifier: HmacAlgorithm): Promise\n sign(data: Uint8Array, key: HmacKey): Promise\n verify(signature: Uint8Array, data: Uint8Array, key: HmacKey): Promise\n exportRawKey(key: HmacKey): Promise\n importRawKey(rawKey: Uint8Array, algorithmIdentifier: HmacAlgorithm): Promise\n}\n\ninterface StrongRandomService {\n randomBytes(length: number): Uint8Array\n randomUUID(): string\n}\n\ninterface DigestService {\n sha256(data: Uint8Array): Promise\n}\n","import { ua2utf8, utf8_2ua } from '../utils'\n\n/**\n * Represents an RSA KeyPair in a generic format.\n */\nexport type KeyPair = { publicKey: T; privateKey: T }\n\nexport enum ShaVersion {\n Sha1 = 'sha-1',\n Sha256 = 'sha-256',\n}\n\nexport interface RSAUtils {\n /**\n * Generates a key pair for encryption/decryption of data.\n * @param shaVersion the version of the SHA algorithm to use.\n */\n generateKeyPair(shaVersion: ShaVersion): Promise>\n\n /**\n * Generates a key pair for signing data and signature verification.\n */\n generateSignatureKeyPair(): Promise>\n\n /**\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param keyPair is {publicKey: CryptoKey, privateKey: CryptoKey}\n * @param privKeyFormat will be 'pkcs8' or 'jwk'\n * @param pubKeyFormat will be 'spki' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKeys(keyPair: KeyPair, privKeyFormat: 'jwk', pubKeyFormat: 'jwk'): Promise>\n\n exportKeys(keyPair: KeyPair, privKeyFormat: 'pkcs8', pubKeyFormat: 'spki'): Promise>\n\n exportKeys(keyPair: KeyPair, privKeyFormat: string, pubKeyFormat: string): Promise>\n\n /**\n * Format:\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param cryptoKey public or private\n * @param format either 'jwk' or 'spki' or 'pkcs8'\n * @returns {Promise|*} will be RSA key (public or private)\n */\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n\n exportKey(cryptoKey: CryptoKey, format: 'spki'): Promise\n\n exportKey(cryptoKey: CryptoKey, format: 'pkcs8'): Promise\n\n exportKey(cryptoKey: CryptoKey, format: string): Promise\n\n /**\n *\n * @param publicKey (CryptoKey)\n * @param plainData (Uint8Array)\n */\n encrypt(publicKey: CryptoKey, plainData: Uint8Array): Promise\n\n /**\n *\n * @param privateKey (CryptoKey)\n * @param encryptedData (Uint8Array)\n */\n decrypt(privateKey: CryptoKey, encryptedData: Uint8Array): Promise\n\n /**\n *\n * @param format 'jwk', 'spki', or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @param keyUsages Array of usages. For example, ['encrypt'] for public key.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {*}\n */\n importKey(format: 'jwk' | 'spki' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer, keyUsages: KeyUsage[], hashAlgorithm: ShaVersion): Promise\n\n importSignatureKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer): Promise\n\n importVerificationKey(format: 'jwk' | 'spki', keydata: JsonWebKey | ArrayBuffer): Promise\n\n /**\n *\n * @param format 'jwk' or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {*}\n */\n importPrivateKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer, hashAlgorithm: ShaVersion): Promise\n\n /**\n *\n * @param privateKeyFormat 'jwk' or 'pkcs8'\n * @param privateKeydata should be the key data based on the format.\n * @param publicKeyFormat 'jwk' or 'spki'\n * @param publicKeyData should be the key data based on the format.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {Promise|*}\n */\n importKeyPair(\n privateKeyFormat: 'jwk' | 'pkcs8',\n privateKeydata: JsonWebKey | ArrayBuffer,\n publicKeyFormat: 'jwk' | 'spki',\n publicKeyData: JsonWebKey | ArrayBuffer,\n hashAlgorithm: ShaVersion\n ): Promise>\n\n /**\n * Tries to encrypt then decrypt data using a keypair. If both operations succeed without throwing an error and the decrypted data matches the\n * original data returns true, else false.\n * @param keyPair a key pair.\n * @return if the key pair could be successfully used to encrypt then decrypt data.\n */\n checkKeyPairValidity(keyPair: KeyPair): Promise\n\n /**\n * Generates a signature for some data. The signature algorithm used is RSA-PSS with SHA-256.\n * @param privateKey private key to use for signature\n * @param data the data to sign\n * @return the signature.\n */\n sign(privateKey: CryptoKey, data: ArrayBuffer): Promise\n\n /**\n * Verifies if a signature matches the data. The signature algorithm used is RSA-PSS with sha-256.\n * @param publicKey public key to use for signature verification.\n * @param signature the signature to verify\n * @param data the data that was signed\n * @return if the signature matches the data and key.\n */\n verifySignature(publicKey: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer): Promise\n}\n\nexport class RSAUtilsImpl implements RSAUtils {\n /********* RSA Config **********/\n //TODO bigger modulus\n //TODO PSS for signing\n rsaParams: any = { name: 'RSA-OAEP' }\n // RSA params for 'import' and 'generate' function.\n rsaHashedParams: any = {\n name: 'RSA-OAEP',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: 'sha-1' },\n }\n rsaWithSha256HashedParams: any = {\n name: 'RSA-OAEP',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: 'SHA-256' },\n }\n private readonly signatureKeysGenerationParams = {\n name: 'RSA-PSS',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: 'SHA-256' },\n }\n\n private crypto: Crypto\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this.crypto = crypto\n }\n\n /**\n * Generates a key pair for encryption/decryption of data.\n * @param shaVersion the version of the SHA algorithm to use.\n */\n generateKeyPair(shaVersion: ShaVersion): Promise> {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n const rsaParams = this.paramsForCreationOrImport(shaVersion)\n\n return new Promise>((resolve, reject) => {\n this.crypto.subtle.generateKey(rsaParams, extractable, keyUsages).then(resolve, reject)\n })\n }\n\n /**\n * Generates a key pair for signing data and signature verification.\n */\n async generateSignatureKeyPair(): Promise> {\n return await this.crypto.subtle.generateKey(this.signatureKeysGenerationParams, true, ['sign', 'verify'])\n }\n\n /**\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param keyPair is {publicKey: CryptoKey, privateKey: CryptoKey}\n * @param privKeyFormat will be 'pkcs8' or 'jwk'\n * @param pubKeyFormat will be 'spki' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKeys(keyPair: KeyPair, privKeyFormat: 'jwk', pubKeyFormat: 'jwk'): Promise>\n exportKeys(keyPair: KeyPair, privKeyFormat: 'pkcs8', pubKeyFormat: 'spki'): Promise>\n exportKeys(keyPair: KeyPair, privKeyFormat: string, pubKeyFormat: string): Promise> {\n const pubPromise = this.crypto.subtle.exportKey(pubKeyFormat as any, keyPair.publicKey)\n const privPromise = this.crypto.subtle.exportKey(privKeyFormat as any, keyPair.privateKey)\n\n return Promise.all([pubPromise, privPromise]).then(function (results) {\n return {\n publicKey: results[0],\n privateKey: results[1],\n }\n })\n }\n\n /**\n * Format:\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param cryptoKey public or private\n * @param format either 'jwk' or 'spki' or 'pkcs8'\n * @returns {Promise|*} will be RSA key (public or private)\n */\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'spki'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'pkcs8'): Promise\n exportKey(cryptoKey: CryptoKey, format: string): Promise {\n return new Promise((resolve: (value: JsonWebKey | ArrayBuffer) => any, reject) => {\n this.crypto.subtle.exportKey(format as any, cryptoKey).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param publicKey (CryptoKey)\n * @param plainData (Uint8Array)\n */\n encrypt(publicKey: CryptoKey, plainData: Uint8Array): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject) => {\n this.crypto.subtle.encrypt(this.rsaParams, publicKey, plainData.buffer ? plainData.buffer : plainData).then(resolve, reject) //Node prefers arrayBuffer\n })\n }\n\n /**\n *\n * @param privateKey (CryptoKey)\n * @param encryptedData (Uint8Array)\n */\n decrypt(privateKey: CryptoKey, encryptedData: Uint8Array): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject) => {\n this.crypto.subtle.decrypt(this.rsaParams, privateKey, encryptedData).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param format 'jwk', 'spki', or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @param keyUsages Array of usages. For example, ['encrypt'] for public key.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {*}\n */\n importKey(\n format: 'jwk' | 'spki' | 'pkcs8',\n keydata: JsonWebKey | ArrayBuffer,\n keyUsages: KeyUsage[],\n hashAlgorithm: ShaVersion\n ): Promise {\n const extractable = true\n return new Promise((resolve: (value: CryptoKey) => any, reject) => {\n const rsaParams = this.paramsForCreationOrImport(hashAlgorithm)\n this.crypto.subtle.importKey(format as any, keydata as any, rsaParams, extractable, keyUsages).then(resolve, reject)\n })\n }\n\n importSignatureKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer): Promise {\n const extractable = true\n return this.crypto.subtle.importKey(format as any, keydata as any, this.signatureKeysGenerationParams, extractable, ['sign'])\n }\n\n importVerificationKey(format: 'jwk' | 'spki', keydata: JsonWebKey | ArrayBuffer): Promise {\n const extractable = true\n return this.crypto.subtle.importKey(format as any, keydata as any, this.signatureKeysGenerationParams, extractable, ['verify'])\n }\n\n paramsForCreationOrImport(shaVersion: ShaVersion) {\n if (shaVersion === 'sha-1') {\n return this.rsaHashedParams\n } else if (shaVersion === 'sha-256') {\n return this.rsaWithSha256HashedParams\n } else {\n throw new Error('Unexpected error, invalid SHA version')\n }\n }\n\n /**\n *\n * @param format 'jwk' or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {*}\n */\n importPrivateKey(format: 'jwk' | 'pkcs8', keydata: JsonWebKey | ArrayBuffer, hashAlgorithm: ShaVersion): Promise {\n const extractable = true\n return new Promise((resolve: (value: CryptoKey) => any, reject) => {\n const rsaParams = this.paramsForCreationOrImport(hashAlgorithm)\n this.crypto.subtle.importKey(format as any, keydata as any, rsaParams, extractable, ['decrypt']).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param privateKeyFormat 'jwk' or 'pkcs8'\n * @param privateKeydata should be the key data based on the format.\n * @param publicKeyFormat 'jwk' or 'spki'\n * @param publicKeyData should be the key data based on the format.\n * @param hashAlgorithm 'sha-1' or 'sha-256'\n * @returns {Promise|*}\n */\n importKeyPair(\n privateKeyFormat: string,\n privateKeydata: JsonWebKey | ArrayBuffer,\n publicKeyFormat: string,\n publicKeyData: JsonWebKey | ArrayBuffer,\n hashAlgorithm: ShaVersion\n ): Promise> {\n const extractable = true\n const rsaParams = this.paramsForCreationOrImport(hashAlgorithm)\n const privPromise = this.crypto.subtle.importKey(privateKeyFormat as any, privateKeydata as any, rsaParams, extractable, ['decrypt'])\n const pubPromise = this.crypto.subtle.importKey(publicKeyFormat as any, publicKeyData as any, rsaParams, extractable, ['encrypt'])\n\n return Promise.all([pubPromise, privPromise]).then(function (results) {\n return {\n publicKey: results[0],\n privateKey: results[1],\n }\n })\n }\n\n /**\n * Tries to encrypt then decrypt data using a keypair. If both operations succeed without throwing an error and the decrypted data matches the\n * original data returns true, else false.\n * @param keyPair a key pair.\n * @return if the key pair could be successfully used to encrypt then decrypt data.\n */\n async checkKeyPairValidity(keyPair: KeyPair): Promise {\n try {\n const text = 'shibboleth'\n const encryptedText = await this.encrypt(keyPair.publicKey, utf8_2ua(text))\n const decryptedText = ua2utf8(await this.decrypt(keyPair.privateKey, new Uint8Array(encryptedText)))\n return decryptedText === text\n } catch (e) {\n return false\n }\n }\n\n /**\n * Generates a signature for some data. The signature algorithm used is RSA-PSS with SHA-256.\n * @param privateKey private key to use for signature\n * @param data the data to sign\n * @return the signature.\n */\n async sign(privateKey: CryptoKey, data: ArrayBuffer): Promise {\n return await this.crypto.subtle.sign({ name: 'RSA-PSS', saltLength: 32 }, privateKey, data)\n }\n\n /**\n * Verifies if a signature matches the data. The signature algorithm used is RSA-PSS with sha-256.\n * @param publicKey public key to use for signature verification.\n * @param signature the signature to verify\n * @param data the data that was signed\n * @return if the signature matches the data and key.\n */\n async verifySignature(publicKey: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer): Promise {\n return await this.crypto.subtle.verify({ name: 'RSA-PSS', saltLength: 32 }, publicKey, signature, data)\n }\n}\n\nexport const RSA: RSAUtils = new RSAUtilsImpl()\n","import { KeyPair, ShaVersion } from './RSA'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IccRecoveryDataApi } from '../../icc-api/api/internal/IccRecoveryDataApi'\nimport { IccExchangeDataApi } from '../../icc-api/api/internal/IccExchangeDataApi'\nimport { RecoveryData } from '../../icc-api/model/internal/RecoveryData'\nimport { a2b, b2a, b64_2ua, hex2ua, string2ua, ua2b64, ua2hex, ua2string, ua2utf8, utf8_2ua } from '../utils'\nimport { XHR } from '../../icc-api/api/XHR'\nimport XHRError = XHR.XHRError\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { KeyPairUpdateRequest } from '../maintenance/KeyPairUpdateRequest'\nimport { get } from 'lodash'\n\nexport enum RecoveryDataUseFailureReason {\n /**\n * The recovery data matching the provided recovery key does not exist. It could have been deleted, or it could have been expired.\n */\n Missing = 'MISSING',\n /**\n * The recovery data exists but it is not available to the current user. The user may have used a recovery key that he created while logged in as\n * a different user.\n */\n Unauthorized = 'UNAUTHORIZED',\n /**\n * The recovery data exists and is available to the current user, but it is not of the expected type.\n */\n InvalidType = 'INVALID_TYPE',\n /**\n * The recovery data exists and is available to the current user, but its content could not be interpreted. The data may have been created\n * with an unsupported SDK version.\n */\n InvalidContent = 'INVALID_CONTENT',\n}\n\n// accessControlSecret, sharedSignatureKey, and exchangeKey all raw bytes b64 encoded\ntype ExchangeDataRecoveryDataContent = {\n exchangeDataId: string\n rawAccessControlSecret: string\n rawSharedSignatureKey: string\n rawExchangeKey: string\n}[]\n// delegateId -> { pair: { privateKey: base64pkcs8, publicKey: base64spki }, algorithm: ShaVersion }[]\ntype KeyPairRecoveryDataContent = { [delegateId: string]: { pair: KeyPair; algorithm: ShaVersion }[] }\ntype RecoveryDataContent = KeyPairRecoveryDataContent | ExchangeDataRecoveryDataContent\n\n/**\n * @internal this class is for internal use only and may change without notice.\n */\nexport class RecoveryDataEncryption {\n constructor(private readonly primitives: CryptoPrimitives, private readonly baseRecoveryApi: IccRecoveryDataApi) {}\n\n async recoveryKeyToId(recoveryKey: string): Promise {\n return ua2hex(await this.primitives.sha256(hex2ua(recoveryKey)))\n }\n\n async createAndSaveKeyPairsRecoveryDataFor(\n recipient: string,\n keyPairs: { [delegateId: string]: { pair: KeyPair; algorithm: ShaVersion }[] },\n lifetimeSeconds: number | undefined\n ): Promise {\n const content: KeyPairRecoveryDataContent = {}\n for (const [delegateId, pairs] of Object.entries(keyPairs)) {\n const entries: { pair: KeyPair; algorithm: ShaVersion }[] = []\n for (const { pair, algorithm } of pairs) {\n entries.push({\n pair: {\n privateKey: ua2b64(await this.primitives.RSA.exportKey(pair.privateKey, 'pkcs8')),\n publicKey: ua2b64(await this.primitives.RSA.exportKey(pair.publicKey, 'spki')),\n },\n algorithm,\n })\n }\n content[delegateId] = entries\n }\n return await this.createRecoveryData(recipient, RecoveryData.Type.KEYPAIR_RECOVERY, lifetimeSeconds, content)\n }\n\n async getAndDecryptKeyPairsRecoveryData(\n recoveryKey: string,\n autoDeleteOnSuccess: boolean\n ): Promise<{ success: { [dataOwnerId: string]: { [publicKeySpki: string]: KeyPair } } } | { failure: RecoveryDataUseFailureReason }> {\n const getRecoveryDataResult = await this.getRecoveryDataAndDecrypt(recoveryKey, RecoveryData.Type.KEYPAIR_RECOVERY)\n if ('failure' in getRecoveryDataResult) {\n return getRecoveryDataResult\n } else {\n const recoveredKeysData = getRecoveryDataResult.decryptedJson as KeyPairRecoveryDataContent\n const recoveredKeys: { [delegateId: string]: { [publicKeySpki: string]: KeyPair } } = {}\n for (const [delegateId, pairs] of Object.entries(recoveredKeysData)) {\n const delegateKeys: { [publicKeySpki: string]: KeyPair } = {}\n for (const { pair, algorithm } of pairs) {\n delegateKeys[ua2hex(b64_2ua(pair.publicKey))] = {\n privateKey: await this.primitives.RSA.importKey('pkcs8', b64_2ua(pair.privateKey), ['decrypt'], algorithm),\n publicKey: await this.primitives.RSA.importKey('spki', b64_2ua(pair.publicKey), ['encrypt'], algorithm),\n }\n }\n recoveredKeys[delegateId] = delegateKeys\n }\n if (autoDeleteOnSuccess) {\n await this.baseRecoveryApi.deleteRecoveryData(await this.recoveryKeyToId(recoveryKey)).catch((e) => {\n console.warn(`Failed to auto-delete recovery data, ignoring. ${e}`)\n })\n }\n return { success: recoveredKeys }\n }\n }\n\n async createAndSaveExchangeDataRecoveryData(\n recipient: string,\n exchangeDataInfo: {\n exchangeDataId: string\n rawAccessControlSecret: ArrayBuffer\n rawSharedSignatureKey: ArrayBuffer\n rawExchangeKey: ArrayBuffer\n }[],\n lifetimeSeconds: number | undefined\n ): Promise {\n return await this.createRecoveryData(\n recipient,\n RecoveryData.Type.EXCHANGE_KEY_RECOVERY,\n lifetimeSeconds,\n exchangeDataInfo.map((x) => ({\n exchangeDataId: x.exchangeDataId,\n rawAccessControlSecret: ua2b64(x.rawAccessControlSecret),\n rawSharedSignatureKey: ua2b64(x.rawSharedSignatureKey),\n rawExchangeKey: ua2b64(x.rawExchangeKey),\n }))\n )\n }\n\n async getAndDecryptExchangeDataRecoveryData(\n recoveryKey: string\n ): Promise<\n | { success: { exchangeDataId: string; rawAccessControlSecret: ArrayBuffer; rawSharedSignatureKey: ArrayBuffer; rawExchangeKey: ArrayBuffer }[] }\n | { failure: RecoveryDataUseFailureReason }\n > {\n const getRecoveryDataResult = await this.getRecoveryDataAndDecrypt(recoveryKey, RecoveryData.Type.EXCHANGE_KEY_RECOVERY)\n if ('failure' in getRecoveryDataResult) return getRecoveryDataResult\n return {\n success: (getRecoveryDataResult.decryptedJson as ExchangeDataRecoveryDataContent).map((x) => ({\n exchangeDataId: x.exchangeDataId,\n rawAccessControlSecret: b64_2ua(x.rawAccessControlSecret),\n rawSharedSignatureKey: b64_2ua(x.rawSharedSignatureKey),\n rawExchangeKey: b64_2ua(x.rawExchangeKey),\n })),\n }\n }\n\n async getRecoveryDataAndDecrypt(\n recoveryKey: string,\n expectedType: RecoveryData.Type\n ): Promise<{ recoveryData: RecoveryData; decryptedJson: any } | { failure: RecoveryDataUseFailureReason }> {\n const id = await this.recoveryKeyToId(recoveryKey)\n const getResult = await this.baseRecoveryApi.getRecoveryData(id).then(\n (r) => ({ recoveryData: r }),\n (e) => {\n if (e instanceof XHRError) {\n if (e.statusCode === 404) {\n return { failure: RecoveryDataUseFailureReason.Missing }\n } else if (e.statusCode === 403) {\n return { failure: RecoveryDataUseFailureReason.Unauthorized }\n }\n }\n throw e\n }\n )\n if ('failure' in getResult) return getResult\n const { recoveryData } = getResult\n if (recoveryData.type !== expectedType) return { failure: RecoveryDataUseFailureReason.InvalidType }\n const decryptionKey = await this.primitives.AES.importKey('raw', hex2ua(recoveryKey))\n const decryptionResult = await this.primitives.AES.decrypt(decryptionKey, string2ua(a2b(recoveryData.encryptedSelf)))\n .then((d) => JSON.parse(ua2utf8(d)))\n .then(\n (r): { success: RecoveryDataContent } => ({ success: r }),\n () => ({ failure: RecoveryDataUseFailureReason.InvalidContent })\n )\n if ('failure' in decryptionResult) return decryptionResult\n return { recoveryData, decryptedJson: decryptionResult.success }\n }\n async createRecoveryData(\n recipient: string,\n type: RecoveryData.Type,\n lifetimeSeconds: number | undefined,\n content: RecoveryDataContent\n ): Promise {\n const recoveryKey = await this.primitives.AES.generateCryptoKey(false)\n const recoveryKeyHex = ua2hex(await this.primitives.AES.exportKey(recoveryKey, 'raw'))\n const id = await this.recoveryKeyToId(recoveryKeyHex)\n const encryptedSelf = b2a(ua2string(await this.primitives.AES.encrypt(recoveryKey, utf8_2ua(JSON.stringify(content)))))\n const expirationInstant = lifetimeSeconds ? Date.now() + lifetimeSeconds * 1000 : undefined\n const data: RecoveryData = new RecoveryData({\n id,\n encryptedSelf,\n expirationInstant,\n recipient,\n type,\n })\n await this.baseRecoveryApi.createRecoveryData(data)\n return recoveryKeyHex\n }\n}\n","import { SecureDelegation } from '../../icc-api/model/SecureDelegation'\nimport { b64_2ua, concat_uas, hex2ua, ua2b64, ua2hex, ua2utf8, utf8_2ua } from '../utils'\nimport { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { fingerprintV1toV2, fingerprintIsV1 } from './utils'\n\n/**\n * @internal this class is for internal use only and may be changed without notice.\n */\nexport class SecureDelegationsEncryption {\n constructor(private readonly userKeys: UserEncryptionKeysManager, private readonly primitives: CryptoPrimitives) {}\n\n /**\n * WARNING: this values should be ALWAYS be the string 'Cure' and its utf-8 bytes. If changed, it would not be possible to decrypt old secretIds and owningEntityIds\n * anymore.\n * @private\n */\n private readonly decryptionValidatorPrefix: string = 'Cure'\n private readonly decryptionValidatorBytes: Uint8Array = utf8_2ua(this.decryptionValidatorPrefix)\n\n /**\n * Check if a Uint8Array or an Array buffer contains the decryption validator prefix.\n * @param bytes an ArrayBuffer or Uint8Array to verify.\n * @return true if the buffer contains the prefix, false otherwise.\n */\n private prefixVerification(bytes: ArrayBuffer | Uint8Array): boolean {\n const arrayToVerify = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes)\n if (arrayToVerify.length < this.decryptionValidatorBytes.length) return false\n let result = true\n for (let i = 0; i < this.decryptionValidatorBytes.length; i++) {\n result = result && this.decryptionValidatorBytes[i] === arrayToVerify[i]\n }\n return result\n }\n\n /**\n * If the secure delegation has an encrypted exchange data id attempts to decrypt it with the available keys for the current user.\n * @param encryptedExchangeIds a map that associates an encrypted exchange data id to the fingerprint of the public key used to encrypt it.\n * @return the id of the exchange data used for the encryption of the provided secure delegation if it was encrypted and could be decrypted,\n * undefined otherwise (there was no encrypted id of the exchange data, or it could not be decrypted as no key was available).\n */\n async decryptExchangeDataId(encryptedExchangeIds: { [fp: string]: string }): Promise {\n const decryptionKeys = this.userKeys.getDecryptionKeys()\n const decryptionKeysV2 = Object.fromEntries(\n Object.entries(decryptionKeys).map(([fp, keyPair]) => [fingerprintIsV1(fp) ? fingerprintV1toV2(fp) : fp, keyPair])\n )\n for (const [fp, encryptedId] of Object.entries(encryptedExchangeIds)) {\n const key = decryptionKeys?.[fp] ?? decryptionKeysV2?.[fp]\n if (key) return ua2utf8(await this.primitives.RSA.decrypt(key.privateKey, b64_2ua(encryptedId)))\n }\n return undefined\n }\n\n /**\n * Encrypts the exchange data id for a secure delegation. To avoid leaks of sensitive data the provided public keys should be only keys of users\n * which DO NOT REQUIRE anonymous delegations\n */\n async encryptExchangeDataId(exchangeDataId: string, publicKeys: { [fp: string]: CryptoKey }): Promise<{ [fp: string]: string }> {\n const res = {} as { [fp: string]: string }\n for (const [fp, key] of Object.entries(publicKeys)) {\n res[fp] = ua2b64(await this.primitives.RSA.encrypt(key, utf8_2ua(exchangeDataId)))\n }\n return res\n }\n\n async encryptEncryptionKey(hexKey: string, key: CryptoKey): Promise {\n return ua2b64(await this.primitives.AES.encrypt(key, concat_uas(this.decryptionValidatorBytes, hex2ua(hexKey))))\n }\n\n async encryptEncryptionKeys(hexKeys: string[], key: CryptoKey): Promise {\n const res = []\n for (const hexKey of hexKeys) {\n res.push(await this.encryptEncryptionKey(hexKey, key))\n }\n return res\n }\n\n async decryptEncryptionKey(encrypted: string, key: CryptoKey): Promise {\n const probableKey = await this.primitives.AES.decrypt(key, b64_2ua(encrypted))\n if (!this.prefixVerification(probableKey)) {\n throw new Error('Invalid encryption key')\n }\n return ua2hex(probableKey.slice(this.decryptionValidatorBytes.length))\n }\n\n async decryptEncryptionKeys(delegation: SecureDelegation, key: CryptoKey): Promise {\n const res = []\n for (const encrypted of delegation.encryptionKeys ?? []) {\n res.push(await this.decryptEncryptionKey(encrypted, key))\n }\n return res\n }\n\n async encryptSecretId(secretId: string, key: CryptoKey): Promise {\n return ua2b64(await this.primitives.AES.encrypt(key, utf8_2ua(this.decryptionValidatorPrefix + secretId)))\n }\n\n async encryptSecretIds(secretIds: string[], key: CryptoKey): Promise {\n const res = []\n for (const secretId of secretIds) {\n res.push(await this.encryptSecretId(secretId, key))\n }\n return res\n }\n\n async decryptSecretId(encrypted: string, key: CryptoKey): Promise {\n const probableSecretId = ua2utf8(await this.primitives.AES.decrypt(key, b64_2ua(encrypted)))\n if (probableSecretId.substring(0, this.decryptionValidatorPrefix.length) !== this.decryptionValidatorPrefix) {\n throw new Error('Invalid secretID')\n }\n return probableSecretId.substring(this.decryptionValidatorPrefix.length)\n }\n\n async decryptSecretIds(delegation: SecureDelegation, key: CryptoKey): Promise {\n const res = []\n for (const encrypted of delegation.secretIds ?? []) {\n res.push(await this.decryptSecretId(encrypted, key))\n }\n return res\n }\n\n async encryptOwningEntityId(owningEntityId: string, key: CryptoKey): Promise {\n return ua2b64(await this.primitives.AES.encrypt(key, utf8_2ua(this.decryptionValidatorPrefix + owningEntityId)))\n }\n\n async encryptOwningEntityIds(owningEntityIds: string[], key: CryptoKey): Promise {\n const res = []\n for (const owningEntityId of owningEntityIds) {\n res.push(await this.encryptOwningEntityId(owningEntityId, key))\n }\n return res\n }\n\n async decryptOwningEntityId(encrypted: string, key: CryptoKey): Promise {\n const probableOwningEntityId = ua2utf8(await this.primitives.AES.decrypt(key, b64_2ua(encrypted)))\n if (probableOwningEntityId.substring(0, this.decryptionValidatorPrefix.length) !== this.decryptionValidatorPrefix) {\n throw new Error('Invalid Owning Entity id')\n }\n return probableOwningEntityId.substring(this.decryptionValidatorPrefix.length)\n }\n\n async decryptOwningEntityIds(delegation: SecureDelegation, key: CryptoKey): Promise {\n const res = []\n for (const encrypted of delegation.owningEntityIds ?? []) {\n res.push(await this.decryptOwningEntityId(encrypted, key))\n }\n return res\n }\n}\n","import { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { EncryptedEntityWithType, EntityWithDelegationTypeName } from '../utils/EntityWithDelegationTypeName'\nimport { LruTemporisedAsyncCache } from '../utils/lru-temporised-async-cache'\nimport { fingerprintV1toV2, fingerprintV2, hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from './utils'\nimport { ExchangeDataManager } from './ExchangeDataManager'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport { SecureDelegationsEncryption } from './SecureDelegationsEncryption'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { hex2ua, ua2hex } from '../utils'\nimport { AccessControlSecretUtils } from './AccessControlSecretUtils'\nimport { EntityShareOrMetadataUpdateRequest } from '../../icc-api/model/requests/EntityShareOrMetadataUpdateRequest'\nimport { EncryptedEntity, EncryptedEntityStub } from '../../icc-api/model/models'\nimport { SecureDelegation } from '../../icc-api/model/SecureDelegation'\nimport { EntitySharedMetadataUpdateRequest } from '../../icc-api/model/requests/EntitySharedMetadataUpdateRequest'\nimport EntryUpdateTypeEnum = EntitySharedMetadataUpdateRequest.EntryUpdateTypeEnum\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { SecurityMetadata } from '../../icc-api/model/SecurityMetadata'\nimport { ExchangeDataMapManager } from './ExchangeDataMapManager'\nimport { ShaVersion } from './RSA'\n\nexport class SecureDelegationsManager {\n constructor(\n private readonly exchangeDataManager: ExchangeDataManager,\n private readonly exchangeDataMapManager: ExchangeDataMapManager,\n private readonly secureDelegationsEncryption: SecureDelegationsEncryption,\n private readonly accessControlSecretUtils: AccessControlSecretUtils,\n private readonly userKeys: UserEncryptionKeysManager,\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly cryptoStrategies: CryptoStrategies,\n private readonly selfNeedsAnonymousDelegations: boolean\n ) {}\n\n private readonly dataOwnerInfoCache: LruTemporisedAsyncCache<\n string,\n {\n requiresAnonymousDelegations: boolean\n availablePublicKeysHexWithSha1: string[]\n availablePublicKeysHexWithSha256: string[]\n }\n > = new LruTemporisedAsyncCache(100, () => 30 * 60 * 1000)\n\n /**\n * Note: this method does not save the updated entity.\n * @param entity an entity, must already have secret foreign keys initialised.\n * @param entityType the type of the entity\n * @param secretIds the initial secret ids to include and share with the auto-delegations\n * @param owningEntityIds the initial owning entity ids to include and share with the auto-delegations\n * @param encryptionKeys the initial encryption keys to include and share with the auto-delegations\n * @param autoDelegations the data owners which will initially have access to the entity in addition to the current data owner and the access level\n * they will have on the entity.\n * @return the entity with the security metadata initialised for the provided parameters.\n */\n async entityWithInitialisedEncryptedMetadata(\n entity: T & { secretForeignKeys: string[] },\n entityType: EntityWithDelegationTypeName,\n secretIds: string[],\n owningEntityIds: string[],\n encryptionKeys: string[],\n autoDelegations: { [delegateId: string]: SecureDelegation.AccessLevelEnum }\n ): Promise {\n const entityWithType: EncryptedEntityWithType = { entity, type: entityType }\n const rootDelegationInfo = await this.makeSecureDelegationInfo(\n entityWithType,\n await this.dataOwnerApi.getCurrentDataOwnerId(),\n secretIds,\n encryptionKeys,\n owningEntityIds,\n AccessLevelEnum.WRITE,\n undefined\n )\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const otherDelegationsInfo: {\n delegationKey: string\n accessControlKeyHex: string\n delegation: SecureDelegation\n encryptedExchangeDataId: { [fp: string]: string } | undefined\n }[] = []\n for (const [delegateId, permissions] of Object.entries(autoDelegations)) {\n if (delegateId !== selfId) {\n otherDelegationsInfo.push(\n await this.makeSecureDelegationInfo(\n entityWithType,\n delegateId,\n secretIds,\n encryptionKeys,\n owningEntityIds,\n permissions,\n rootDelegationInfo.delegationKey\n )\n )\n }\n }\n const secureDelegations = Object.fromEntries(\n [rootDelegationInfo, ...otherDelegationsInfo].map(({ delegationKey, delegation }) => [delegationKey, delegation])\n )\n const newExchangeDataMaps = Object.fromEntries(\n otherDelegationsInfo\n .filter(({ encryptedExchangeDataId }) => !!encryptedExchangeDataId)\n .map(({ accessControlKeyHex, encryptedExchangeDataId }) => [accessControlKeyHex, encryptedExchangeDataId!])\n )\n await this.exchangeDataMapManager.createExchangeDataMaps(newExchangeDataMaps)\n return {\n ...entity,\n securityMetadata: new SecurityMetadata({ secureDelegations }),\n }\n }\n\n /**\n * Make a request for sharing an entity with a delegate or to update existing shared metadata by adding additional secretIds, encryptionKeys or\n * owningEntityIds if there is already some metadata shared between the current data owner and the delegate. In case there is already a delegation\n * for the delegate, and it already contains all the provided metadata, this method returns undefined, since there is no need to make any request to\n * share the provided data.\n * @param entityWithType an entity with type\n * @param delegateId the id of the delegate\n * @param shareSecretIds the secret ids to share\n * @param shareEncryptionKeys the encryption keys to share\n * @param shareOwningEntityIds the owning entity ids to share\n * @param newDelegationPermissions the permissions to grant to the delegate in case a new delegation needs to be created. If this method creates an\n * update request instead of a share request, this parameter is ignored.\n * @return the request to share the entity, or the request to update the shared metadata for the entity, or undefined if there is no need to update\n * the entity to allow the delegate to access the provided data.\n */\n async makeShareOrUpdateRequestParams(\n entityWithType: EncryptedEntityWithType,\n delegateId: string,\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[],\n newDelegationPermissions: EntityShareRequest.RequestedPermissionInternal\n ): Promise {\n const exchangeDataInfo = await this.exchangeDataManager.getOrCreateEncryptionDataTo(delegateId, false)\n const secureDelegationKey = await this.accessControlSecretUtils.secureDelegationKeyFor(exchangeDataInfo.accessControlSecret, entityWithType.type)\n const existingSecureDelegation = entityWithType.entity.securityMetadata?.secureDelegations?.[secureDelegationKey]\n if (existingSecureDelegation) {\n const updateParams = await this.makeUpdateRequestParams(\n secureDelegationKey,\n existingSecureDelegation,\n exchangeDataInfo,\n shareSecretIds,\n shareEncryptionKeys,\n shareOwningEntityIds\n )\n return updateParams ? { update: updateParams } : undefined\n } else {\n const accessControlKeys = ua2hex(\n await this.accessControlSecretUtils.accessControlKeyFor(exchangeDataInfo.accessControlSecret, entityWithType.type)\n )\n return {\n share: await this.makeShareRequestParams(\n exchangeDataInfo,\n accessControlKeys,\n delegateId,\n shareSecretIds,\n shareEncryptionKeys,\n shareOwningEntityIds,\n newDelegationPermissions\n ),\n }\n }\n }\n\n private async makeUpdateRequestParams(\n canonicalKey: string,\n existingDelegation: SecureDelegation,\n exchangeDataInfo: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey },\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[]\n ): Promise {\n const existingSecretIds = new Set(await this.secureDelegationsEncryption.decryptSecretIds(existingDelegation, exchangeDataInfo.exchangeKey))\n const existingEncryptionKeys = new Set(\n await this.secureDelegationsEncryption.decryptEncryptionKeys(existingDelegation, exchangeDataInfo.exchangeKey)\n )\n const existingOwningEntityIds = new Set(\n await this.secureDelegationsEncryption.decryptOwningEntityIds(existingDelegation, exchangeDataInfo.exchangeKey)\n )\n const newSecretIds = shareSecretIds.filter((id) => !existingSecretIds.has(id))\n const newEncryptionKeys = shareEncryptionKeys.filter((key) => !existingEncryptionKeys.has(key))\n const newOwningEntityIds = shareOwningEntityIds.filter((id) => !existingOwningEntityIds.has(id))\n if (newSecretIds.length || newEncryptionKeys.length || newOwningEntityIds.length) {\n const encryptedNewSecretIds = await this.secureDelegationsEncryption.encryptSecretIds(newSecretIds, exchangeDataInfo.exchangeKey)\n const encryptedNewEncryptionKeys = await this.secureDelegationsEncryption.encryptEncryptionKeys(newEncryptionKeys, exchangeDataInfo.exchangeKey)\n const encryptedNewOwningEntityIds = await this.secureDelegationsEncryption.encryptOwningEntityIds(\n newOwningEntityIds,\n exchangeDataInfo.exchangeKey\n )\n return new EntitySharedMetadataUpdateRequest({\n metadataAccessControlHash: canonicalKey,\n secretIds: Object.fromEntries(encryptedNewSecretIds.map((id) => [id, EntryUpdateTypeEnum.CREATE])),\n encryptionKeys: Object.fromEntries(encryptedNewEncryptionKeys.map((key) => [key, EntryUpdateTypeEnum.CREATE])),\n owningEntityIds: Object.fromEntries(encryptedNewOwningEntityIds.map((id) => [id, EntryUpdateTypeEnum.CREATE])),\n })\n } else return undefined\n }\n\n private async makeShareRequestParams(\n exchangeDataInfo: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey },\n accessControlKey: string,\n delegateId: string,\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[],\n newDelegationPermissions: EntityShareRequest.RequestedPermissionInternal\n ): Promise {\n return new EntityShareRequest({\n ...(await this.makeSecureDelegationEncryptedData(exchangeDataInfo, delegateId, shareSecretIds, shareEncryptionKeys, shareOwningEntityIds)),\n requestedPermissions: newDelegationPermissions,\n accessControlKeys: [accessControlKey],\n })\n }\n\n private async makeSecureDelegationInfo(\n entity: EncryptedEntityWithType,\n delegateId: string,\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[],\n permissions: AccessLevelEnum,\n parentDelegationKey: string | undefined\n ): Promise<{\n delegationKey: string\n accessControlKeyHex: string\n delegation: SecureDelegation\n encryptedExchangeDataId: { [fp: string]: string } | undefined\n }> {\n // Be wary of explicit delegator and explicit delegate\n const exchangeDataInfo = await this.exchangeDataManager.getOrCreateEncryptionDataTo(delegateId, false)\n const accessControlHash = await this.accessControlSecretUtils.secureDelegationKeyFor(exchangeDataInfo.accessControlSecret, entity.type)\n const accessControlKey = ua2hex(await this.accessControlSecretUtils.accessControlKeyFor(exchangeDataInfo.accessControlSecret, entity.type))\n const encryptedDelegationInfo = await this.makeSecureDelegationEncryptedData(\n exchangeDataInfo,\n delegateId,\n shareSecretIds,\n shareEncryptionKeys,\n shareOwningEntityIds\n )\n const delegation = new SecureDelegation({\n delegator: encryptedDelegationInfo?.explicitDelegator,\n delegate: encryptedDelegationInfo?.explicitDelegate,\n secretIds: encryptedDelegationInfo?.secretIds,\n encryptionKeys: encryptedDelegationInfo?.encryptionKeys,\n owningEntityIds: encryptedDelegationInfo?.owningEntityIds,\n parentDelegations: parentDelegationKey ? [parentDelegationKey] : undefined,\n exchangeDataId: encryptedDelegationInfo?.exchangeDataId,\n encryptedExchangeDataId: encryptedDelegationInfo?.encryptedExchangeDataId,\n permissions: permissions,\n })\n return {\n delegationKey: accessControlHash,\n accessControlKeyHex: accessControlKey,\n delegation,\n encryptedExchangeDataId: encryptedDelegationInfo?.encryptedExchangeDataId,\n }\n }\n\n private async makeSecureDelegationEncryptedData(\n exchangeDataInfo: { exchangeData: ExchangeData; accessControlSecret: string; exchangeKey: CryptoKey },\n delegateId: string,\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[]\n ): Promise<{\n explicitDelegator?: string\n explicitDelegate?: string\n secretIds?: string[]\n encryptionKeys?: string[]\n owningEntityIds?: string[]\n exchangeDataId?: string\n encryptedExchangeDataId?: { [fp: string]: string } // TODO if secure delegation info, check cache before calculating\n }> {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const exchangeDataIdInfo =\n delegateId === selfId\n ? this.makeExchangeDataIdInfoForSelf(selfId, exchangeDataInfo.exchangeData)\n : await this.makeExchangeDataIdInfoForDelegate(selfId, delegateId, exchangeDataInfo.exchangeData)\n const encryptedSecretIds = await this.secureDelegationsEncryption.encryptSecretIds(shareSecretIds, exchangeDataInfo.exchangeKey)\n const encryptedEncryptionKeys = await this.secureDelegationsEncryption.encryptEncryptionKeys(shareEncryptionKeys, exchangeDataInfo.exchangeKey)\n const encryptedOwningEntityIds = await this.secureDelegationsEncryption.encryptOwningEntityIds(shareOwningEntityIds, exchangeDataInfo.exchangeKey)\n return {\n ...exchangeDataIdInfo,\n secretIds: encryptedSecretIds,\n encryptionKeys: encryptedEncryptionKeys,\n owningEntityIds: encryptedOwningEntityIds,\n }\n }\n\n private async makeExchangeDataIdInfoForDelegate(\n selfId: string,\n delegateId: string,\n exchangeData: ExchangeData\n ): Promise<{\n exchangeDataId?: string\n encryptedExchangeDataId?: { [fp: string]: string }\n explicitDelegator?: string\n explicitDelegate?: string\n }> {\n const delegateInfo = await this.getDataOwnerInfo(delegateId)\n if (!delegateInfo.requiresAnonymousDelegations && !this.selfNeedsAnonymousDelegations) {\n return {\n explicitDelegator: selfId,\n explicitDelegate: delegateId,\n exchangeDataId: exchangeData.id,\n }\n } else if (delegateInfo.requiresAnonymousDelegations && !this.selfNeedsAnonymousDelegations) {\n return {\n explicitDelegator: selfId,\n encryptedExchangeDataId: await this.secureDelegationsEncryption.encryptExchangeDataId(\n exchangeData.id!,\n Object.fromEntries(this.userKeys.getSelfVerifiedKeys().map((keyInfo) => [fingerprintV1toV2(keyInfo.fingerprint), keyInfo.pair.publicKey]))\n ),\n }\n } else if (!delegateInfo.requiresAnonymousDelegations && this.selfNeedsAnonymousDelegations) {\n /**\n * Important: this requires that the exchange data signature also validates the authenticity of the public keys included in there.\n */\n const fingerprintsOfVerifiedExchangeData = new Set(Object.keys(exchangeData.exchangeKey))\n const delegateVerifiedKeys: { [fp: string]: CryptoKey } = {}\n for (const keyHex of [...delegateInfo.availablePublicKeysHexWithSha1, ...delegateInfo.availablePublicKeysHexWithSha256]) {\n const currFp = fingerprintV2(keyHex)\n const shaVersion = delegateInfo.availablePublicKeysHexWithSha1.includes(keyHex) ? ShaVersion.Sha1 : ShaVersion.Sha256\n if (fingerprintsOfVerifiedExchangeData.has(currFp)) {\n delegateVerifiedKeys[currFp] = await this.primitives.RSA.importKey('spki', hex2ua(keyHex), ['encrypt'], shaVersion)\n }\n }\n if (!Object.keys(delegateVerifiedKeys).length)\n throw new Error('Illegal state: could not find any verified key for delegate in verified exchange data.')\n return {\n explicitDelegate: delegateId,\n encryptedExchangeDataId: await this.secureDelegationsEncryption.encryptExchangeDataId(exchangeData.id!, delegateVerifiedKeys),\n }\n } else return {}\n }\n\n private makeExchangeDataIdInfoForSelf(\n selfId: string,\n exchangeData: ExchangeData\n ): {\n exchangeDataId?: string\n encryptedExchangeDataId?: { [fp: string]: string }\n explicitDelegator?: string\n explicitDelegate?: string\n } {\n if (this.selfNeedsAnonymousDelegations) {\n return {}\n } else {\n return {\n exchangeDataId: exchangeData.id,\n explicitDelegator: selfId,\n explicitDelegate: selfId,\n }\n }\n }\n\n private async getDataOwnerInfo(dataOwnerId: string) {\n return this.dataOwnerInfoCache.get(dataOwnerId, async () => {\n const dataOwnerWithType = await this.dataOwnerApi.getCryptoActorStub(dataOwnerId)\n return {\n item: {\n requiresAnonymousDelegations: this.cryptoStrategies.dataOwnerRequiresAnonymousDelegation(dataOwnerWithType),\n availablePublicKeysHexWithSha1: Array.from(hexPublicKeysWithSha1Of(dataOwnerWithType.stub)),\n availablePublicKeysHexWithSha256: Array.from(hexPublicKeysWithSha256Of(dataOwnerWithType.stub)),\n },\n }\n })\n }\n}\n","import { b64_2ab, EncryptedEntityWithType, EntityWithDelegationTypeName, hex2ua, ua2string } from '../utils'\nimport { ExchangeKeysManager } from './ExchangeKeysManager'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { Delegation } from '../../icc-api/model/Delegation'\nimport { ExchangeDataManager } from './ExchangeDataManager'\nimport { ExchangeDataMapManager } from './ExchangeDataMapManager'\nimport { SecureDelegationsEncryption } from './SecureDelegationsEncryption'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { EncryptedEntity, EncryptedEntityStub, SecureDelegation } from '../../icc-api/model/models'\nimport { ExchangeData } from '../../icc-api/model/internal/ExchangeData'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\n\nexport type DelegationMembersDetails = {\n delegator: string | undefined\n delegate: string | undefined\n fullyExplicit: boolean\n accessControlSecret: string | undefined\n accessLevel: AccessLevelEnum\n}\n\nexport enum SecurityMetadataType {\n SecretId = 1, // Start from 1, avoids issues with SecretId being falsy\n EncryptionKey,\n OwningEntityId,\n}\n\nexport class SecurityMetadataDecryptor {\n constructor(\n private readonly exchangeKeysManager: ExchangeKeysManager,\n private readonly primitives: CryptoPrimitives,\n private readonly exchangeData: ExchangeDataManager,\n private readonly exchangeDataMap: ExchangeDataMapManager,\n private readonly secureDelegationsEncryption: SecureDelegationsEncryption,\n private readonly dataOwnerApi: IccDataOwnerXApi\n ) {}\n\n async decryptLegacyDelegations(\n entities: (EncryptedEntityStub | EncryptedEntity)[],\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ [entityId: string]: string[] }> {\n // For legacy delegations there is no advantage in doing stuff in bulk.\n const res: { [entityId: string]: string[] } = {}\n for (const e of entities) {\n const allDecrypted = await this.extractFromLegacyDelegations(e, dataOwnersHierarchySubset, metadataType)\n const deduplicatedDecrypted = new Set(allDecrypted.map((x) => x.decrypted))\n res[e.id!] = [...deduplicatedDecrypted]\n }\n return res\n }\n\n private async extractFromLegacyDelegations(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ decrypted: string; dataOwnersWithAccess: string[] }[]> {\n if (!dataOwnersHierarchySubset.length) throw new Error(\"`dataOwnersHierarchySubset` can't be empty\")\n let delegations: { [delegateId: string]: Delegation[] }\n let validateDecrypted: (result: string) => Promise = (x) => Promise.resolve(!!x)\n let mapDecrypted: (result: string) => string = (x) => x\n switch (metadataType) {\n case SecurityMetadataType.SecretId:\n delegations = entity.delegations ?? {}\n break\n case SecurityMetadataType.EncryptionKey:\n delegations = entity.encryptionKeys ?? {}\n validateDecrypted = async (key) => {\n if (!/^[0-9A-Fa-f\\-]+$/g.test(key)) return false\n try {\n await this.primitives.AES.importKey('raw', hex2ua(key.replace(/-/g, '')))\n return true\n } catch (e) {\n console.warn(`Could not import key ${key} as an encryption key.`, e)\n return false\n }\n }\n mapDecrypted = (key) => key.replace(/-/g, '')\n break\n case SecurityMetadataType.OwningEntityId:\n delegations = entity.cryptedForeignKeys ?? {}\n break\n default:\n throw new Error(`Internal error: invalid SecurityMetadataType ${metadataType}`)\n }\n const delegationsWithOwner = Object.entries(delegations).flatMap(([delegateId, delegations]) =>\n dataOwnersHierarchySubset.some((dataOwnerId) => dataOwnerId === delegateId)\n ? this.populateLegacyDelegationDelegate(delegateId, delegations)\n : this.populateLegacyDelegationDelegate(\n delegateId,\n delegations.filter((d) => dataOwnersHierarchySubset.some((dataOwnerId) => d.owner === dataOwnerId))\n )\n )\n const res: { decrypted: string; dataOwnersWithAccess: string[] }[] = []\n for (const delegation of delegationsWithOwner) {\n const decrypted = await this.tryDecryptLegacyDelegation(delegation, (k) => validateDecrypted(k))\n if (decrypted)\n res.push({\n decrypted: mapDecrypted(decrypted),\n dataOwnersWithAccess: delegation.owner ? [delegation.owner, delegation.delegatedTo!] : [delegation.delegatedTo!],\n })\n }\n return res\n }\n\n private populateLegacyDelegationDelegate(delegateId: string, delegations: Delegation[]): Delegation[] {\n return delegations.map((d) => (d.delegatedTo === delegateId ? d : { ...d, delegatedTo: delegateId }))\n }\n\n private async tryDecryptLegacyDelegation(\n delegation: Delegation,\n validateDecrypted: (result: string) => Promise\n ): Promise {\n const exchangeKeys = await this.exchangeKeysManager.getDecryptionExchangeKeysFor(delegation.owner!, delegation.delegatedTo!)\n for (const key of exchangeKeys) {\n try {\n // Format of encrypted key for any delegation should be entityId:key, but with the merging of entities the entityId might not match the\n // current id. As a checksum we are only verifying that the decrypted bytes can be represented as a string with exactly one ':'.\n // Additionally, we also have a validator that is specific for each type of delegation content (encryption key, secret id, ...)\n const decrypted = ua2string(await this.primitives.AES.decrypt(key, hex2ua(delegation.key!)))\n const decryptedSplit = decrypted.split(':')\n if (decryptedSplit.length === 2) {\n if (await validateDecrypted(decryptedSplit[1])) return decryptedSplit[1]\n } else {\n console.warn(\"Error in the decrypted delegation: content should contain exactly 1 ':', the delegation is ignored.\")\n }\n } catch (e) {\n // Do nothing: the delegation uses another exchange key owner->delegator\n }\n }\n }\n\n async decryptSecureDelegationsUsingCache(\n entities: (EncryptedEntityStub | EncryptedEntity)[],\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ [entityId: string]: string[] }> {\n const toSearchById: Set = new Set([])\n const toSearchByDelegationKey: Set = new Set([])\n for (const e of entities) {\n for (const [delegationKey, delegation] of Object.entries(e.securityMetadata?.secureDelegations ?? {})) {\n if (\n !delegation.delegator ||\n !delegation.delegate ||\n dataOwnersHierarchySubset.some((it) => it == delegation.delegator || it == delegation.delegate)\n ) {\n if (delegation.exchangeDataId) {\n toSearchById.add(delegation.exchangeDataId)\n } else {\n toSearchByDelegationKey.add(delegationKey)\n }\n }\n }\n }\n const cachedByExchangeDataId = await this.exchangeData.getDecryptionDataKeyByIds([...toSearchById], false)\n const cachedByDelegationKey = await this.exchangeData.getCachedDecryptionDataKeyByAccessControlHash([...toSearchByDelegationKey])\n const res: { [entityId: string]: string[] } = {}\n for (const entity of entities) {\n const currEntityRes: Set = new Set([])\n for (const [delegationKey, delegation] of Object.entries(entity.securityMetadata?.secureDelegations ?? {})) {\n const cached = delegation.exchangeDataId ? cachedByExchangeDataId[delegation.exchangeDataId] : cachedByDelegationKey[delegationKey]\n if (\n cached?.exchangeKey &&\n dataOwnersHierarchySubset.some((it) => it == cached?.exchangeData?.delegator || it == cached?.exchangeData?.delegate)\n ) {\n ;(await this.decryptSecureDelegationMetadata(delegation, metadataType, cached.exchangeKey)).forEach((decrypted) =>\n currEntityRes.add(decrypted)\n )\n }\n }\n res[entity.id!] = [...currEntityRes]\n }\n return res\n }\n\n hasSecurityMetadataOfType(delegation: SecureDelegation, metadataType: SecurityMetadataType): boolean {\n switch (metadataType) {\n case SecurityMetadataType.SecretId:\n return (delegation.secretIds ?? []).length > 0\n case SecurityMetadataType.EncryptionKey:\n return (delegation.encryptionKeys ?? []).length > 0\n case SecurityMetadataType.OwningEntityId:\n return (delegation.owningEntityIds ?? []).length > 0\n default:\n throw new Error('Internal error: invalid metadata type')\n }\n }\n\n async decryptSecureDelegationsUsingKnownExchangeData(\n entities: (EncryptedEntityStub | EncryptedEntity)[],\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ [entityId: string]: string[] }> {\n const toSearchById: Set = new Set([])\n for (const e of entities) {\n for (const delegation of Object.values(e.securityMetadata?.secureDelegations ?? {})) {\n if (dataOwnersHierarchySubset.some((it) => it == delegation.delegator || it == delegation.delegate)) {\n if (delegation.exchangeDataId && this.hasSecurityMetadataOfType(delegation, metadataType)) {\n toSearchById.add(delegation.exchangeDataId)\n }\n }\n }\n }\n const retrievedByExchangeDataId = toSearchById.size > 0 ? await this.exchangeData.getDecryptionDataKeyByIds([...toSearchById], true) : {}\n const res: { [entityId: string]: string[] } = {}\n for (const entity of entities) {\n const currEntityRes: Set = new Set([])\n for (const delegation of Object.values(entity.securityMetadata?.secureDelegations ?? {})) {\n const currDelegationExchangeData = delegation.exchangeDataId ? retrievedByExchangeDataId[delegation.exchangeDataId] : undefined\n if (currDelegationExchangeData?.exchangeKey) {\n ;(await this.decryptSecureDelegationMetadata(delegation, metadataType, currDelegationExchangeData.exchangeKey)).forEach((decrypted) =>\n currEntityRes.add(decrypted)\n )\n }\n }\n res[entity.id!] = [...currEntityRes]\n }\n return res\n }\n\n async decryptSecureDelegationsUsingExchangeDataMap(\n entities: (EncryptedEntityStub | EncryptedEntity)[],\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ [entityId: string]: string[] }> {\n const toSearchByExchangeDataMap: Set = new Set([])\n for (const e of entities) {\n for (const [delegationKey, delegation] of Object.entries(e.securityMetadata?.secureDelegations ?? {})) {\n if (dataOwnersHierarchySubset.some((it) => it == delegation.delegator || it == delegation.delegate)) {\n if (!delegation.exchangeDataId && this.hasSecurityMetadataOfType(delegation, metadataType)) {\n toSearchByExchangeDataMap.add(delegationKey)\n }\n }\n }\n }\n const exchangeDataMaps =\n toSearchByExchangeDataMap.size > 0 ? await this.exchangeDataMap.getExchangeDataMapBatch([...toSearchByExchangeDataMap]) : []\n const exchangeDataIdByDelegationKey: { [delegationKey: string]: string } = {}\n for (const exchangeDataMap of exchangeDataMaps) {\n const decrypted = await this.secureDelegationsEncryption.decryptExchangeDataId(exchangeDataMap.encryptedExchangeDataIds)\n if (decrypted) {\n exchangeDataIdByDelegationKey[exchangeDataMap.id] = decrypted\n }\n }\n if (Object.keys(exchangeDataIdByDelegationKey).length == 0) return {}\n const retrievedByExchangeDataId =\n Object.values(exchangeDataIdByDelegationKey).length > 0\n ? await this.exchangeData.getDecryptionDataKeyByIds([...new Set(Object.values(exchangeDataIdByDelegationKey))], true)\n : {}\n const res: { [entityId: string]: string[] } = {}\n for (const entity of entities) {\n const currEntityRes: Set = new Set([])\n for (const [delegationKey, delegation] of Object.entries(entity.securityMetadata?.secureDelegations ?? {})) {\n const exchangeDataId = exchangeDataIdByDelegationKey[delegationKey]\n const cached = exchangeDataId ? retrievedByExchangeDataId[exchangeDataId] : undefined\n if (cached?.exchangeKey) {\n ;(await this.decryptSecureDelegationMetadata(delegation, metadataType, cached.exchangeKey)).forEach((decrypted) =>\n currEntityRes.add(decrypted)\n )\n }\n }\n res[entity.id!] = [...currEntityRes]\n }\n return res\n }\n\n async decryptAll(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n const allExtractedWithDataOwners = [\n ...(await this.decryptAllLegacyDelegations(entity, dataOwnersHierarchySubset, metadataType)),\n ...(await this.decryptAllSecureDelegations(entity, dataOwnersHierarchySubset, metadataType)),\n ]\n return dataOwnersHierarchySubset.map((dataOwner) => {\n const decryptedEntriesForDataOwner = allExtractedWithDataOwners\n .filter((x) => x.dataOwnersWithAccess.some((d) => dataOwner == d))\n .map((x) => x.decrypted)\n return {\n ownerId: dataOwner,\n extracted: [...new Set(decryptedEntriesForDataOwner)],\n }\n })\n }\n\n async decryptAllLegacyDelegations(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ decrypted: string; dataOwnersWithAccess: string[] }[]> {\n return this.extractFromLegacyDelegations(entity, dataOwnersHierarchySubset, metadataType)\n }\n\n async decryptAllSecureDelegations(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[],\n metadataType: SecurityMetadataType\n ): Promise<{ decrypted: string; dataOwnersWithAccess: string[] }[]> {\n const secureDelegationEntries: [string, SecureDelegation][] = Object.entries(entity.securityMetadata?.secureDelegations ?? {})\n const toSearchByDelegationKey: string[] = secureDelegationEntries.flatMap(([delegationKey, delegation]): string[] => {\n if (!delegation.exchangeDataId) {\n return [delegationKey]\n } else {\n return []\n }\n })\n const exchangeDataByDelegationKey = await this.exchangeData.getCachedDecryptionDataKeyByAccessControlHash(toSearchByDelegationKey)\n const toSearchWithExchangeDataMap = secureDelegationEntries.flatMap(([delegationKey, delegation]): string[] => {\n if (\n !delegation.exchangeDataId &&\n dataOwnersHierarchySubset.some((it) => delegation.delegate == it || delegation.delegator == it) &&\n !exchangeDataByDelegationKey[delegationKey] &&\n this.hasSecurityMetadataOfType(delegation, metadataType)\n ) {\n return [delegationKey]\n } else {\n return []\n }\n })\n const exchangeDataMaps =\n toSearchWithExchangeDataMap.length > 0 ? await this.exchangeDataMap.getExchangeDataMapBatch(toSearchWithExchangeDataMap) : []\n const exchangeDataIdByDelegationKey: { [delegationKey: string]: string } = {}\n for (const exchangeDataMap of exchangeDataMaps) {\n const decrypted = await this.secureDelegationsEncryption.decryptExchangeDataId(exchangeDataMap.encryptedExchangeDataIds)\n if (decrypted) {\n exchangeDataIdByDelegationKey[exchangeDataMap.id] = decrypted\n }\n }\n const toSearchDirectlyById = secureDelegationEntries.flatMap(([delegationKey, delegation]): string[] => {\n if (\n delegation.exchangeDataId &&\n dataOwnersHierarchySubset.some((it) => delegation.delegate == it || delegation.delegator == it) &&\n !exchangeDataByDelegationKey[delegationKey] &&\n this.hasSecurityMetadataOfType(delegation, metadataType)\n ) {\n return [delegation.exchangeDataId]\n } else {\n return []\n }\n })\n const allExchangeDataIdToRetrieve = [...new Set([...toSearchDirectlyById, ...Object.values(exchangeDataIdByDelegationKey)])]\n const exchangeDataById =\n allExchangeDataIdToRetrieve.length > 0 ? await this.exchangeData.getDecryptionDataKeyByIds(allExchangeDataIdToRetrieve, true) : {}\n const allExtractedWithDataOwners: { decrypted: string; dataOwnersWithAccess: string[] }[] = []\n for (const [delegationKey, delegation] of secureDelegationEntries) {\n let exchangeData:\n | {\n exchangeKey: CryptoKey | undefined\n accessControlSecret: string | undefined\n exchangeData: ExchangeData\n }\n | undefined = undefined\n if (exchangeDataByDelegationKey[delegationKey]) {\n exchangeData = exchangeDataByDelegationKey[delegationKey]\n } else if (delegation.exchangeDataId) {\n exchangeData = exchangeDataById[delegation.exchangeDataId]\n } else if (exchangeDataIdByDelegationKey[delegationKey]) {\n exchangeData = exchangeDataById[exchangeDataIdByDelegationKey[delegationKey]]\n }\n if (exchangeData && exchangeData.exchangeKey) {\n const decrypted = await this.decryptSecureDelegationMetadata(delegation, metadataType, exchangeData.exchangeKey)\n for (const d of decrypted) {\n allExtractedWithDataOwners.push({\n decrypted: d,\n dataOwnersWithAccess: [exchangeData.exchangeData.delegator, exchangeData.exchangeData.delegate],\n })\n }\n }\n }\n return allExtractedWithDataOwners\n }\n\n async getDelegationMemberDetails(typedEntity: EncryptedEntityWithType): Promise<{\n [delegationKey: string]: DelegationMembersDetails\n }> {\n const res: { [delegationKey: string]: DelegationMembersDetails } = {}\n // 1. Add all explicit data owners, keep only delegations with at least an anonymous data owner to check later\n let remainingDelegations = Object.entries(typedEntity.entity.securityMetadata?.secureDelegations ?? {})\n let updatedRemainingDelegations: [string, SecureDelegation][] = []\n for (const delegationEntry of remainingDelegations) {\n const delegation = delegationEntry[1]\n if (delegation.delegator && delegation.delegate) {\n res[delegationEntry[0]] = {\n delegate: delegation.delegate,\n delegator: delegation.delegator,\n fullyExplicit: true,\n accessLevel: delegation.permissions,\n accessControlSecret: undefined,\n }\n } else {\n updatedRemainingDelegations.push(delegationEntry)\n }\n }\n remainingDelegations = updatedRemainingDelegations\n if (!remainingDelegations.length) return res\n updatedRemainingDelegations = []\n // 2. Attempt to identify the anonymous data owner of remaining delegations by checking if we have the exchange data cached by hash\n // Note: we can find exchange data by hash only if we could successfully decrypt it\n const cachedExchangeData = await this.exchangeData.getCachedDecryptionDataKeyByAccessControlHash(remainingDelegations.map((d) => d[0]))\n for (const delegationEntry of remainingDelegations) {\n const exchangeDataOfDelegation = cachedExchangeData[delegationEntry[0]]\n if (exchangeDataOfDelegation) {\n res[delegationEntry[0]] = {\n delegate: exchangeDataOfDelegation.exchangeData.delegate,\n delegator: exchangeDataOfDelegation.exchangeData.delegator,\n fullyExplicit: false,\n accessLevel: delegationEntry[1].permissions,\n accessControlSecret: exchangeDataOfDelegation.accessControlSecret,\n }\n } else {\n updatedRemainingDelegations.push(delegationEntry)\n }\n }\n remainingDelegations = updatedRemainingDelegations\n if (!remainingDelegations.length) return res\n updatedRemainingDelegations = []\n // 3. Attempt to identify the anonymous data owner of remaining delegations between us (or one of our parents) and an anonymous data owner\n const hierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n const remainingExchangeDataMaps = await this.exchangeDataMap.getExchangeDataMapBatch(\n remainingDelegations\n .filter(([_, delegation]) => hierarchy.some((x) => x == delegation.delegator || x == delegation.delegate))\n .map(([hash, _]) => hash)\n )\n const exchangeDataIdByDelegationKey: { [delegationKey: string]: string } = {}\n for (const exchangeDataMap of remainingExchangeDataMaps) {\n if (!!exchangeDataMap.encryptedExchangeDataIds) {\n const decrypted = await this.secureDelegationsEncryption.decryptExchangeDataId(exchangeDataMap.encryptedExchangeDataIds)\n if (decrypted) {\n exchangeDataIdByDelegationKey[exchangeDataMap.id] = decrypted\n }\n }\n }\n const exchangeDataByIds = await this.exchangeData.getDecryptionDataKeyByIds(Object.values(exchangeDataIdByDelegationKey), true)\n for (const [hash, delegation] of remainingDelegations) {\n if (hierarchy.some((x) => x === delegation.delegate || x === delegation.delegator)) {\n const dataId = exchangeDataIdByDelegationKey[hash]\n const exchangeDataInfo = dataId ? exchangeDataByIds[dataId] : undefined\n if (exchangeDataInfo) {\n res[hash] = {\n delegator: exchangeDataInfo.exchangeData.delegator,\n delegate: exchangeDataInfo.exchangeData.delegate,\n fullyExplicit: false,\n accessLevel: delegation.permissions,\n accessControlSecret: exchangeDataInfo.accessControlSecret,\n }\n } else {\n updatedRemainingDelegations.push([hash, delegation])\n }\n } else {\n updatedRemainingDelegations.push([hash, delegation])\n }\n }\n return {\n ...res,\n ...Object.fromEntries(\n updatedRemainingDelegations.map(([hash, secureDelegation]) => [\n hash,\n {\n delegator: secureDelegation.delegator,\n delegate: secureDelegation.delegate,\n fullyExplicit: false,\n accessLevel: secureDelegation.permissions,\n accessControlSecret: undefined,\n },\n ])\n ),\n }\n }\n\n async decryptSecureDelegationMetadata(delegation: SecureDelegation, metadataType: SecurityMetadataType, key: CryptoKey): Promise {\n switch (metadataType) {\n case SecurityMetadataType.SecretId:\n return this.secureDelegationsEncryption.decryptSecretIds(delegation, key)\n case SecurityMetadataType.EncryptionKey:\n return this.secureDelegationsEncryption.decryptEncryptionKeys(delegation, key)\n case SecurityMetadataType.OwningEntityId:\n return this.secureDelegationsEncryption.decryptOwningEntityIds(delegation, key)\n default:\n throw new Error(`Internal error: invalid SecurityMetadataType ${metadataType}`)\n }\n }\n\n async getEntityLegacyDelegationAccessLevel(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[]\n ): Promise {\n if (!dataOwnersHierarchySubset.length) throw new Error(\"`dataOwnersHierarchySubset` can't be empty\")\n // Legacy delegations provide write access\n if (Object.keys(entity.delegations ?? {}).some((delegate) => dataOwnersHierarchySubset.includes(delegate))) {\n return AccessLevelEnum.WRITE\n }\n return undefined\n }\n\n async getEntitySecureDelegationAccessLevel(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[]\n ): Promise {\n if (!dataOwnersHierarchySubset.length) throw new Error(\"`dataOwnersHierarchySubset` can't be empty\")\n // If the data owner is explicit all delegations he can access has his id. If the delegator is anonymous all delegations he can access are\n // accessible by hash. No mixed scenario possible.\n let accessibleDelegations: SecureDelegation[] = Object.values(entity.securityMetadata?.secureDelegations ?? {}).filter((secureDelegation) =>\n dataOwnersHierarchySubset.some((dataOwner) => dataOwner === secureDelegation.delegator || dataOwner === secureDelegation.delegate)\n )\n if (!accessibleDelegations.length) {\n const availableCanonicalHashes = Object.keys(\n await this.exchangeData.getCachedDecryptionDataKeyByAccessControlHash(Object.keys(entity.securityMetadata?.secureDelegations ?? {}))\n )\n accessibleDelegations = availableCanonicalHashes.map((hash) => (entity.securityMetadata?.secureDelegations ?? {})[hash])\n }\n const permissions = accessibleDelegations.map((secureDelegation) => secureDelegation.permissions)\n let maxLevel: AccessLevelEnum | undefined = undefined\n for (const permission of permissions) {\n if (permission === AccessLevelEnum.WRITE) {\n return AccessLevelEnum.WRITE\n }\n if (permission === AccessLevelEnum.READ) {\n maxLevel = AccessLevelEnum.READ\n }\n }\n return maxLevel\n }\n\n async getEntityAccessLevel(\n entity: EncryptedEntityStub | EncryptedEntity,\n dataOwnersHierarchySubset: string[]\n ): Promise {\n const legacyAccess = await this.getEntityLegacyDelegationAccessLevel(entity, dataOwnersHierarchySubset)\n if (legacyAccess != undefined) return legacyAccess\n return this.getEntitySecureDelegationAccessLevel(entity, dataOwnersHierarchySubset)\n }\n\n hasAnyEncryptionKeys(entity: EncryptedEntityStub | EncryptedEntity): boolean {\n return Object.keys(entity.encryptionKeys ?? {}).length > 0 || Object.keys(entity.securityMetadata?.secureDelegations ?? {}).length > 0\n }\n}\n","import { DataOwnerOrStub, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { KeyPair } from './RSA'\nimport { hex2ua, ua2hex } from '../utils'\nimport { ExchangeDataManager } from './ExchangeDataManager'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { fingerprintV1 } from './utils'\n\n/**\n * Allows to create or update shamir split keys.\n */\nexport class ShamirKeysManager {\n constructor(\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly encryptionKeysManager: UserEncryptionKeysManager,\n private readonly exchangeDataManager: ExchangeDataManager\n ) {}\n\n /**\n * Get information on existing private keys splits for the provided data owner. For each private key of the provided data owner which has been\n * split using the Shamir sharing algorithm gives the list of the notaries (other data owners) which hold a copy of the key part.\n * @param dataOwner a data owner\n * @return the existing splits for the current data owner as a publicKeyFingerprint -> notariesIds object\n */\n getExistingSplitsInfo(dataOwner: DataOwnerOrStub): { [keyPairFingerprint: string]: string[] } {\n const legacyPartitionDelegates = Object.keys(dataOwner.privateKeyShamirPartitions ?? {})\n if (legacyPartitionDelegates.length > 0) {\n const fp = dataOwner.publicKey && fingerprintV1(dataOwner.publicKey)\n if (!fp) {\n console.error('Invalid data owner: the owner has legacy key partitions but no legacy key.')\n } else return { [fp]: legacyPartitionDelegates }\n }\n return {}\n }\n\n /**\n * Creates, updates or deletes shamir splits for keys of the current data owner. Any request to update the splits for a specific key will completely\n * replace any existing data on that split (all previous notaries will be ignored).\n * Note: currently you can only split the legacy key pair.\n * @param keySplitsToUpdate the fingerprints of key pairs which will have updated/new splits and the details on how to create the updated splits.\n * @param keySplitsToDelete the fingerprints or hex-encoded spki public keys which will not be shared anymore.\n * @throws if the parameters refer to non-existing or unavailable keys, have split creation details, or if they request to delete a non-existing\n * split.\n */\n async updateSelfSplits(\n keySplitsToUpdate: { [publicKeyHexOrFp: string]: { notariesIds: string[]; minShares: number } },\n keySplitsToDelete: string[]\n ): Promise {\n const self = CryptoActorStubWithType.fromDataOwner(await this.dataOwnerApi.getCurrentDataOwner())\n const toUpdateSet = new Set(Object.keys(keySplitsToUpdate).map((x) => fingerprintV1(x)))\n const toDeleteSet = new Set(Object.keys(keySplitsToDelete).map((x) => fingerprintV1(x)))\n const intersection = Array.from(toDeleteSet).filter((x) => toUpdateSet.has(x))\n const existingSplits = new Set(Object.keys(this.getExistingSplitsInfo(self.stub)))\n const allKeys = this.encryptionKeysManager.getDecryptionKeys()\n if (toDeleteSet.size !== keySplitsToDelete.length || toUpdateSet.size !== Object.keys(keySplitsToUpdate).length || intersection.length > 0)\n throw new Error(`Duplicate keys in input:\\nkeySplitsToUpdate: ${keySplitsToUpdate}\\nkeySplitsToDelete: ${keySplitsToDelete}`)\n Object.entries(keySplitsToUpdate).forEach(([key, params]) => this.validateShamirParams(key, params))\n if (!Array.from(existingSplits).every((x) => existingSplits.has(x))) {\n throw new Error(`Requested to delete non-existing split.\\nexistingSplits: ${Array.from(existingSplits)}\\ntoDelete:${Array.from(toDeleteSet)}`)\n }\n if (Array.from(toUpdateSet).some((x) => !allKeys[x])) {\n throw new Error(`Private key is not available for some of the requested key split updates. ${keySplitsToUpdate}`)\n }\n const delegatesKeys: { [delegateId: string]: CryptoKey } = {}\n let updatedSelf = self\n for (const delegateId of new Set(Object.values(keySplitsToUpdate).flatMap((x) => x.notariesIds))) {\n const res = await this.exchangeDataManager.getOrCreateEncryptionDataTo(delegateId, false)\n delegatesKeys[delegateId] = res.exchangeKey\n }\n for (const [key, params] of Object.entries(keySplitsToUpdate)) {\n updatedSelf = await this.updateKeySplit(updatedSelf, fingerprintV1(key), params.notariesIds, params.minShares, delegatesKeys, allKeys)\n }\n for (const keyFp of toDeleteSet) {\n updatedSelf = this.deleteKeySplit(updatedSelf, keyFp)\n }\n return await this.dataOwnerApi.modifyCryptoActorStub(updatedSelf)\n }\n\n /*TODO\n * Get suggested recovery keys: analyse transfer keys and shamir to get keys which should be shared with shamir for optimal recovery.\n */\n\n private validateShamirParams(key: string, params: { notariesIds: string[]; minShares: number }) {\n if (params.notariesIds.length > 0) {\n if (params.minShares > params.notariesIds.length) {\n throw new Error(`Invalid parameters for key ${key}: min shares can't be greater than the number of delegates. ${params}`)\n }\n } else throw new Error(`Invalid parameters for key ${key}: must have at least one delegate. ${params}`)\n }\n\n private deleteKeySplit(dataOwner: CryptoActorStubWithType, keyFp: string): CryptoActorStubWithType {\n if (!dataOwner.stub.publicKey || keyFp !== fingerprintV1(dataOwner.stub.publicKey)) {\n throw new Error('Currently it is possible to use shamir splits only for the legacy public key')\n }\n return {\n type: dataOwner.type,\n stub: {\n ...dataOwner.stub,\n privateKeyShamirPartitions: {},\n },\n }\n }\n\n private async updateKeySplit(\n dataOwner: CryptoActorStubWithType,\n keyFp: string,\n delegateIds: string[],\n minShares: number,\n delegatesKeys: { [p: string]: CryptoKey },\n allKeys: { [p: string]: KeyPair }\n ): Promise {\n if (!dataOwner.stub.publicKey || keyFp !== fingerprintV1(dataOwner.stub.publicKey)) {\n throw new Error('Currently it is possible to use shamir splits only for the legacy public key')\n }\n return {\n type: dataOwner.type,\n stub: {\n ...dataOwner.stub,\n privateKeyShamirPartitions: await this.createPartitionsFor(allKeys[keyFp], delegateIds, minShares, delegatesKeys),\n },\n }\n }\n\n private async createPartitionsFor(\n keyPair: KeyPair,\n delegateIds: string[],\n minShares: number,\n delegatesKeys: { [p: string]: CryptoKey }\n ): Promise<{ [delegateId: string]: string }> {\n const exportedKey = await this.primitives.RSA.exportKey(keyPair.privateKey, 'pkcs8')\n if (delegateIds.length == 1) {\n return await this.encryptShares([exportedKey], delegateIds, delegatesKeys)\n } else {\n const exportedKeysHex = ua2hex(exportedKey)\n const stringShares = this.primitives.shamir.share(exportedKeysHex, delegateIds.length, minShares)\n const paddedStringShares = stringShares.map((x) => `f${x}`) // Shares are uneven length, apart from that they are perfect hexes\n for (const share of paddedStringShares) {\n if (!/^(?:[0-9a-f][0-9a-f])+$/g.test(share)) throw new Error('Unexpected result of shamir split: padded shares should be a valid hex value')\n if (share !== ua2hex(hex2ua(share))) throw new Error('Unexpected result with encoding-decoding share')\n }\n return await this.encryptShares(\n paddedStringShares.map((x) => hex2ua(x)),\n delegateIds,\n delegatesKeys\n )\n }\n }\n\n private async encryptShares(\n shares: ArrayBuffer[],\n delegateIds: string[],\n delegatesKeys: { [p: string]: CryptoKey }\n ): Promise<{ [delegateId: string]: string }> {\n return delegateIds.reduce(\n async (acc, delegateId, index) => ({\n ...(await acc),\n [delegateId]: ua2hex(await this.primitives.AES.encrypt(delegatesKeys[delegateId], shares[index])),\n }),\n Promise.resolve({} as { [delegateId: string]: string })\n )\n }\n}\n","/**\n * Specifies a behaviour for the sharing of encryption keys or owning entity ids in the extended apis 'share' methods.\n */\nexport enum ShareMetadataBehaviour {\n /**\n * The method must share the metadata with the delegate. If this is not possible, because for example the current user has no access to this kind of\n * metadata, the method will throw an error.\n */\n REQUIRED = 'REQUIRED',\n /**\n * The method must share the metadata with the delegate if available. If this is not possible, because for example the current user has no access to\n * this kind of metadata, the method will simply not share this metadata.\n */\n IF_AVAILABLE = 'IF_AVAILABLE',\n /**\n * The method must not share the metadata with the delegate, even if the current data owner can access it.\n */\n NEVER = 'NEVER',\n}\n","import { KeyPair, ShaVersion } from './RSA'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { ua2hex } from '../utils'\nimport { UserEncryptionKeysManager } from './UserEncryptionKeysManager'\nimport { reachSetsAcyclic, StronglyConnectedGraph } from '../utils/graph-utils'\nimport { fingerprintToPublicKeysMapOf, fingerprintV1, loadPublicKeys, transferKeysFpGraphOf, fingerprintIsV1, fingerprintV1toV2 } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { BaseExchangeDataManager } from './BaseExchangeDataManager'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\n/**\n * @internal this class is intended only for internal use and may be changed without notice.\n * Allows to create new transfer keys.\n */\nexport class TransferKeysManager {\n constructor(\n private readonly primitives: CryptoPrimitives,\n private readonly baseExchangeDataManager: BaseExchangeDataManager,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly encryptionKeysManager: UserEncryptionKeysManager,\n private readonly icureStorage: IcureStorageFacade\n ) {}\n\n /**\n * Analyses the transfer keys graph and creates new transfer keys which allow to improve data accessibility from other devices.\n * For security reasons transfer keys will only be created between keys verified by the user, but this will be done ignoring any existing edges from\n * unverified keys to verified keys.\n * @param self the current data owner.\n * @return the updated data owner.\n */\n async updateTransferKeys(self: CryptoActorStubWithType): Promise {\n const newEdgesByTarget = await this.getNewVerifiedTransferKeysEdges(self)\n if (!newEdgesByTarget.length) return\n const selfId = self.stub.id!\n const fpToPublicKey = fingerprintToPublicKeysMapOf(self.stub, ShaVersion.Sha1)\n const fpToPublicKeyWithSha256 = fingerprintToPublicKeysMapOf(self.stub, ShaVersion.Sha256)\n const verifiedFps = new Set(this.encryptionKeysManager.getSelfVerifiedKeys().map((x) => x.fingerprint))\n const allVerifiedSourcesAndTarget = Array.from(\n new Set(\n newEdgesByTarget.flatMap((x) =>\n // Sources are guaranteed to be verified, but target may not be\n verifiedFps.has(x.targetFp) ? [x.targetFp, ...x.sources] : x.sources\n )\n )\n )\n const newExchangeKeyPublicKeys = allVerifiedSourcesAndTarget.map((fp) => fpToPublicKey[fp]).filter((key) => !!key)\n const newExchangeKeyPublicKeysWithSha256 = allVerifiedSourcesAndTarget.map((fp) => fpToPublicKeyWithSha256[fp]).filter((key) => !!key)\n const createdExchangeData = await this.baseExchangeDataManager.createExchangeData(\n selfId,\n Object.fromEntries(this.encryptionKeysManager.getSelfVerifiedKeys().map((x): [string, CryptoKey] => [x.fingerprint, x.pair.privateKey])),\n {\n ...(await loadPublicKeys(this.primitives.RSA, newExchangeKeyPublicKeys, ShaVersion.Sha1)),\n ...(await loadPublicKeys(this.primitives.RSA, newExchangeKeyPublicKeysWithSha256, ShaVersion.Sha256)),\n }\n )\n let updatedTransferKeys = self.stub.transferKeys ?? {}\n for (const newEdges of newEdgesByTarget) {\n const encryptedTransferKey = await this.encryptTransferKey(newEdges.target, createdExchangeData.exchangeKey)\n updatedTransferKeys = newEdges.sources.reduce((acc, candidateFp) => {\n const existingKeys = { ...(acc[candidateFp] ?? {}) }\n existingKeys[newEdges.targetFp] = encryptedTransferKey\n acc[candidateFp] = existingKeys\n return acc\n }, updatedTransferKeys)\n }\n await this.dataOwnerApi.modifyCryptoActorStub({\n stub: {\n ...self.stub,\n transferKeys: updatedTransferKeys,\n },\n type: self.type,\n })\n }\n\n // encrypts a transfer key in pkcs8 format using an exchange key, returns the hex representation\n private async encryptTransferKey(transferKey: KeyPair, exchangeKey: CryptoKey): Promise {\n const exportedKey = await this.primitives.RSA.exportKey(transferKey.privateKey, 'pkcs8')\n return ua2hex(await this.primitives.AES.encrypt(exchangeKey, exportedKey))\n }\n\n // all public keys would go to the stored keys -> no need for specifying the key.\n // Result only includes the acyclic label, not the full group\n private transferKeysCandidatesFp(keyToFp: string, graph: StronglyConnectedGraph): string[] {\n return Object.entries(reachSetsAcyclic(graph.acyclicGraph))\n .filter(([from, reachable]) => {\n const currGroup = graph.acyclicLabelToGroup[from] ?? [from]\n const reachableOriginal = new Set(Array.from(reachable).flatMap((x) => graph.acyclicLabelToGroup[x] ?? [x]))\n return !currGroup.includes(keyToFp) && !reachableOriginal.has(keyToFp)\n })\n .map((x) => x[0])\n }\n\n private async transferTargetKeys(\n keyManager: UserEncryptionKeysManager,\n graph: StronglyConnectedGraph\n ): Promise<{ fingerprint: string; pair: KeyPair }[]> {\n const availableGroups = new Set(Object.keys(keyManager.getDecryptionKeys()).map((x) => graph.originalLabelToAcyclicLabel[x] ?? x))\n const groupsReachableFromAvailable = new Set(\n Object.entries(graph.acyclicGraph).flatMap(([source, reachables]) => (availableGroups.has(source) ? Array.from(reachables) : []))\n )\n const targetCandidates = Array.from(availableGroups).filter((x) => !groupsReachableFromAvailable.has(x))\n const verifiedFps = new Set(keyManager.getSelfVerifiedKeys().map((x) => x.fingerprint))\n return targetCandidates.map((candidateFp) => {\n const candidateGroup = graph.acyclicLabelToGroup[candidateFp] ?? [candidateFp] // May not be part of transfer keys graph yet\n const bestCandidateOfGroup = candidateGroup.find((x) => verifiedFps.has(x)) ?? candidateFp\n return { fingerprint: bestCandidateOfGroup, pair: keyManager.getKeyPairForFingerprint(bestCandidateOfGroup)!.pair }\n })\n }\n\n // Decides the best edges considering the verified public keys.\n private async getNewVerifiedTransferKeysEdges(self: CryptoActorStubWithType): Promise<\n {\n sources: string[]\n target: KeyPair\n targetFp: string\n }[]\n > {\n const verifiedKeysFpSet = new Set(this.encryptionKeysManager.getSelfVerifiedKeys().map((x) => x.fingerprint))\n Object.entries(await this.icureStorage.loadSelfVerifiedKeys(self.stub.id!)).forEach(([key, verified]) => {\n if (verified) verifiedKeysFpSet.add(fingerprintV1(key))\n })\n if (verifiedKeysFpSet.size == 0) return []\n const graph = transferKeysFpGraphOf(self.stub)\n // 1. Choose keys available in this device which should be reachable from all other verified keys\n const targetKeys = await this.transferTargetKeys(this.encryptionKeysManager, graph)\n const res = []\n for (const { fingerprint: targetKeyFp, pair: targetKey } of targetKeys) {\n // 2. Find groups which can't reach the existing target keys\n const candidatesFp = this.transferKeysCandidatesFp(targetKeyFp, graph)\n // 3. Keep only groups which contain at least a verified candidate\n const verifiedGroupCandidates = candidatesFp.filter((candidate) =>\n graph.acyclicLabelToGroup[candidate].some((candidateGroupMember) => verifiedKeysFpSet.has(candidateGroupMember))\n )\n const verifiedCandidatesSet = new Set(verifiedGroupCandidates)\n if (verifiedCandidatesSet.size == 0) continue\n // 4. Drop all candidates which can already reach another candidate group: it is sufficient to create a transfer key from that group.\n const reachSets = reachSetsAcyclic(graph.acyclicGraph)\n const optimizedCandidates = verifiedGroupCandidates.filter((candidate) =>\n Array.from(reachSets[candidate]).every((reachableNode) => !verifiedCandidatesSet.has(reachableNode))\n )\n if (optimizedCandidates.length == 0) throw new Error('Check failed: at least one candidate should survive optimization')\n // 5. Transfer keys could also be faked: to make sure we are not giving access to unauthorised people we remap the candidates to a verified public\n // keys\n const verifiedOptimizedCandidates = optimizedCandidates.map((candidate) => {\n const res = graph.acyclicLabelToGroup[candidate].find((groupMemberFp) => verifiedKeysFpSet.has(groupMemberFp))\n if (!res) throw new Error('Check failed: optimized candidates groups should have at least a verified member')\n return res\n })\n res.push({\n sources: verifiedOptimizedCandidates,\n target: targetKey,\n targetFp: targetKeyFp,\n })\n }\n return res\n }\n}\n","import { DataOwnerOrStub, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyPair, ShaVersion } from './RSA'\nimport { ua2hex } from '../utils'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { fingerprintV1 } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { KeyRecovery } from './KeyRecovery'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { KeyPairRecoverer } from './KeyPairRecoverer'\n\ntype KeyPairData = { pair: KeyPair; isVerified: boolean; isDevice: boolean }\ntype KeyRecovererAndVerifier = (\n keysData: {\n dataOwner: DataOwnerWithType\n unknownKeys: string[]\n unavailableKeys: string[]\n }[]\n) => Promise<{\n [dataOwnerId: string]: {\n recoveredKeys: { [keyPairFingerprint: string]: KeyPair }\n keyAuthenticity: { [keyPairFingerprint: string]: boolean }\n }\n}>\nconst nothingKeyRecovererAndVerifier: KeyRecovererAndVerifier = (x) =>\n Promise.resolve(\n x.reduce(\n (acc, { dataOwner }) => ({ ...acc, [dataOwner.dataOwner.id!]: { recoveredKeys: {}, keyAuthenticity: {} } }),\n {} as {\n [dataOwnerId: string]: {\n recoveredKeys: { [keyPairFingerprint: string]: KeyPair }\n keyAuthenticity: { [keyPairFingerprint: string]: boolean }\n }\n }\n )\n )\ntype CurrentOwnerKeyGenerator = (self: DataOwnerWithType) => Promise | boolean>\n\n/**\n * Allows to manage public and private keys for the current user and his parent hierarchy.\n */\nexport class UserEncryptionKeysManager {\n private selfId: string | undefined\n private selfLegacyPublicKey: string | undefined\n private keysCache: { [selfOrParentId: string]: { [pubKeyFingerprint: string]: KeyPairData } } | undefined = undefined\n\n constructor(\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly icureStorage: IcureStorageFacade,\n private readonly keyRecovery: KeyRecovery,\n private readonly strategies: CryptoStrategies,\n private readonly initialiseParentKeys: boolean,\n private readonly keypairRecoverer: KeyPairRecoverer\n ) {}\n\n /**\n * @internal\n * Get all key pairs available for the current data owner and his parents.\n * @return an object with:\n * - `self` an object containing the current data owner id and the list of key pairs available for the current data owner with verification details.\n * - `parents` the list of parents to the current data owner with the list of key pairs available for each parent. The list is ordered from the\n * topmost ancestor (at index 0) to the direct parent of the current data owner (at the last index, may be 0).\n */\n async getCurrentUserHierarchyAvailableKeypairs(): Promise<{\n self: {\n dataOwnerId: string\n keys: { pair: KeyPair; verified: boolean }[]\n }\n parents: {\n dataOwnerId: string\n keys: { pair: KeyPair; verified: boolean }[]\n }[]\n }> {\n this.ensureInitialised()\n const hierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n const selfId = hierarchy[hierarchy.length - 1]\n const selfKeys = Object.values(this.keysCache![selfId]).map(({ pair, isVerified, isDevice }) => ({ pair, verified: isVerified || isDevice }))\n const remainingHierarchy = hierarchy.slice(0, hierarchy.length - 1)\n return {\n self: {\n dataOwnerId: selfId,\n keys: selfKeys,\n },\n parents: remainingHierarchy.map((x) => ({\n dataOwnerId: x,\n keys: Object.values(this.keysCache![x]).map(({ pair, isVerified, isDevice }) => ({ pair, verified: isVerified || isDevice })),\n })),\n }\n }\n\n /**\n * Get the public keys of available key pairs for the current user in hex-encoded spki representation (uses cached keys: no request is done to the\n * server).\n * By setting {@link verifiedOnly} to true only the public keys for verified key pairs will be returned: these will include only key pairs created\n * on this device or which have been verified using {@link CryptoStrategies} on this device.\n * @param verifiedOnly if true only the verified public keys will be returned.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise {\n this.ensureInitialised()\n let selectedData = Object.values(this.keysCache![this.selfId!])\n if (verifiedOnly) {\n selectedData = selectedData.filter((data) => data.isVerified || data.isDevice)\n }\n return await Promise.all(selectedData.map(async (keyData) => ua2hex(await this.primitives.RSA.exportKey(keyData.pair.publicKey, 'spki'))))\n }\n\n /**\n * Get the public keys of available key pairs for the current user and his parents in hex-encoded spki representation (uses cached keys: no request\n * is done to the server).\n * Note that this will also include unverified keys.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise {\n return await Promise.all(\n Object.values(this.keysCache!)\n .flatMap((pairsForParent) => Object.values(pairsForParent))\n .map(async (keyPairData) => ua2hex(await this.primitives.RSA.exportKey(keyPairData.pair.publicKey, 'spki')))\n )\n }\n\n /**\n * Get a key pair with the provided fingerprint if present.\n * @param fingerprint a key-pair/public-key fingerprint\n * @return the pair associated to the fingerprint and a boolean indicating if the pair is verified, if present, else undefined\n */\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair; verified: boolean } | undefined {\n const foundVerified = this.getSelfVerifiedKeys().find((x) => x.fingerprint === fingerprint)\n if (foundVerified) return { pair: foundVerified.pair, verified: true }\n const foundOther = this.getDecryptionKeys()[fingerprint]\n if (foundOther) return { pair: foundOther, verified: false }\n return undefined\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Initializes all keys for the current data owner. This method needs to be called before any other method of this class can be used.\n * @throws if the current user is not a data owner, or if there is no key and no new key could be created according to this manager crypt\n * strategies.\n * @return if a new key was created during initialisation the newly created key, else undefined.\n */\n async initialiseKeys(): Promise<{ newKeyPair: KeyPair; newKeyFingerprint: string } | undefined> {\n const newKey = await this.doLoadKeys(\n (x) => this.strategies.recoverAndVerifySelfHierarchyKeys(x, this.primitives, this.keypairRecoverer),\n (x) => this.strategies.generateNewKeyForDataOwner(x, this.primitives)\n )\n return newKey ? { newKeyPair: newKey.pair, newKeyFingerprint: newKey.fingerprint } : undefined\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Forces to reload keys for the current data owner. This could be useful if the data owner has logged in from another device in order to update the\n * transfer keys.\n * This method will complete only after keys have been reloaded successfully.\n */\n async reloadKeys(): Promise {\n await this.doLoadKeys(nothingKeyRecovererAndVerifier, (x) => {\n throw new Error(\"Can't create new keys at reload time: it should have already been created on initialisation\")\n })\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Get all verified key pairs for the current data owner which can safely be used for encryption. This includes all key pairs created on the current\n * device and all recovered key pairs which have been verified.\n * The keys returned by this method will be in the following order:\n * 1. Legacy key pair if it is verified\n * 2. All device key pais, in alphabetical order according to the fingerprint\n * 3. Other verified key pairs, in alphabetical order according to the fingerprint\n * @return all verified keys, in order.\n */\n getSelfVerifiedKeys(): { fingerprint: string; pair: KeyPair }[] {\n this.ensureInitialised()\n const selfKeys = this.keysCache![this.selfId!]\n const allKeysEntries = Object.entries(selfKeys)\n\n const legacyKeyFp = this.selfLegacyPublicKey && fingerprintV1(this.selfLegacyPublicKey)\n const legacyKeyData = legacyKeyFp ? selfKeys[legacyKeyFp] : undefined\n const legacyEntry = legacyKeyData?.isVerified && legacyKeyFp ? [{ fingerprint: legacyKeyFp, pair: legacyKeyData.pair }] : []\n\n function filteredEntries(filterFunction: (fp: string, data: KeyPairData) => boolean) {\n return allKeysEntries\n .filter(([fp, data]) => filterFunction(fp, data) && fp !== legacyKeyFp)\n .sort(([a], [b]) => {\n // need to make sure that the comparison is independent of the locale, but the actual ordering is not that important\n return a == b ? 0 : a > b ? 1 : -1\n })\n .map(([fingerprint, { pair }]) => ({ fingerprint, pair }))\n }\n return [...legacyEntry, ...filteredEntries((_, data) => data.isDevice), ...filteredEntries((_, data) => !data.isDevice && data.isVerified)]\n }\n\n /**\n * Get all verified keys for a member of the current data owner hierarchy in no particular order.\n * @param dataOwner the current data owner or a member of his hierarchy.\n * @throws if the provided data owner is not part of the current data owner hierarchy\n */\n async getVerifiedPublicKeysFor(dataOwner: DataOwnerOrStub): Promise {\n this.ensureInitialised()\n const availableKeys = this.keysCache![dataOwner.id!]\n if (!availableKeys) throw new Error(`Data owner ${dataOwner.id} is not part of the hierarchy of the current data owner ${this.selfId}`)\n const availableVerifiedKeysFp = new Set(Object.entries(availableKeys).flatMap(([fp, info]) => (info.isVerified || info.isDevice ? [fp] : [])))\n const otherVerifiedFp = new Set(\n Object.entries(await this.icureStorage.loadSelfVerifiedKeys(dataOwner.id!)).flatMap(([fp, verified]) => (verified ? [fp] : []))\n )\n return Array.from([\n ...this.dataOwnerApi.getHexPublicKeysWithSha1Of(dataOwner),\n ...this.dataOwnerApi.getHexPublicKeysWithSha256Of(dataOwner),\n ]).filter((key) => {\n const fp = fingerprintV1(key)\n return availableVerifiedKeysFp.has(fp) || otherVerifiedFp.has(fp)\n })\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Get all key pairs for the current data owner and his parents. These keys should be used only for decryption as they may have not been verified.\n * @return all key pairs available for decryption.\n */\n getDecryptionKeys(): { [fingerprint: string]: KeyPair } {\n this.ensureInitialised()\n return Object.values(this.keysCache!).reduce((acc, curr) => {\n return {\n ...acc,\n ...this.plainKeysByFingerprint(curr),\n }\n }, {} as { [fp: string]: KeyPair })\n }\n\n private async doLoadKeys(\n keyRecovererAndVerifier: KeyRecovererAndVerifier,\n currentOwnerKeyGenerator: CurrentOwnerKeyGenerator\n ): Promise<{ pair: KeyPair; fingerprint: string } | undefined> {\n // Load all keys for self from key store\n const hierarchy = (await this.dataOwnerApi.getCurrentDataOwnerHierarchy()).map(({ dataOwner, type }) => {\n if (dataOwner.publicKey == '') {\n if (Object.entries(dataOwner.hcPartyKeys ?? {}).length > 0)\n throw new Error(`Data owner ${dataOwner.id} has \"\" as public key but has non-empty hcPartyKeys`)\n delete dataOwner.publicKey\n }\n return {\n dataOwner,\n type,\n } as DataOwnerWithType\n })\n const self = hierarchy[hierarchy.length - 1]\n this.selfId = self.dataOwner.id!\n const keysData = []\n for (const dowt of this.initialiseParentKeys ? hierarchy : [self]) {\n const availableKeys = await this.loadAndRecoverKeysFor(dowt)\n const availableKeysFpSet = new Set(Object.keys(availableKeys))\n const verifiedKeysMap = await this.icureStorage.loadSelfVerifiedKeys(dowt.dataOwner.id!)\n const allPublicKeys = new Set([\n ...this.dataOwnerApi.getHexPublicKeysWithSha1Of(dowt.dataOwner),\n ...this.dataOwnerApi.getHexPublicKeysWithSha256Of(dowt.dataOwner),\n ])\n const unavailableKeys = Array.from(allPublicKeys).flatMap((key) => {\n return availableKeysFpSet.has(fingerprintV1(key)) ? [] : [key]\n })\n const unknownKeys = Array.from(allPublicKeys).filter(\n (x) => !(fingerprintV1(x) in verifiedKeysMap) && !(availableKeys?.[fingerprintV1(x)]?.isDevice === true)\n )\n keysData.push({ dowt, availableKeys, unavailableKeys, unknownKeys })\n }\n const recoveryInfo = keysData.map(({ dowt, unavailableKeys, unknownKeys }) => ({ dataOwner: dowt, unavailableKeys, unknownKeys }))\n const recoveryAndVerificationResult = recoveryInfo.some((x) => x.unavailableKeys.length > 0 || x.unknownKeys.length > 0)\n ? await keyRecovererAndVerifier(recoveryInfo)\n : await nothingKeyRecovererAndVerifier(recoveryInfo)\n const keysCache: { [dataOwnerId: string]: { [fp: string]: KeyPairData } } = {}\n for (const keyData of keysData) {\n const currAuthenticity = this.ensureFingerprintKeys(recoveryAndVerificationResult[keyData.dowt.dataOwner.id!].keyAuthenticity)\n const currExternallyRecovered = this.ensureFingerprintKeys(recoveryAndVerificationResult[keyData.dowt.dataOwner.id!].recoveredKeys)\n for (const [fp, keyPair] of Object.entries(currExternallyRecovered)) {\n const jwkPair = await this.primitives.RSA.exportKeys(keyPair, 'jwk', 'jwk')\n await this.icureStorage.saveKey(keyData.dowt.dataOwner.id!, fp, jwkPair, true)\n }\n const updatedVerifiedMap = await this.icureStorage.saveSelfVerifiedKeys(\n keyData.dowt.dataOwner.id!,\n [...Object.keys(currAuthenticity), ...Object.keys(currExternallyRecovered)].reduce(\n (acc, currFp) => ({\n ...acc,\n [currFp]: currFp in currExternallyRecovered || currAuthenticity[currFp],\n }),\n {}\n )\n )\n const keysWithExternallyRecovered = {\n ...keyData.availableKeys,\n ...Object.fromEntries(Object.entries(currExternallyRecovered).map(([k, v]) => [k, { pair: v, isDevice: false }])),\n }\n const additionallyRecovered = await this.recoverAndCacheKeys(keyData.dowt, this.plainKeysByFingerprint(keysWithExternallyRecovered))\n const keys = {\n ...keysWithExternallyRecovered,\n ...Object.fromEntries(Object.entries(additionallyRecovered).map(([k, v]) => [k, { pair: v, isDevice: false }])),\n }\n keysCache[keyData.dowt.dataOwner.id!] = this.verifyKeys(keys, updatedVerifiedMap)\n }\n if (Object.entries(keysCache).some(([ownerId, data]) => ownerId !== self.dataOwner.id && !this.hasVerifiedKey(data))) {\n throw new Error('Some parent hcps have no verified keys: impossible to generate locally a new key for a parent.')\n } else if (this.hasVerifiedKey(keysCache[self.dataOwner.id!])) {\n this.keysCache = keysCache\n this.selfLegacyPublicKey = self.dataOwner.publicKey\n return undefined\n } else {\n const whatToDo = await currentOwnerKeyGenerator(self)\n if (whatToDo === false) {\n throw new Error(`No verified key found for ${self.dataOwner.id} and settings do not allow creation of a new key.`)\n } else {\n const updateInfo = await this.createAndSaveNewKeyPair(whatToDo === true ? undefined : whatToDo, self)\n // self may be outdated now\n this.selfLegacyPublicKey = updateInfo.updatedSelf.stub.publicKey\n this.keysCache = {\n ...keysCache,\n [self.dataOwner.id!]: {\n ...keysCache[self.dataOwner.id!],\n [updateInfo.publicKeyFingerprint]: { pair: updateInfo.keyPair, isDevice: true, isVerified: true },\n },\n }\n return { pair: updateInfo.keyPair, fingerprint: updateInfo.publicKeyFingerprint }\n }\n }\n }\n\n private async createAndSaveNewKeyPair(\n importedKeyPair: undefined | KeyPair,\n selfDataOwner: DataOwnerWithType\n ): Promise<{ publicKeyFingerprint: string; keyPair: KeyPair; updatedSelf: CryptoActorStubWithType }> {\n const keyPair = importedKeyPair ?? (await this.primitives.RSA.generateKeyPair(ShaVersion.Sha256))\n const publicKeyHex = ua2hex(await this.primitives.RSA.exportKey(keyPair.publicKey, 'spki'))\n const jwKey = await this.primitives.RSA.exportKey(keyPair.publicKey, 'jwk')\n if (jwKey.alg !== 'RSA-OAEP-256') {\n throw new Error('Only keys generated with SHA-256 are currently supported')\n }\n const publicKeyFingerprint = fingerprintV1(publicKeyHex)\n await this.icureStorage.saveKey(\n selfDataOwner.dataOwner.id!,\n publicKeyFingerprint,\n await this.primitives.RSA.exportKeys(keyPair, 'jwk', 'jwk'),\n true\n )\n await this.icureStorage.saveSelfVerifiedKeys(selfDataOwner.dataOwner.id!, { [publicKeyFingerprint]: true })\n const updatedSelf = await this.dataOwnerApi.modifyCryptoActorStub({\n stub: {\n ...CryptoActorStub.fromDataOwner(selfDataOwner.dataOwner),\n publicKeysForOaepWithSha256: [...(selfDataOwner.dataOwner.publicKeysForOaepWithSha256 ?? []), publicKeyHex],\n },\n type: selfDataOwner.type,\n })\n return { publicKeyFingerprint, keyPair: keyPair, updatedSelf }\n }\n\n private async loadStoredKeys(\n dataOwner: DataOwnerWithType,\n pubKeysFingerprints: { [key: string]: string[] }\n ): Promise<{ [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } }> {\n const pubKeysFingerprintsWithVersion = Object.entries(pubKeysFingerprints).flatMap(([shaVersion, fps]) => {\n return fps.map((fp) => [shaVersion, fp] as [ShaVersion, string])\n })\n return await pubKeysFingerprintsWithVersion.reduce(async (acc, [shaVersion, currentFingerprint]) => {\n const awaitedAcc = await acc\n let loadedPair: { pair: KeyPair; isDevice: boolean } | undefined = undefined\n try {\n const storedKeypair = await this.icureStorage.loadKey(dataOwner.dataOwner.id!, currentFingerprint, dataOwner.dataOwner.publicKey)\n if (!!storedKeypair) {\n const importedKey = await this.primitives.RSA.importKeyPair(\n 'jwk',\n storedKeypair.pair.privateKey,\n 'jwk',\n storedKeypair.pair.publicKey,\n shaVersion\n )\n loadedPair = { pair: importedKey, isDevice: storedKeypair.isDevice }\n }\n } catch (e) {\n console.warn('Error while loading keypair', currentFingerprint, e)\n }\n return loadedPair\n ? {\n ...awaitedAcc,\n [currentFingerprint]: loadedPair,\n }\n : awaitedAcc\n }, Promise.resolve({} as { [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } }))\n }\n\n private verifyKeys(\n keys: { [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } },\n verifiedKeysMap: { [pubKeyFingerprint: string]: boolean }\n ): { [pubKeyFingerprint: string]: KeyPairData } {\n return Object.fromEntries(\n Object.entries(keys).map(\n ([fp, keyData]) => [fp, { ...keyData, isVerified: keyData.isDevice || verifiedKeysMap?.[fp] === true }] as [string, KeyPairData]\n )\n )\n }\n\n private plainKeysByFingerprint(richKeys: { [pubKeyFingerprint: string]: { pair: KeyPair } }): {\n [pubKeyFingerprint: string]: KeyPair\n } {\n return Object.fromEntries(Object.entries(richKeys).map(([fp, keyData]) => [fp, keyData.pair]))\n }\n\n private ensureInitialised() {\n if (!this.keysCache) throw new Error('Key manager was not properly initialised')\n }\n\n private async recoverAndCacheKeys(\n dataOwner: DataOwnerWithType,\n availableKeys: { [pubKeyFingerprint: string]: KeyPair }\n ): Promise<{ [p: string]: KeyPair }> {\n const recoveredKeys = await this.keyRecovery.recoverKeys(dataOwner, availableKeys)\n for (const [fp, pair] of Object.entries(recoveredKeys)) {\n await this.icureStorage.saveKey(dataOwner.dataOwner.id!, fp, await this.primitives.RSA.exportKeys(pair, 'jwk', 'jwk'), false)\n }\n return recoveredKeys\n }\n\n private async loadAndRecoverKeysFor(dataOwner: DataOwnerWithType): Promise<{ [keyFp: string]: { pair: KeyPair; isDevice: boolean } }> {\n const pubKeysFingerprints = {\n 'sha-1': [...new Set(this.dataOwnerApi.getHexPublicKeysWithSha1Of(dataOwner.dataOwner))].map((x) => fingerprintV1(x)),\n 'sha-256': [...new Set(this.dataOwnerApi.getHexPublicKeysWithSha256Of(dataOwner.dataOwner))].map((x) => fingerprintV1(x)),\n }\n const loadedKeys =\n pubKeysFingerprints['sha-1'].length + pubKeysFingerprints['sha-256'].length > 0 ? await this.loadStoredKeys(dataOwner, pubKeysFingerprints) : {}\n const loadedKeysFingerprints = Object.keys(loadedKeys)\n if (\n loadedKeysFingerprints.length !== pubKeysFingerprints['sha-1'].length + pubKeysFingerprints['sha-256'].length &&\n loadedKeysFingerprints.length > 0\n ) {\n const recoveredKeys = await this.recoverAndCacheKeys(dataOwner, this.plainKeysByFingerprint(loadedKeys))\n for (const [fp, pair] of Object.entries(recoveredKeys)) {\n loadedKeys[fp] = { pair, isDevice: false }\n }\n }\n return loadedKeys\n }\n\n private ensureFingerprintKeys(obj: { [shouldBeFingerprint: string]: T }): { [definitelyFingerprint: string]: T } {\n return Object.fromEntries(Object.entries(obj).map(([k, v]) => [fingerprintV1(k), v]))\n }\n\n private hasVerifiedKey(keysData: { [fp: string]: KeyPairData }) {\n return Object.values(keysData).some((x) => x.isVerified || x.isDevice)\n }\n}\n","export abstract class ShamirClass {\n // Protected settings object\n config = {\n bits: 8, // default number of bits\n radix: 16, // work with HEX by default\n size: Math.pow(2, 8 /* config.bits */),\n max: Math.pow(2, 8 /* config.bits */) - 1,\n minBits: 3,\n maxBits: 16, // this permits 65,535 shares, though going this high is NOT recommended in JS!\n bytesPerChar: 2,\n maxBytesPerChar: 6, // Math.pow(256,7) > Math.pow(2,53)\n // Primitive polynomials (in decimal form) for Galois Fields GF(2^n), for 2 <= n <= 30\n // The index of each term in the array corresponds to the n for that polynomial\n // i.e. to get the polynomial for n=16, use primitivePolynomials[16]\n primitivePolynomials: [null, null, 1, 3, 3, 5, 3, 3, 29, 17, 9, 5, 83, 27, 43, 3, 45, 9, 39, 39, 9, 5, 3, 33, 27, 9, 71, 39, 9, 5, 83],\n // warning for insecure PRNG\n warning: 'WARNING:\\nA secure random number generator was not found.\\nUsing Math.random(), which is NOT cryptographically strong!',\n logs: [] as Array,\n exps: [] as Array,\n }\n\n protected abstract fillRandom(arr: Uint32Array): void\n\n init() {\n const primitive = this.config.primitivePolynomials[this.config.bits]!\n let x = 1\n\n for (let i = 0; i < this.config.size; i++) {\n this.config.exps[i] = x\n this.config.logs[x] = i\n x <<= 1\n if (x >= this.config.size) {\n x ^= primitive\n x &= this.config.max\n }\n }\n }\n\n // Splits a number string `bits`-length segments, after first\n // optionally zero-padding it to a length that is a multiple of `padLength.\n // Returns array of integers (each less than 2^bits-1), with each element\n // representing a `bits`-length segment of the input string from right to left,\n // i.e. parts[0] represents the right-most `bits`-length segment of the input string.\n split(str: string, padLength = 0) {\n if (padLength) {\n str = this.padLeft(str, padLength)\n }\n const parts = []\n for (var i = str.length; i > this.config.bits; i -= this.config.bits) {\n parts.push(parseInt(str.slice(i - this.config.bits, i), 2))\n }\n parts.push(parseInt(str.slice(0, i), 2))\n return parts\n }\n\n bin2hex(str: string) {\n let hex = '',\n num\n str = this.padLeft(str, 4)\n for (let i = str.length; i >= 4; i -= 4) {\n num = parseInt(str.slice(i - 4, i), 2)\n if (isNaN(num)) {\n throw new Error('Invalid binary character.')\n }\n hex = num.toString(16) + hex\n }\n return hex\n }\n\n hex2bin(str: string) {\n let bin = '',\n num\n for (let i = str.length - 1; i >= 0; i--) {\n num = parseInt(str[i], 16)\n if (isNaN(num)) {\n throw new Error('Invalid hex character.')\n }\n bin = this.padLeft(num.toString(2), 4) + bin\n }\n\n return bin\n }\n\n padLeft(str: string, bits: number = this.config.bits) {\n const missing = str.length % bits\n return (missing ? new Array(bits - missing + 1).join('0') : '') + str\n }\n\n random(bits: number) {\n const construct = (bits: number, arr: Uint32Array, size: number) => {\n let str = '',\n i = 0\n const len = arr.length - 1\n while (i < len || str.length < bits) {\n str += this.padLeft(arr[i].toString(16), size)\n i++\n }\n str = str.substr(-bits / 4)\n return (str.match(/0/g) || []).length === str.length ? null : str\n }\n\n let elems = Math.ceil(bits / 32),\n str = null,\n arr = new Uint32Array(elems)\n\n while (str === null) {\n this.fillRandom(arr)\n str = construct(bits, arr, 8)\n }\n\n return str\n }\n\n share(secretString: string, numShares: number, threshold: number) {\n if (!this.config.logs.length) {\n this.init()\n }\n\n if (numShares % 1 !== 0 || numShares < 2) {\n throw new Error('Number of shares must be an integer between 2 and 2^bits-1 (' + this.config.max + '), inclusive.')\n }\n if (numShares > this.config.max) {\n var neededBits = Math.ceil(Math.log(numShares + 1) / Math.LN2)\n throw new Error(\n 'Number of shares must be an integer between 2 and 2^bits-1 (' +\n this.config.max +\n '), inclusive. To create ' +\n numShares +\n ' shares, use at least ' +\n neededBits +\n ' bits.'\n )\n }\n if (threshold % 1 !== 0 || threshold < 2) {\n throw new Error('Threshold number of shares must be an integer between 2 and 2^bits-1 (' + this.config.max + '), inclusive.')\n }\n if (threshold > this.config.max) {\n var neededBits = Math.ceil(Math.log(threshold + 1) / Math.LN2)\n throw new Error(\n 'Threshold number of shares must be an integer between 2 and 2^bits-1 (' +\n this.config.max +\n '), inclusive. To use a threshold of ' +\n threshold +\n ', use at least ' +\n neededBits +\n ' bits.'\n )\n }\n\n // append a 1 so that we can preserve the correct number of leading zeros in our secret\n const secret = this.split('1' + this.hex2bin(secretString), 0)\n const x = new Array(numShares),\n y = new Array(numShares)\n for (let i = 0, len = secret.length; i < len; i++) {\n const subShares = this._getShares(secret[i], numShares, threshold)\n for (let j = 0; j < numShares; j++) {\n x[j] = x[j] || subShares[j].x.toString(this.config.radix)\n y[j] = this.padLeft(subShares[j].y.toString(2)) + (y[j] ? y[j] : '')\n }\n }\n const padding = this.config.max.toString(this.config.radix).length\n return y.map((b, idx) => this.config.bits.toString(16).toUpperCase() + this.padLeft(x[idx], padding) + this.bin2hex(b))\n }\n\n // This is the basic polynomial generation and evaluation function\n // for a `config.bits`-length secret (NOT an arbitrary length)\n // Note: no error-checking at this stage! If `secrets` is NOT\n // a NUMBER less than 2^bits-1, the output will be incorrect!\n _getShares(secret: number, numShares: number, threshold: number) {\n const shares = []\n const coeffs = [secret]\n\n for (var i = 1; i < threshold; i++) {\n coeffs[i] = parseInt(this.random(this.config.bits), 16)\n }\n for (var i = 1, len = numShares + 1; i < len; i++) {\n shares[i - 1] = {\n x: i,\n y: this.horner(i, coeffs),\n }\n }\n return shares\n }\n\n // Polynomial evaluation at `x` using Horner's Method\n // TODO: this can possibly be sped up using other methods\n // NOTE: fx=fx * x + coeff[i] -> exp(log(fx) + log(x)) + coeff[i],\n // so if fx===0, just set fx to coeff[i] because\n // using the exp/log form will result in incorrect value\n horner(x: number, coeffs: Array) {\n const logx = this.config.logs[x]\n let fx = 0\n for (let i = coeffs.length - 1; i >= 0; i--) {\n if (fx === 0) {\n fx = coeffs[i]\n continue\n }\n fx = this.config.exps[(logx + this.config.logs[fx]) % this.config.max] ^ coeffs[i]\n }\n return fx\n }\n\n processShare(share: string) {\n const bits = parseInt(share[0], 16)\n if (bits && (bits % 1 !== 0 || bits < this.config.minBits || bits > this.config.maxBits)) {\n throw new Error('Number of bits must be an integer between ' + this.config.minBits + ' and ' + this.config.maxBits + ', inclusive.')\n }\n\n const max = Math.pow(2, bits) - 1\n const idLength = max.toString(this.config.radix).length\n\n const id = parseInt(share.substr(1, idLength), this.config.radix)\n if (id % 1 !== 0 || id < 1 || id > max) {\n throw new Error('Share id must be an integer between 1 and ' + this.config.max + ', inclusive.')\n }\n share = share.substr(idLength + 1)\n if (!share.length) {\n throw new Error('Invalid share: zero-length share.')\n }\n return {\n bits: bits,\n id: id,\n value: share,\n }\n }\n\n _combine(at: number, shares: Array) {\n if (!this.config.logs.length) {\n this.init()\n }\n\n const x: Array = []\n const y: Array> = []\n let result = ''\n let idx: number\n\n for (var i = 0, len = shares.length; i < len; i++) {\n const share = this.processShare(shares[i])\n\n if (x.includes(share['id'])) {\n // repeated x value?\n continue\n }\n\n idx = x.push(share['id']) - 1\n const shareValues = this.split(this.hex2bin(share['value']))\n for (let j = 0, len2 = shareValues.length; j < len2; j++) {\n y[j] = y[j] || []\n y[j][idx] = shareValues[j]\n }\n }\n\n for (var i = 0, len = y.length; i < len; i++) {\n result = this.padLeft(this.lagrange(at, x, y[i]).toString(2)) + result\n }\n\n if (at === 0) {\n // reconstructing the secret\n return this.bin2hex(result.slice(result.indexOf('1') + 1))\n } else {\n // generating a new share\n return this.bin2hex(result)\n }\n }\n\n combine(shares: Array) {\n return this._combine(0, shares)\n }\n\n // Generate a new share with id `id` (a number between 1 and 2^bits-1)\n // `id` can be a Number or a String in the default radix (16)\n newShare(id: number | string, shares: Array) {\n if (typeof id === 'string') {\n id = parseInt(id, this.config.radix)\n }\n\n const share = this.processShare(shares[0])\n const max = Math.pow(2, share['bits']) - 1\n\n if (id % 1 !== 0 || id < 1 || id > max) {\n throw new Error('Share id must be an integer between 1 and ' + this.config.max + ', inclusive.')\n }\n\n const padding = max.toString(this.config.radix).length\n return this.config.bits.toString(16).toUpperCase() + this.padLeft(id.toString(this.config.radix), padding) + this._combine(id, shares)\n }\n\n // Evaluate the Lagrange interpolation polynomial at x = `at`\n // using x and y Arrays that are of the same length, with\n // corresponding elements constituting points on the polynomial.\n lagrange(at: number, x: Array, y: Array) {\n let sum = 0,\n product,\n i,\n j,\n len\n for (i = 0, len = x.length; i < len; i++) {\n if (!y[i]) {\n continue\n }\n\n product = this.config.logs[y[i]]\n for (j = 0; j < len; j++) {\n if (i === j) {\n continue\n }\n if (at === x[j]) {\n // happens when computing a share that is in the list of shares used to compute it\n product = -1 // fix for a zero product term, after which the sum should be sum^0 = sum, not sum^1\n break\n }\n product =\n (product + this.config.logs[at ^ x[j]] - this.config.logs[x[i] ^ x[j]] + this.config.max) /* to make sure it's not negative */ %\n this.config.max\n }\n\n sum = product === -1 ? sum : sum ^ this.config.exps[product] // though exps[-1]= undefined and undefined ^ anything = anything in chrome, this behavior may not hold everywhere, so do the check\n }\n return sum\n }\n}\n\nexport class WebcryptoShamir extends ShamirClass {\n private crypto: Crypto\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n super()\n this.crypto = crypto\n }\n\n protected fillRandom(arr: Uint32Array): void {\n this.crypto.getRandomValues(arr)\n }\n}\n\nexport const shamir: ShamirClass = new WebcryptoShamir()\n","// Uses fp as node names\nimport { acyclic, graphFromEdges, StronglyConnectedGraph } from '../utils/graph-utils'\nimport { DataOwner, DataOwnerOrStub, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { RSAUtils, ShaVersion } from './RSA'\nimport { EntityWithDelegationTypeName, hex2ua } from '../utils'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { ExtendedApisUtils } from './ExtendedApisUtils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { EncryptedEntityWithType } from '../utils/EntityWithDelegationTypeName'\nimport { IccPatientApi } from '../../icc-api'\nimport { ShareMetadataBehaviour } from './ShareMetadataBehaviour'\nimport { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\n\n/**\n * Get the public keys of a data owner which should be used for RSA-OAEP with sha256.\n * @param dataOwner\n */\nexport function hexPublicKeysWithSha256Of(dataOwner: DataOwner) {\n return new Set([...(dataOwner.publicKeysForOaepWithSha256 ?? [])].filter((pubKey) => !!pubKey) as string[])\n}\n\n/**\n * Get the public keys of a data owner which should be used for RSA-OAEP with sha1.\n * @param dataOwner\n */\nexport function hexPublicKeysWithSha1Of(dataOwner: DataOwner) {\n return new Set(\n [dataOwner.publicKey, ...Object.keys(dataOwner.aesExchangeKeys ?? {}).filter((k) => k[0] != 'x')].filter((pubKey) => !!pubKey) as string[]\n )\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Get the transfer key graph for a data owner. Node names are the public key fingerprints of the data owner's keys, and an edge represents a key\n * which can be retrieved from another key using the transfer keys.\n * @param dataOwner a data owner.\n * @return a graph representing the possible key recovery paths using transfer keys for hte provided data owner.\n */\nexport function transferKeysFpGraphOf(dataOwner: DataOwner): StronglyConnectedGraph {\n const publicKeys = Array.from([...hexPublicKeysWithSha1Of(dataOwner), ...hexPublicKeysWithSha256Of(dataOwner)])\n const edges: [string, string][] = []\n Object.entries(dataOwner.transferKeys ?? {}).forEach(([from, tos]) => {\n Object.keys(tos).forEach((to) => {\n edges.push([fingerprintV1(from), fingerprintV1(to)])\n })\n })\n return acyclic(\n graphFromEdges(\n edges,\n publicKeys.map((x) => fingerprintV1(x))\n )\n )\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Get a map for converting public keys fingerprint to full public keys for the provided data owner.\n * @param dataOwner a data owner.\n * @param shaVersion gets only the keys that are generated with this SHA version (default: 'sha-1').\n * @return a map to convert fingerprints of the data owner into full public keys.\n */\nexport function fingerprintToPublicKeysMapOf(dataOwner: DataOwner, shaVersion: ShaVersion): { [fp: string]: string } {\n const publicKeys = shaVersion === 'sha-1' ? Array.from(hexPublicKeysWithSha1Of(dataOwner)) : Array.from(hexPublicKeysWithSha256Of(dataOwner))\n const res: { [fp: string]: string } = {}\n publicKeys.forEach((pk) => {\n res[fingerprintV1(pk)] = pk\n })\n return res\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Load many public keys in spki format.\n * @param rsa the rsa service\n * @param publicKeysSpkiHex public keys in spki format, hex encoded.\n * @param shaVersion the version of the Sha algorithm used in the keys generations. ()\n * @return public keys as crypto keys by their fingerprint.\n */\nexport async function loadPublicKeys(\n rsa: RSAUtils,\n publicKeysSpkiHex: string[],\n shaVersion: ShaVersion\n): Promise<{ [publicKeyFingerprint: string]: CryptoKey }> {\n return Object.fromEntries(\n await Promise.all(publicKeysSpkiHex.map(async (x) => [fingerprintV1(x), await rsa.importKey('spki', hex2ua(x), ['encrypt'], shaVersion)]))\n )\n}\n\n/**\n * @internal This method is intended only for internal use and may be changed without notice.\n * Creates a delegation for the current data owner if the data owner is an encrypted entity and there is no delegation to himself.\n * @return the updated self.\n */\nexport async function ensureDelegationForSelf(\n dataOwnerApi: IccDataOwnerXApi,\n xapi: ExtendedApisUtils,\n patientApi: IccPatientApi,\n cryptoPrimitives: CryptoPrimitives\n): Promise {\n const self = await dataOwnerApi.getCurrentDataOwner()\n if (self.type === 'patient') {\n const patient = new Patient(self.dataOwner)\n const patientWithType: EncryptedEntityWithType = { entity: patient, type: EntityWithDelegationTypeName.Patient }\n const availableSecretIds = await xapi.secretIdsOf(patientWithType, undefined)\n if (availableSecretIds.length) {\n return self\n } else {\n if (xapi.hasEmptyEncryptionMetadata(patient)) {\n // This should not really happen, usually some user will have already initialised the patient and its encryption metadata.\n const updatedPatient = await xapi.entityWithInitialisedEncryptedMetadata(\n patient,\n EntityWithDelegationTypeName.Patient,\n undefined,\n undefined,\n true,\n {}\n )\n return { dataOwner: await patientApi.modifyPatient(updatedPatient.updatedEntity), type: DataOwnerTypeEnum.Patient }\n } else {\n const updatedPatient = await xapi.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: patient,\n type: EntityWithDelegationTypeName.Patient,\n },\n {\n [patient.id!]: {\n shareEncryptionKeys: ShareMetadataBehaviour.IF_AVAILABLE,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: [cryptoPrimitives.randomUuid()],\n requestedPermissions: RequestedPermissionEnum.FULL_WRITE,\n },\n },\n (x) => patientApi.bulkSharePatients(x)\n )\n return { dataOwner: updatedPatient.updatedEntityOrThrow, type: DataOwnerTypeEnum.Patient }\n }\n }\n } else {\n return self\n }\n}\n\n/**\n * Search a public key in the data owner and returns the corresponding SHA version used to generate it or undefined if not found.\n * @param dataOwner the data owner.\n * @param publicKey the public key.\n * @return 'sha-1', 'sha-256', undefined\n */\nexport function getShaVersionForKey(dataOwner: DataOwnerOrStub, publicKey: string): ShaVersion | undefined {\n return dataOwner.publicKey === publicKey || Object.keys(dataOwner.aesExchangeKeys ?? {}).includes(publicKey)\n ? ShaVersion.Sha1\n : !!dataOwner.publicKeysForOaepWithSha256?.includes(publicKey)\n ? ShaVersion.Sha256\n : undefined\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Calculates the fingerprint from the hexadecimal representation of a SPKI key. The fingerprint is calculated as the last 16 bytes (32 characters)\n * of the SPKI key.\n * @param key the hexadecimal representation of the SPKI key.\n * @return the fingerprint.\n */\nexport function fingerprintV1(key: string): string {\n return key.slice(-32)\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Calculates the fingerprint from the hexadecimal representation of a SPKI key. The fingerprint is calculated as the last 16 bytes (32 characters) from which the\n * last 5 (10 characters) are removed because they are a constant of the SPKI format.\n * @param key the hexadecimal representation of the SPKI key.\n * @return the fingerprint.\n */\nexport function fingerprintV2(key: string): string {\n return key.slice(-32, -10)\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Converts the fingerprint of a key from a V1 format to a V2 format.\n * @param fp the fingerprint of the key in the V1 format.\n * @return the fingerprint of the key in the v2 format.\n */\nexport function fingerprintV1toV2(fp: string): string {\n // Conversion resilient to mistakes: if the fingerprint is already in V2 format it will be returned as is.\n return fp.slice(0, 22)\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * @param fp the fingerprint.\n * @return true if the fingerprint is in V1 format, false otherwise.\n */\nexport function fingerprintIsV1(fp: string): boolean {\n return fp.length === 32\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * @param fp the fingerprint.\n * @return true if the fingerprint is in V2 format, false otherwise.\n */\nexport function fingerprintIsV2(fp: string): boolean {\n return fp.length === 22\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * @param fp the fingerprint v2.\n * @return the fingerprint v1 using the standard tail.\n */\nexport function fingerprintV2ToStandardV1(fp: string): string {\n return fp + '0203010001'\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * @param publicKeyOrFpv1 a public key in spki format or a public key fp v1\n * @throws if the input does not terminate with 0203010001\n */\nexport function checkStandardPublicKeyTail(publicKeyOrFpv1: string) {\n if (publicKeyOrFpv1.slice(-10) != '0203010001') {\n throw new Error('Illegal state: generated public key should end with 0203010001')\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class AllCodesFilter extends AbstractFilterCode {\n $type: string = 'AllCodesFilter'\n constructor(json: JSON | any) {\n super(json)\n Object.assign(this as AllCodesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class AllDevicesFilter extends AbstractFilterDevice {\n $type: string = 'AllDevicesFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllDevicesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class AllHealthcarePartiesFilter extends AbstractFilterHealthcareParty {\n $type: string = 'AllHealthcarePartiesFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllHealthcarePartiesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\n\nexport class AllUsersFilter extends AbstractFilterUser {\n $type: string = 'AllUsersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllUsersFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class CodeByIdsFilter extends AbstractFilterCode {\n $type: string = 'CodeByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as CodeByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class CodeByRegionTypeLabelLanguageFilter extends AbstractFilterCode {\n $type: string = 'CodeByRegionTypeLabelLanguageFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as CodeByRegionTypeLabelLanguageFilter, json)\n }\n\n desc?: string\n region?: string\n type?: string\n language?: string\n label?: string\n}\n","import { AbstractFilter } from './filters'\n\nexport class ComplementFilter {\n constructor(superSet: AbstractFilter, subSet: AbstractFilter) {\n this.superSet = superSet\n this.subSet = subSet\n }\n\n desc?: string\n superSet: AbstractFilter\n subSet: AbstractFilter\n $type = 'ComplementFilter'\n}\n","export class ConstantFilter {\n constructor(constant: T[]) {\n this.constant = constant\n }\n\n desc?: string\n constant?: T[]\n $type = 'ConstantFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyPatientTagCodeDateFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyPatientTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyPatientTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKey?: string\n patientSecretForeignKeys?: Array\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startServiceValueDate?: number\n endServiceValueDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyTagCodeDateFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startOfContactOpeningDate?: number\n endOfContactOpeningDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByServiceIdsFilter extends AbstractFilterContact {\n $type: string = 'ContactByServiceIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByServiceIdsFilter, json)\n }\n\n desc?: string\n ids?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class DeviceByHcPartyFilter extends AbstractFilterDevice {\n $type: string = 'DeviceByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as DeviceByHcPartyFilter, json)\n }\n\n desc?: string\n responsibleId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class DeviceByIdsFilter extends AbstractFilterDevice {\n $type: string = 'DeviceByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as DeviceByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyIdentifiersFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyIdentifiersFilter, json)\n }\n\n desc?: string\n hcPartyId?: string\n identifiers?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartySecretForeignKeysFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartySecretForeignKeysFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartySecretForeignKeysFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKeys?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyTagCodeFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyTagCodeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyTagCodeFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n codeType?: string\n codeCode?: string\n tagType?: string\n tagCode?: string\n status?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByIdsFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByIdsFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByNameFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByNameFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByNameFilter, json)\n }\n\n descending?: boolean\n name: string = ''\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByTagCodeFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByTagCodeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByTagCodeFilter, json)\n }\n\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n desc?: string\n}\n","import { AbstractFilter } from './filters'\n\nexport class IntersectionFilter {\n constructor(filters: AbstractFilter[]) {\n this.filters = filters\n }\n\n desc?: string\n filters: AbstractFilter[]\n $type = 'IntersectionFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterInvoice } from '../../icc-api/model/AbstractFilterInvoice'\n\nexport class InvoiceByHcPartyCodeDateFilter extends AbstractFilterInvoice {\n $type: string = 'InvoiceByHcPartyCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as InvoiceByHcPartyCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n code?: string\n startInvoiceDate?: number\n endInvoiceDate?: number\n}\n","import {AbstractFilterMessage} from \"../../icc-api/model/AbstractFilterMessage\";\n\nexport class LatestMessageByHcPartyTransportGuidFilter extends AbstractFilterMessage {\n $type: string = 'LatestMessageByHcPartyTransportGuidFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as LatestMessageByHcPartyTransportGuidFilter, json)\n }\n\n healthcarePartyId?: string\n transportGuid?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskAfterDateFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskAfterDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskAfterDateFilter, json)\n }\n\n healthcarePartyId?: string\n date?: number\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskByHcPartyAndIdentifiersFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskByHcPartyAndIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskByHcPartyAndIdentifiersFilter, json)\n }\n\n healthcarePartyId?: string\n identifiers?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskByHcPartyAndTypeFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskByHcPartyAndTypeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskByHcPartyAndTypeFilter, json)\n }\n\n healthcarePartyId?: string\n type?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskByIdsFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","import {AbstractFilterMessage} from \"../../icc-api/model/AbstractFilterMessage\";\n\nexport class MessageByHcPartyFilter extends AbstractFilterMessage {\n $type: string = 'MessageByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MessageByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","import {AbstractFilterMessage} from \"../../icc-api/model/AbstractFilterMessage\";\n\nexport class MessageByHcPartyTransportGuidFilter extends AbstractFilterMessage {\n $type: string = 'MessageByHcPartyTransportGuidFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MessageByHcPartyTransportGuidFilter, json)\n }\n\n healthcarePartyId?: string\n transportGuid?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndActiveFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndActiveFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndActiveFilter, json)\n }\n\n desc?: string\n active?: boolean\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndAddressFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndAddressFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndAddressFilter, json)\n }\n\n desc?: string\n searchString?: string\n healthcarePartyId?: string\n postalCode?: string\n houseNumber?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndExternalIdFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndExternalIdFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndExternalIdFilter, json)\n }\n\n desc?: string\n externalId?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndIdentifiersFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndIdentifiersFilter, json)\n }\n\n healthcarePartyId?: string\n identifiers?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndSsinFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndSsinFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndSsinFilter, json)\n }\n\n desc?: string\n ssin?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndSsinsFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndSsinsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndSsinsFilter, json)\n }\n\n desc?: string\n ssins?: Array\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyDateOfBirthBetweenFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyDateOfBirthBetweenFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyDateOfBirthBetweenFilter, json)\n }\n\n desc?: string\n minDateOfBirth?: number\n maxDateOfBirth?: number\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyDateOfBirthFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyDateOfBirthFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyDateOfBirthFilter, json)\n }\n\n desc?: string\n dateOfBirth?: number\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n}\n","/*\n * Copyright (c) 2020. Taktik SA, All rights reserved.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\nimport { Patient } from '../../icc-api/model/Patient'\nimport GenderEnum = Patient.GenderEnum\n\nexport class PatientByHcPartyGenderEducationProfessionFilter extends AbstractFilterPatient {\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyGenderEducationProfessionFilter, json)\n\n }\n\n healthcarePartyId?: string\n gender?: GenderEnum\n education?: string\n profession?: string\n desc?: string\n\n $type = 'PatientByHcPartyGenderEducationProfession' // Named according to the Kotlin class name in kraken-refactor without filter at the end\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyNameContainsFuzzyFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyNameContainsFuzzyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyNameContainsFuzzyFilter, json)\n }\n\n desc?: string\n searchString?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyNameFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyNameFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyNameFilter, json)\n }\n\n desc?: string\n name?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByIdsFilter extends AbstractFilterPatient {\n $type: string = 'PatientByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByContactsAndSubcontactsFilter extends AbstractFilterService {\n $type: string = 'ServiceByContactsAndSubcontactsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByContactsAndSubcontactsFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n contacts?: Array\n subContacts?: Array\n startValueDate?: number\n endValueDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyHealthElementIdsFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyHealthElementIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyHealthElementIdsFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n healthElementIds?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyIdentifiersFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyIdentifiersFilter, json)\n }\n\n healthcarePartyId?: string\n desc?: string\n identifiers?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyTagCodeDateFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKey?: string\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startValueDate?: number\n endValueDate?: number\n descending?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByIdsFilter extends AbstractFilterService {\n $type: string = 'ServiceByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceBySecretForeignKeys extends AbstractFilterService {\n $type: string = 'ServiceBySecretForeignKeys'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceBySecretForeignKeys, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKeys?: Array\n}\n","import {AbstractFilterTopic} from \"../../icc-api/model/AbstractFilterTopic\";\n\nexport class TopicByHcPartyFilter extends AbstractFilterTopic {\n $type: string = 'TopicByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as TopicByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","import {AbstractFilterTopic} from \"../../icc-api/model/AbstractFilterTopic\";\n\nexport class TopicByParticipantFilter extends AbstractFilterTopic {\n $type: string = 'TopicByParticipantFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as TopicByParticipantFilter, json)\n }\n\n participantId?: string\n desc?: string\n}\n","import { AbstractFilter } from './filters'\n\nexport class UnionFilter {\n constructor(filters: AbstractFilter[]) {\n this.filters = filters\n }\n\n filters: AbstractFilter[]\n $type = 'UnionFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\n\nexport class UserByIdsFilter extends AbstractFilterUser {\n $type: string = 'UserByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as UserByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","import {ConstantFilter} from './ConstantFilter'\nimport {Patient} from '../../icc-api/model/Patient'\nimport {AbstractFilterPatient} from '../../icc-api/model/AbstractFilterPatient'\nimport {AbstractFilterContact} from '../../icc-api/model/AbstractFilterContact'\nimport {AbstractFilterService} from '../../icc-api/model/AbstractFilterService'\nimport {Service} from '../../icc-api/model/Service'\nimport {Contact} from '../../icc-api/model/Contact'\nimport {IntersectionFilter} from './IntersectionFilter'\nimport {UnionFilter} from './UnionFilter'\nimport {ComplementFilter} from './ComplementFilter'\nimport {PatientByHcPartyAndActiveFilter} from './PatientByHcPartyAndActiveFilter'\nimport {PatientByHcPartyAndAddressFilter} from './PatientByHcPartyAndAddressFilter'\nimport {PatientByHcPartyAndExternalIdFilter} from './PatientByHcPartyAndExternalIdFilter'\nimport {PatientByHcPartyAndSsinsFilter} from './PatientByHcPartyAndSsinsFilter'\nimport {PatientByHcPartyDateOfBirthBetweenFilter} from './PatientByHcPartyDateOfBirthBetweenFilter'\nimport {PatientByHcPartyDateOfBirthFilter} from './PatientByHcPartyDateOfBirthFilter'\n\nimport {add, format} from 'date-fns'\nimport {PatientByHcPartyFilter} from './PatientByHcPartyFilter'\nimport {PatientByHcPartyGenderEducationProfessionFilter} from './PatientByHcPartyGenderEducationProfessionFilter'\nimport {PatientByIdsFilter} from './PatientByIdsFilter'\nimport {PatientByHcPartyNameContainsFuzzyFilter} from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport {ContactByHcPartyFilter} from './ContactByHcPartyFilter'\nimport {Device} from '../../icc-api/model/Device'\nimport {AbstractFilterDevice} from '../../icc-api/model/AbstractFilterDevice'\nimport {MaintenanceTask} from '../../icc-api/model/MaintenanceTask'\nimport {AbstractFilterMaintenanceTask} from '../../icc-api/model/AbstractFilterMaintenanceTask'\nimport {Code} from '../../icc-api/model/Code'\nimport {AbstractFilterCode} from '../../icc-api/model/AbstractFilterCode'\nimport {HealthElement} from '../../icc-api/model/HealthElement'\nimport {AbstractFilterHealthElement} from '../../icc-api/model/AbstractFilterHealthElement'\nimport {Invoice} from '../../icc-api/model/Invoice'\nimport {AbstractFilterInvoice} from '../../icc-api/model/AbstractFilterInvoice'\nimport {User} from '../../icc-api/model/User'\nimport {AbstractFilterUser} from '../../icc-api/model/AbstractFilterUser'\nimport {HealthcareParty} from \"../../icc-api/model/HealthcareParty\"\nimport {AbstractFilterHealthcareParty} from \"../../icc-api/model/AbstractFilterHealthcareParty\"\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllUsersFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeLabelLanguageFilter'\nexport * from './ComplementFilter'\nexport * from './ConstantFilter'\nexport * from './ContactByHcPartyFilter'\nexport * from './ContactByHcPartyPatientTagCodeDateFilter'\nexport * from './ContactByHcPartyTagCodeDateFilter'\nexport * from './ContactByServiceIdsFilter'\nexport * from './DeviceByHcPartyFilter'\nexport * from './DeviceByIdsFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './IntersectionFilter'\nexport * from './InvoiceByHcPartyCodeDateFilter'\nexport * from './PatientByHcPartyAndActiveFilter'\nexport * from './PatientByHcPartyAndAddressFilter'\nexport * from './PatientByHcPartyAndExternalIdFilter'\nexport * from './PatientByHcPartyAndIdentifiersFilter'\nexport * from './PatientByHcPartyAndSsinFilter'\nexport * from './PatientByHcPartyAndSsinsFilter'\nexport * from './PatientByHcPartyDateOfBirthBetweenFilter'\nexport * from './PatientByHcPartyDateOfBirthFilter'\nexport * from './PatientByHcPartyFilter'\nexport * from './PatientByHcPartyGenderEducationProfessionFilter'\nexport * from './PatientByHcPartyNameContainsFuzzyFilter'\nexport * from './PatientByHcPartyNameFilter'\nexport * from './PatientByIdsFilter'\nexport * from './ServiceByContactsAndSubcontactsFilter'\nexport * from './ServiceByHcPartyFilter'\nexport * from './ServiceByHcPartyIdentifiersFilter'\nexport * from './ServiceByHcPartyHealthElementIdsFilter'\nexport * from './ServiceByHcPartyTagCodeDateFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\nexport * from './MaintenanceTaskByHcPartyAndIdentifiersFilter'\nexport * from './MaintenanceTaskByHcPartyAndTypeFilter'\nexport * from './MaintenanceTaskByIdsFilter'\nexport * from './MaintenanceTaskAfterDateFilter'\nexport * from './TopicByHcPartyFilter'\nexport * from './TopicByParticipantFilter'\nexport * from './MessageByHcPartyFilter'\nexport * from './MessageByHcPartyTransportGuidFilter'\nexport * from './LatestMessageByHcPartyTransportGuidFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter =\n | (T extends Patient\n ? AbstractFilterPatient\n : T extends Contact\n ? AbstractFilterContact\n : T extends Service\n ? AbstractFilterService\n : T extends HealthcareParty\n ? AbstractFilterHealthcareParty\n : T extends Device\n ? AbstractFilterDevice\n : T extends MaintenanceTask\n ? AbstractFilterMaintenanceTask\n : T extends Code\n ? AbstractFilterCode\n : T extends HealthElement\n ? AbstractFilterHealthElement\n : T extends Invoice\n ? AbstractFilterInvoice\n : T extends User\n ? AbstractFilterUser\n : never)\n | ConstantFilter\n | IntersectionFilter\n | UnionFilter\n | ComplementFilter\n\nconst f: AbstractFilterContact = new ComplementFilter(new ContactByHcPartyFilter({}), new ContactByHcPartyFilter({}))\n\nabstract class FilterBuilder {\n // This is the current generator for the filter, when we call build(), filterProvider() is going to be called\n filterProvider?: () => AbstractFilter\n // This is the method that is called each time we chain a filter to another filter. The default behaviour is to\n // return a FilterBuilder with the provider set to the last element in the chain, except when we use combination\n // operators like or()/and()/… . After one of those, the composer is set to a function that will return a FilterBuilder\n\n protected constructor(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ) {\n this.filterProvider = filterProvider\n composer && (this.composer = composer)\n }\n\n // that combines the existing filterBuilder with the filter definition we just added.\n composer: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder = (\n thisFilterBuilder: FilterBuilder,\n otherFilterBuilder: FilterBuilder\n ) => otherFilterBuilder\n\n abstract build(): AbstractFilter\n\n abstract clone(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ): FilterBuilder\n\n listOf(elements: T[]): FilterBuilder {\n return this.clone(() => new ConstantFilter(elements) as AbstractFilter)\n }\n\n /**\n * There are two ways of doing and, or, …\n *\n * 1) for (...) or (...) we use the syntax ... .or((builder) => builder...)\n * ex: youngerThan(65).or((b) => b.olderThan(18).and().gender(M)) means any gender < 65 or male > 18\n * 2) for ((...) or ...) we use the syntax ... .or().…\n * ex: youngerThan(65).or().olderThan(18).and().gender(M) means males between 18 and 65\n *\n * When 1) is used we do not have to wait for anything to provide a resolved builder that can later be combined with extra elements in the chain.\n * In other words, we can build the current filter chain up to the or/and/… and we can build what is inside the or/and/… brackets and we can set\n * the filterProvider of the returned Builder to () => UnionFilter([leftHand.build(), innerBrackets.build()]).\n *\n * When 2) is used, things get more tricky because we will have to do an or/and/… between what we have on the leftHand and with what we do not have\n * yet on the right hand. What we do in that situation is to set the filterProvider() to undefined because calling build() without having provided a\n * rightHand doesn't make sense. We set a composer that is going to be called the next time we chain a filter.\n *\n * @param filterBuilderFactory\n */\n\n and(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new IntersectionFilter([leftHandFilter, rightHandFilter]) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n or(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new UnionFilter([leftHandFilter, rightHandFilter]) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n minus(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new ComplementFilter(leftHandFilter, rightHandFilter) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n private makeLazyLeftRightFilterBuilder(\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () => AbstractFilter\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const leftHandFilterBuilder: FilterBuilder = this\n const leftHandFilter = leftHandFilterBuilder.build() // Freeze the leftHand filter\n\n return leftHandFilterBuilder.filterProvider\n ? this.clone(\n undefined, //filter provider is indeterminate until we have performed a composition\n (unused: FilterBuilder, rightHandFilterBuilder: FilterBuilder) => {\n // because we freeze the leftHand in the state it is right now, we are not going to use its value when the composition occurs\n const rightHandFilter = rightHandFilterBuilder.build()\n\n return rightHandFilter\n ? this.clone(leftHandRightHandFiltersCombiner(leftHandFilter, rightHandFilter), rightHandFilterBuilder.composer)\n : rightHandFilterBuilder //Can this happen ?\n }\n )\n : this\n }\n\n private makeEagerLeftRightFilterBuilder(\n rightHandFilterBuilderFactory: (it: FilterBuilder) => FilterBuilder,\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () => AbstractFilter\n ) {\n const rightHandFilterBuilder = rightHandFilterBuilderFactory(this)\n return this.filterProvider ? this.clone(leftHandRightHandFiltersCombiner(this.build(), rightHandFilterBuilder.build())) : this\n }\n}\n\nclass PatientFilterBuilder extends FilterBuilder {\n hcpId?: string\n\n constructor(\n filterProvider?: () => AbstractFilter,\n hcpId?: string,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ) {\n super(filterProvider, composer)\n this.hcpId = hcpId\n }\n\n clone(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ): FilterBuilder {\n return new PatientFilterBuilder(filterProvider, this.hcpId, composer)\n }\n\n listOf(elements: Patient[]): PatientFilterBuilder {\n return new PatientFilterBuilder(() => new ConstantFilter(elements) as AbstractFilter)\n }\n\n and(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.and(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n or(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.or(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n minus(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.minus(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n forHcp(hcpId: string): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(this.filterProvider, hcpId)) as PatientFilterBuilder\n }\n\n all(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyFilter({ healthcarePartyId: this.hcpId }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n activePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({healthcarePartyId: this.hcpId, active: true}), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n inactivePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({healthcarePartyId: this.hcpId, active: false}), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n byAddress(searchString?: string, postalCode?: string, houseNumber?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndAddressFilter({\n healthcarePartyId: this.hcpId,\n searchString,\n postalCode,\n houseNumber,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withExternalId(externalId: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndExternalIdFilter({\n healthcarePartyId: this.hcpId,\n externalId: externalId,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withSsins(ssins: string[]): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndSsinsFilter({healthcarePartyId: this.hcpId, ssins: ssins}), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n withDateOfBirthBetween(from?: number, to?: number): PatientFilterBuilder {\n return this.composer(\n this,\n this.clone(\n () =>\n new PatientByHcPartyDateOfBirthBetweenFilter({\n healthcarePartyId: this.hcpId,\n minDateOfBirth: from,\n maxDateOfBirth: to,\n })\n )\n ) as PatientFilterBuilder\n }\n\n byDateOfBirth(dateOfBirth: number): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyDateOfBirthFilter({\n healthcarePartyId: this.hcpId,\n dateOfBirth: dateOfBirth,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n olderThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(10000101, parseInt(format(add(new Date(), {years: -age}), 'yyyyMMdd')))\n }\n\n youngerThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(parseInt(format(add(new Date(), {years: -age}), 'yyyyMMdd')), 99991231)\n }\n\n byGenderEducationProfession(gender?: GenderEnum, education?: string, profession?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyGenderEducationProfessionFilter({\n healthcarePartyId: this.hcpId,\n gender: gender,\n education: education,\n profession: profession,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n byIds(ids: string[]): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(() => new PatientByIdsFilter({ids: ids}), this.hcpId)) as PatientFilterBuilder\n }\n\n searchByName(name: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyNameContainsFuzzyFilter({\n healthcarePartyId: this.hcpId,\n searchString: name,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n build(): AbstractFilter {\n return this.filterProvider?.() || this.all().build()\n }\n}\n","import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, ListOfIds, PaginatedListAccessLog } from '../icc-api/model/models'\nimport * as _ from 'lodash'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { ShareResult } from './utils/ShareResult'\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields } from './utils'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.AccessLog))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n cryptedKeys = ['detail', 'objectId'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedFields = parseEncryptedFields(cryptedKeys, 'AccessLog.')\n }\n\n /**\n * Creates a new instance of access log with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this access log refers to.\n * @param h initialised data for the access log. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the access log. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of access log.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n h: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n\n const accessLog = {\n ...(h ?? {}),\n _type: 'org.taktik.icure.entities.AccessLog',\n id: h?.id ?? this.crypto.primitives.randomUuid(),\n created: h?.created ?? new Date().getTime(),\n modified: h?.modified ?? new Date().getTime(),\n date: h?.date ?? new Date().getTime(),\n responsible: h?.responsible ?? (this.autofillAuthor ? dataOwnerId : undefined),\n author: h?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: h?.codes ?? [],\n tags: h?.tags ?? [],\n user: h?.user ?? user.id,\n patientId: h?.patientId ?? patient.id,\n accessType: h?.accessType ?? 'USER_ACCESS',\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.administrativeData ?? [])].map((x) => [x, AccessLevelEnum.WRITE])\n ),\n ...(options.additionalDelegates ?? {}),\n }\n return new AccessLog(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(accessLog, EntityWithDelegationTypeName.AccessLog, patient.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all access logs with (allSecretForeignKeysDelimitedByComma, hcpartyId)\n *\n * After these painful steps, you have the access logs of the patient.\n *\n * @deprecated use {@link findIdsBy} instead\n * @param hcpartyId\n * @param patient (Promise)\n * @param usingPost\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false): Promise {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId!, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId!, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n\n /**\n * Same as `findBy` but it will only return the ids of the access logs. It can also filter the access logs where AccessLog.date is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean): Promise {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n return extractedKeys && extractedKeys.length > 0\n ? this.findAccessLogIdsByDataOwnerPatientDate(hcpartyId, _.uniq(extractedKeys), startDate, endDate, descending)\n : Promise.resolve([])\n }\n\n /**\n * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead\n */\n async findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise {\n const accessLogs = await super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys)\n return await this.decrypt(hcPartyId, accessLogs)\n }\n\n /**\n * @deprecated use {@link findAccessLogIdsByDataOwnerPatientDate} instead\n */\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n async decrypt(hcpId: string, accessLogs: Array): Promise> {\n return (await this.crypto.xapi.tryDecryptEntities(accessLogs, EntityWithDelegationTypeName.AccessLog, (json) => new AccessLog(json))).map(\n ({ entity }) => entity\n )\n }\n\n encrypt(user: models.User, accessLogs: Array): Promise> {\n const owner = this.dataOwnerApi.getDataOwnerIdOf(user)\n return this.encryptAs(owner, accessLogs)\n }\n\n private async encryptAs(dataOwner: string, accessLogs: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n accessLogs,\n EntityWithDelegationTypeName.AccessLog,\n this.encryptedFields,\n false,\n false,\n (json) => new AccessLog(json)\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n async getAccessLogs(ids: ListOfIds): Promise {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogsWithUser(user: models.User, ids: ListOfIds): Promise {\n return super.getAccessLogs(ids).then((accessLogs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLogs))\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, _.cloneDeep(body)) : null\n }\n\n private async modifyAs(owner: string, body: models.AccessLog): Promise {\n return this.encryptAs(owner, [_.cloneDeep(body)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(owner, [accessLog]))\n .then((als) => als[0])\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.xapi\n .owningEntityIdsOf({ entity: decryptedLog, type: EntityWithDelegationTypeName.AccessLog }, user.healthcarePartyId as string)\n .then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n\n /**\n * @param accessLog an access log\n * @return the id of the patient that the access log refers to, retrieved from the encrypted metadata (not from the decrypted entity body). Normally\n * there should only be one element in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(accessLog: AccessLog): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: accessLog, type: EntityWithDelegationTypeName.AccessLog }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given access log\n */\n async hasWriteAccess(accessLog: AccessLog): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: accessLog, type: EntityWithDelegationTypeName.AccessLog })\n }\n\n /**\n * Share an existing access log with other data owners, allowing them to access the non-encrypted data of the access log and optionally also the\n * encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the access log.\n * @param accessLog the access log to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this access log refers to should be shared with the delegate. Normally this would\n * be the same as objectId, but it is encrypted separately from it allowing you to give access to the patient id without giving access to the other\n * encrypted data of the access log (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n accessLog: AccessLog,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(accessLog, { [delegateId]: options })\n }\n\n /**\n * Share an existing access log with other data owners, allowing them to access the non-encrypted data of the access log and optionally also the\n * encrypted content, with read-only or read-write permissions.\n * @param accessLog the access log to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this access log refers to should be shared with the delegate. Normally this would\n * be the same as objectId, but it is encrypted separately from it allowing you to give access to the patient id without giving access to the other\n * encrypted data of the access log (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n accessLog: AccessLog,\n delegates: {\n [delegateId: string]: {\n shareSecretId?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(accessLog, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing access log with other data owners, allowing them to access the non-encrypted data of the access log and optionally also the\n * encrypted content, with read-only or read-write permissions.\n * @param accessLog the access log to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this access log refers to should be shared with the delegate. Normally this would\n * be the same as objectId, but it is encrypted separately from it allowing you to give access to the patient id without giving access to the other\n * encrypted data of the access log (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n accessLog: AccessLog,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(accessLog, EntityWithDelegationTypeName.AccessLog)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyAs(self, entityWithEncryptionKey) : accessLog\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.AccessLog,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareAccessLogs(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: AccessLog\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.AccessLog })\n }\n\n getEncryptionKeysOf(entity: AccessLog): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.AccessLog }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: AccessLog, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.AccessLog },\n delegates\n )\n }\n}\n","import * as models from '../icc-api/model/models'\nimport { IccBekmehrApi } from '../icc-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { string2ua, ua2string } from './utils/binary-utils'\nimport { Contact, Document, HealthElement, Service } from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher\nexport interface ContactPatcher {\n type: 'ContactDto'\n patch: (contacts: Contact[]) => Promise\n}\nexport interface HealthElementPatcher {\n type: 'HealthElementDto'\n patch: (patients: HealthElement[]) => Promise\n}\nexport interface DocumentPatcher {\n type: 'DocumentDto'\n patch: (documents: Document[]) => Promise\n}\nexport interface ServicePatcher {\n type: 'ServiceDto'\n patch: (documents: Service[]) => Promise\n}\n\nexport class IccBekmehrXApi extends IccBekmehrApi {\n private readonly ctcApi: IccContactXApi\n private readonly helementApi: IccHelementXApi\n private readonly documentApi: IccDocumentXApi\n private readonly wssHost: string\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n ctcApi: IccContactXApi,\n helementApi: IccHelementXApi,\n documentApi: IccDocumentXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.ctcApi = ctcApi\n this.helementApi = helementApi\n this.documentApi = documentApi\n\n this.wssHost = new URL(this.host, typeof window !== 'undefined' ? window.location.href : undefined).href\n .replace(/^http/, 'ws')\n .replace(/\\/rest\\/v.+/, '/ws')\n }\n\n private async getJwt(): Promise {\n const authService = this.authenticationProvider.getAuthService()\n if (!!authService.jwtGetter) {\n const tokens = await authService.jwtGetter()\n if (!tokens) {\n throw new Error('Missing JWT')\n }\n return tokens.token\n } else {\n throw new Error('The existing provider is not a JWT provider')\n }\n }\n\n socketEventListener(\n socket: WebSocket,\n healthcarePartyId: string,\n resolve: (value: Blob) => void,\n reject: (reason?: any) => void,\n patchers: Patcher[],\n progressCallback?: (progress: number) => void\n ) {\n const that = this\n\n const send = (command: string, uuid: string, body: any) => {\n const data = JSON.stringify({ command, uuid, body })\n socket.send(data.length > 65000 ? string2ua(data).buffer : data)\n }\n\n const messageHandler = (msg: any, event: any) => {\n if (msg.command === 'decrypt') {\n if (msg.type === 'ContactDto') {\n that.ctcApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ContactDto')\n .reduce(async (p, patcher) => (patcher as ContactPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'HealthElementDto') {\n that.helementApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'HealthElementDto')\n .reduce(async (p, patcher) => (patcher as HealthElementPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'DocumentDto') {\n that.documentApi\n .decrypt(\n healthcarePartyId,\n msg.body.map((d: JSON) => new Document(d))\n )\n .then((res) =>\n patchers\n .filter((p) => p.type === 'DocumentDto')\n .reduce(async (p, patcher) => (patcher as DocumentPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) =>\n send(\n 'decryptResponse',\n msg.uuid,\n res?.map((d) => {\n const de = d.decryptedAttachment\n const { encryptedAttachment, ...stripped } = d\n return de ? { ...stripped, decryptedAttachment: btoa(ua2string(de)) } : stripped\n })\n )\n )\n } else if (msg.type === 'ServiceDto') {\n that.ctcApi\n .decryptServices(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ServiceDto')\n .reduce(async (p, patcher) => (patcher as ServicePatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n }\n } else if (msg.command === 'progress') {\n if (progressCallback && msg.body && msg.body[0]) {\n progressCallback(msg.body[0].progress)\n }\n } else {\n console.error('error received from backend:' + event.data)\n reject('websocket error: ' + event.data)\n socket.close(4000, 'backend error')\n }\n }\n\n return (event: MessageEvent) => {\n if (typeof event.data === 'string') {\n const msg = JSON.parse(event.data)\n messageHandler(msg, event)\n } else {\n const blob: Blob = event.data\n const subBlob = blob.slice(0, 1)\n const br = new FileReader()\n br.onload = function (e) {\n const firstChar = e.target && new Uint8Array((e.target as any).result as ArrayBuffer)[0]\n\n if (firstChar === 0x7b) {\n const tr = new FileReader()\n tr.onload = function (e) {\n const msg = e.target && JSON.parse((e.target as any).result as string)\n messageHandler(msg, event)\n }\n tr.readAsBinaryString(blob)\n } else {\n resolve(blob)\n socket.close(1000, 'Ok')\n }\n }\n br.readAsArrayBuffer(subBlob)\n }\n }\n }\n\n generateSmfExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SoftwareMedicalFileExport,\n progressCallback?: (progress: number) => void,\n patchers: Patcher[] = []\n ): Promise {\n return this.getJwt().then(\n (jwt) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(`${this.wssHost}/be_kmehr/generateSmf?jwt=${jwt}`)\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers, progressCallback))\n })\n )\n }\n\n generateSumehrExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n patchers: Patcher[] = []\n ): Promise {\n return this.getJwt().then(\n (jwt) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(`${this.wssHost}/be_kmehr/generateSumehr?jwt=${jwt}`)\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateSumehrV2ExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n patchers: Patcher[] = []\n ): Promise {\n return this.getJwt().then(\n (jwt) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(`${this.wssHost}/be_kmehr/generateSumehrV2?jwt=${jwt}`)\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateDiaryNoteExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n patchers: Patcher[] = []\n ): Promise {\n return this.getJwt().then(\n (jwt) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(`${this.wssHost}/be_kmehr/generateDiaryNote?jwt=${jwt}`)\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n\n generateMedicationSchemeWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n recipientSafe: string,\n version: number,\n body: models.MedicationSchemeExportInfo,\n patchers: Patcher[] = []\n ): Promise {\n return this.getJwt().then(\n (jwt) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(`${this.wssHost}/be_kmehr/generateMedicationScheme?jwt=${jwt}`)\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: {\n patientId: patientId,\n language: language,\n recipientSafe: recipientSafe,\n version: version,\n info: body,\n },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n }\n}\n","import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { CalendarItem, User } from '../icc-api/model/models'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccCalendarItemApi } from '../icc-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields } from './utils'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { PaginatedListCalendarItem } from '../icc-api/model/PaginatedListCalendarItem'\n\nexport class IccCalendarItemXApi extends IccCalendarItemApi implements EncryptedEntityXApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n private readonly encryptedFields: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.CalendarItem))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n encryptedKeys: Array = ['details', 'title', 'patientId'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'CalendarItem.')\n }\n\n newInstance(\n user: User,\n ci: any | CalendarItem,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n } = {}\n ) {\n return this.newInstancePatient(user, null, ci, options)\n }\n\n /**\n * Creates a new instance of calendar item with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this calendar item refers to.\n * @param ci initialised data for the calendar item. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classcalendar itemification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of calendar item.\n */\n async newInstancePatient(\n user: models.User,\n patient: models.Patient | null,\n ci: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ): Promise {\n if (!patient && options.preferredSfk) throw new Error('You need to specify parent patient in order to use secret foreign keys.')\n const calendarItem = {\n ...(ci ?? {}),\n _type: 'org.taktik.icure.entities.CalendarItem',\n id: ci?.id ?? this.crypto.primitives.randomUuid(),\n created: ci?.created ?? new Date().getTime(),\n modified: ci?.modified ?? new Date().getTime(),\n responsible: ci?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: ci?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: ci?.codes ?? [],\n tags: ci?.tags ?? [],\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = patient\n ? options?.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n : undefined\n if (patient && !sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new CalendarItem(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(calendarItem, EntityWithDelegationTypeName.CalendarItem, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * @deprecated use {@link findIdsBy} instead.\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId!, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId!, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n\n /**\n * Same as `findBy` but it will only return the ids of the calendar items. It can also filter the access logs where CalendarItem.date is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean): Promise {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n return extractedKeys && extractedKeys.length > 0\n ? this.findCalendarItemIdsByDataOwnerPatientStartTime(hcpartyId, _.uniq(extractedKeys), startDate, endDate, descending)\n : Promise.resolve([])\n }\n\n /**\n * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.\n */\n async findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise> {\n const calendarItems = await super.findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys)\n return await this.decrypt(hcPartyId, calendarItems)\n }\n\n /**\n * @deprecated use {@link findCalendarItemIdsByDataOwnerPatientStartTime} instead.\n */\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super\n .findCalendarItemsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys)\n .then((calendarItems) => this.decrypt(hcPartyId, calendarItems))\n }\n\n createCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n async createCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.createCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n getCalendarItemWithUser(user: models.User, calendarItemId: string): Promise {\n return super\n .getCalendarItem(calendarItemId)\n .then((calendarItem) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [calendarItem]))\n .then((cis) => cis[0])\n }\n\n getCalendarItem(calendarItemId: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * @deprecated use {@link getCalendarItemsWithPaginationWithUser} instead.\n */\n async getCalendarItemsWithUser(user: models.User): Promise | any> {\n return super.getCalendarItems().then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItems(): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n async getCalendarItemsWithPaginationWithUser(user: models.User, startDocumentId?: string, limit?: number): Promise {\n return super.getCalendarItemsWithPagination(startDocumentId, limit).then((calendarItems) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems.rows ?? []).then(\n (decryptedItems) =>\n new PaginatedListCalendarItem({\n rows: decryptedItems,\n nextKeyPair: calendarItems.nextKeyPair,\n })\n )\n )\n }\n\n getCalendarItemsWithPagination(startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * @deprecated use {@link findCalendarItemsByRecurrenceIdWithPaginationWithUser} instead.\n */\n async findCalendarItemsByRecurrenceIdWithUser(user: models.User, recurrenceId: string): Promise | any> {\n return super\n .findCalendarItemsByRecurrenceId(recurrenceId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n findCalendarItemsByRecurrenceId(recurrenceId: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n async findCalendarItemsByRecurrenceIdWithPaginationWithUser(\n user: models.User,\n recurrenceId: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super.findCalendarItemsByRecurrenceIdWithPagination(recurrenceId, startKey, startDocumentId, limit).then((calendarItems) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems.rows ?? []).then(\n (decryptedItems) =>\n new PaginatedListCalendarItem({\n rows: decryptedItems,\n nextKeyPair: calendarItems.nextKeyPair,\n })\n )\n )\n }\n\n findCalendarItemsByRecurrenceIdWithPagination(recurrenceId: string, startKey?: string, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithIdsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getCalendarItemsWithIds(body).then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItemsWithIds(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsByPeriodAndHcPartyIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n hcPartyId: string\n ): Promise | any> {\n return super\n .getCalendarItemsByPeriodAndHcPartyId(startDate, endDate, hcPartyId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItemsByPeriodAndHcPartyId(startDate?: number, endDate?: number, hcPartyId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarsByPeriodAndAgendaIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n agendaId: string\n ): Promise | any> {\n return super\n .getCalendarsByPeriodAndAgendaId(startDate, endDate, agendaId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarsByPeriodAndAgendaId(startDate?: number, endDate?: number, agendaId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n modifyCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * Remove the following delegation objects from the\n * CalendarItem instance: cryptedForeignKeys, secretForeignKeys.\n *\n * The delegations & encryptionKeys objects are not removed because\n * in the case the CalendarItem is saved in the DB & then encrypted,\n * if later we remove the patient from it, it'd reset the delegations\n * and encryptionKeys thus impossibilitating further access.\n *\n * @param calendarItem The Calendar Item object\n */\n resetCalendarDelegationObjects(calendarItem: models.CalendarItem): models.CalendarItem {\n const { cryptedForeignKeys, secretForeignKeys, ...resetCalendarItem } = calendarItem\n return resetCalendarItem\n }\n\n async modifyCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, _.cloneDeep(body)) : null\n }\n\n private modifyAs(dataOwner: string, body: models.CalendarItem): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((items) => super.modifyCalendarItem(items[0]))\n .then((ci) => this.decrypt(dataOwner, [ci]))\n .then((cis) => cis[0])\n }\n\n encrypt(user: models.User, calendarItems: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems)\n }\n\n private encryptAs(dataOwner: string, calendarItems: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n calendarItems,\n EntityWithDelegationTypeName.CalendarItem,\n this.encryptedFields,\n false,\n false,\n (json) => new CalendarItem(json)\n )\n }\n\n async decrypt(hcpId: string, calendarItems: Array): Promise> {\n return (\n await this.crypto.xapi.tryDecryptEntities(calendarItems, EntityWithDelegationTypeName.CalendarItem, (json) => new CalendarItem(json))\n ).map(({ entity }) => entity)\n }\n\n /**\n * @param calendarItem a calendar item\n * @return the id of the patient that the calendar item refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(calendarItem: models.CalendarItem): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: calendarItem, type: EntityWithDelegationTypeName.CalendarItem }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given calendar item\n */\n async hasWriteAccess(calendarItem: models.CalendarItem): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: calendarItem, type: EntityWithDelegationTypeName.CalendarItem })\n }\n\n /**\n * Share an existing calendar item with other data owners, allowing them to access the non-encrypted data of the calendar item and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the calendar item.\n * @param calendarItem item the calendar item to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * calendar item does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this calendar item refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWith(\n delegateId: string,\n calendarItem: models.CalendarItem,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(calendarItem, { [delegateId]: options })\n }\n\n /**\n * Share an existing calendar item with other data owners, allowing them to access the non-encrypted data of the calendar item and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param calendarItem item the calendar item to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * calendar item does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this calendar item refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n calendarItem: models.CalendarItem,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(calendarItem, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing calendar item with other data owners, allowing them to access the non-encrypted data of the calendar item and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param calendarItem item the calendar item to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * calendar item does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this calendar item refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async tryShareWithMany(\n calendarItem: models.CalendarItem,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(calendarItem, EntityWithDelegationTypeName.CalendarItem)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyAs(self, entityWithEncryptionKey) : calendarItem\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.CalendarItem,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareCalendarItems(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: CalendarItem\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.CalendarItem })\n }\n\n getEncryptionKeysOf(entity: CalendarItem): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.CalendarItem }, undefined)\n }\n\n /**\n * Links a calendar item with a patient. Note that this operation is not reversible: it is not possible to change the patient linked to a calendar\n * item.\n * @param calendarItem a calendar item\n * @param patient the patient which will be linked to the calendar item.\n * @param shareLinkWithDelegates data owners other than the current data owner which will also be able to decrypt the id of the newly linked\n * patient. If any of these data owners do not already have access to the calendar item, they will be granted read access (no write).\n * @return the updated calendar item\n */\n async linkToPatient(calendarItem: models.CalendarItem, patient: models.Patient, shareLinkWithDelegates: string[]): Promise {\n if (!!calendarItem.secretForeignKeys?.length) throw new Error(`Calendar item ${calendarItem.id} is already linked to a patient`)\n const delegates = [...new Set([await this.dataOwnerApi.getCurrentDataOwnerId(), ...shareLinkWithDelegates])]\n const sfk = await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n if (!sfk) {\n throw new Error(`Could not find any secret id for patient ${patient.id} which is shared with the topmost ancestor of the current data owner`)\n }\n const individualShareData = {\n shareSecretIds: [] as string[],\n shareEncryptionKeys: [] as string[],\n shareOwningEntityIds: [patient.id!],\n requestedPermissions: RequestedPermissionEnum.FULL_READ,\n }\n const shared = await this.crypto.xapi.bulkShareOrUpdateEncryptedEntityMetadata(\n EntityWithDelegationTypeName.CalendarItem,\n [\n {\n entity: calendarItem,\n dataForDelegates: Object.fromEntries(delegates.map((d) => [d, individualShareData])),\n },\n ],\n (x) => this.bulkShareCalendarItems(x)\n )\n if (!shared.updatedEntities.length || shared.updatedEntities[0].id !== calendarItem.id) {\n const errorsForEntity = shared.updateErrors.filter((e) => e.entityId === calendarItem.id)\n if (!errorsForEntity.length || !errorsForEntity.find((x) => x.code === 409)) {\n throw new Error(`Unexpected error while linking calendar item ${calendarItem.id}`)\n } else {\n throw new Error(`Outdated calendar item revision ${calendarItem.id}-${calendarItem.rev}`)\n }\n }\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const sharedDecrypted = (await this.decrypt(self, [shared.updatedEntities[0]]))[0]\n const withSfk = await this.modifyAs(self, { ...sharedDecrypted, secretForeignKeys: [sfk] })\n return (await this.decrypt(self, [withSfk]))[0]\n }\n\n createDelegationDeAnonymizationMetadata(entity: CalendarItem, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.CalendarItem },\n delegates\n )\n }\n}\n","import { IccClassificationApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { EntityWithDelegationTypeName } from './utils'\n\nexport class IccClassificationXApi extends IccClassificationApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Classification))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of classification with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this classification refers to.\n * @param c initialised data for the classification. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of classification.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ): Promise {\n const classification = {\n ...(c ?? {}),\n _type: 'org.taktik.icure.entities.Classification',\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n responsible: c?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: c?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: c?.codes ?? [],\n tags: c?.tags ?? [],\n healthElementId: c?.healthElementId ?? this.crypto.primitives.randomUuid(),\n openingDate: c?.openingDate ?? parseInt(moment().format('YYYYMMDDHHmmss')),\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options?.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Classification(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(classification, EntityWithDelegationTypeName.Classification, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * @deprecated use {@link findIdsBy} instead.\n */\n async findBy(hcpartyId: string, patient: models.Patient) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? this.findClassificationsByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? this.findClassificationIdsByDataOwnerPatientCreated(topmostParentId, _.uniq(extractedKeys), startDate, endDate, descending)\n : Promise.resolve([])\n }\n\n /**\n * @param classification a classification\n * @return the id of the patient that the classification refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(classification: models.Classification): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: classification, type: EntityWithDelegationTypeName.Classification }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given classification\n */\n async hasWriteAccess(classification: models.Classification): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: classification, type: EntityWithDelegationTypeName.Classification })\n }\n\n /**\n * Share an existing classification with other data owners, allowing them to access the non-encrypted data of the classification and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the classification.\n * @param classification the classification to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * classification does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this classification refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n classification: models.Classification,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(classification, { [delegateId]: options })\n }\n\n /**\n * Share an existing classification with other data owners, allowing them to access the non-encrypted data of the classification and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param classification the classification to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * classification does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this classification refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n classification: models.Classification,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(classification, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing classification with other data owners, allowing them to access the non-encrypted data of the classification and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param classification the classification to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * classification does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this classification refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n classification: models.Classification,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(\n classification,\n EntityWithDelegationTypeName.Classification\n )\n const updatedEntity = entityWithEncryptionKey ? await this.modifyClassification(entityWithEncryptionKey) : classification\n return this.crypto.xapi.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Classification,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareClassifications(x)\n )\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Classification\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Classification })\n }\n\n getEncryptionKeysOf(entity: models.Classification): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Classification }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.Classification, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.Classification },\n delegates\n )\n }\n}\n","import { IccCodeApi } from '../icc-api'\n\nimport codeLanguages from './rsrc/codelng'\nimport icd10 from './rsrc/icd10'\nimport icpc2 from './rsrc/icpc2'\n\nimport * as _ from 'lodash'\nimport { Code } from '../icc-api/model/Code'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccCodeXApi extends IccCodeApi {\n icd10: any = icd10\n icpc2: any = icpc2\n codeLanguages: any = codeLanguages\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n // noinspection JSUnusedGlobalSymbols\n icdChapters(listOfCodes: Array) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(\n listOfCodes.map((code) => [\n code,\n _.toPairs(this.icd10).find(([k]) => {\n const parts = k.split(/-/)\n return code.substr(0, 3) >= parts[0] && code.substr(0, 3) <= parts[1]\n }),\n ])\n ),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0].substr(0, 2)\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n icpcChapters(listOfCodes: Array) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(listOfCodes.map((code) => [code, _.toPairs(this.icpc2).find(([k]) => k === code.substr(0, 1).toUpperCase())])),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0]\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n languageForType(type: string, lng: string) {\n const availableLanguages = this.codeLanguages[type]\n return availableLanguages && availableLanguages.indexOf(lng) >= 0 ? lng : 'fr'\n }\n\n // noinspection JSMethodCanBeStatic, JSUnusedGlobalSymbols\n normalize(c: Code | string) {\n return typeof c === 'string'\n ? {\n id: c,\n type: c.split(/\\|/)[0],\n code: c.split(/\\|/)[1],\n version: c.split(/\\|/)[2],\n }\n : (c as Code).type && (c as Code).code && !(c as Code).id\n ? {\n id: (c as Code).type + '|' + (c as Code).code + '|' + ((c as Code).version || '1'),\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n : (c as Code).id && (!(c as Code).code || !(c as Code).type || !(c as Code).version)\n ? {\n id: (c as Code).id,\n type: (c as Code).id!.split(/\\|/)[0],\n code: (c as Code).id!.split(/\\|/)[1],\n version: (c as Code).id!.split(/\\|/)[2],\n }\n : {\n id: (c as Code).id!,\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n }\n}\n","import { IccAuthApi, IccContactApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport i18n from './rsrc/contact.i18n'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { Contact, FilterChainService, ListOfIds, Service } from '../icc-api/model/models'\nimport { PaginatedListContact } from '../icc-api/model/PaginatedListContact'\nimport { utf8_2ua } from './utils/binary-utils'\nimport { ServiceByIdsFilter } from './filters/ServiceByIdsFilter'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport {\n before,\n decryptObject,\n EncryptedFieldsManifest,\n encryptObject,\n EntityWithDelegationTypeName,\n parseEncryptedFields,\n subscribeToEntityEvents,\n SubscriptionOptions,\n} from './utils'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { XHR } from '../icc-api/api/XHR'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { AbstractFilter } from './filters/filters'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\n\nexport class IccContactXApi extends IccContactApi implements EncryptedEntityXApi {\n i18n: any = i18n\n private readonly contactEncryptedFields: EncryptedFieldsManifest\n private readonly serviceEncryptedFieldsNoContent: EncryptedFieldsManifest | undefined\n private readonly serviceEncryptedFieldsWithContent: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Contact))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly userApi: IccUserXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n contactEncryptedKeys: string[] = ['descr'],\n serviceEncryptedKeys: string[] = []\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n if (contactEncryptedKeys.some((key) => key.startsWith('services'))) {\n throw new Error(\"You can't customise encryption of the `services` field of Contact. Use the serviceEncryptedKeys parameter instead.\")\n }\n if (serviceEncryptedKeys.some((key) => key.startsWith('content'))) {\n throw new Error(\"You can't customise encryption of the `content` of a Service. The content values for services is automatically encrypted.\")\n }\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.userApi = userApi\n this.authApi = authApi\n this.contactEncryptedFields = parseEncryptedFields(contactEncryptedKeys, 'Contact.')\n const customServiceEncryptedFields = parseEncryptedFields(serviceEncryptedKeys, 'Service.')\n if (serviceEncryptedKeys.length > 0) {\n this.serviceEncryptedFieldsNoContent = customServiceEncryptedFields\n }\n this.serviceEncryptedFieldsWithContent = {\n ...customServiceEncryptedFields,\n topLevelFields: [...customServiceEncryptedFields.topLevelFields, { fieldName: 'content', fieldPath: 'Service.content' }],\n }\n }\n\n /**\n * Creates a new instance of contact with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this contact refers to.\n * @param c initialised data for the contact. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify other\n * kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the contact. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy if the confidential is set to false, else a secret id that\n * the data owner did not share with any of his parents.\n * - confidential: if true, the entity will be created as confidential. Confidential entities are not shared with auto-delegations, and the default\n * foreign key used is any key that is not shared with any of the data owner parents. By default entities are created as non-confidential.\n * @return a new instance of contact.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n confidential?: boolean\n } = {}\n ): Promise {\n const contact = new models.Contact({\n ...(c ?? {}),\n _type: 'org.taktik.icure.entities.Contact',\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n responsible: c?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: c?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: c?.codes ?? [],\n tags: c?.tags ?? [],\n groupId: c?.groupId ?? this.crypto.primitives.randomUuid(),\n subContacts: c?.subContacts ?? [],\n services: c?.services ?? [],\n openingDate: c?.openingDate ?? parseInt(moment().format('YYYYMMDDHHmmss')),\n })\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (options?.confidential\n ? await this.crypto.confidential.getConfidentialSecretId({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n : await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id} for confidential=${options.confidential ?? false}`)\n const extraDelegations = {\n ...(options.confidential\n ? {}\n : Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n )),\n ...(options?.additionalDelegates ?? {}),\n }\n const initialisationInfo = await this.crypto.xapi.entityWithInitialisedEncryptedMetadata(\n contact,\n EntityWithDelegationTypeName.Contact,\n patient.id,\n sfk,\n true,\n extraDelegations\n )\n return new models.Contact(initialisationInfo.updatedEntity)\n }\n\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all contacts with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the contacts of the patient.\n *\n * @deprecated use {@link findIdsBy} instead.\n * @param hcpartyId\n * @param patient (Promise)\n * @param usingPost\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n return await this.crypto.xapi.secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }).then((keysHierarchy) =>\n keysHierarchy && keysHierarchy.length > 0\n ? Promise.all(\n keysHierarchy\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId, _.uniq(extractedKeys).join(','))\n )\n ).then((results) => _.uniqBy(_.flatMap(results), (x) => x.id))\n : Promise.resolve([])\n )\n }\n\n /**\n * Same as {@link findIdsBy} but it will only return the ids of the contacts. It can also filter the contacts where Contact.openingDate is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean) {\n return await this.crypto.xapi.secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }).then((keysHierarchy) =>\n keysHierarchy && keysHierarchy.length > 0\n ? Promise.all(\n keysHierarchy\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n this.findContactIdsByDataOwnerPatientOpeningDate(hcpartyId, extractedKeys, startDate, endDate, descending)\n )\n ).then((results) => _.uniq(_.flatMap(results)))\n : Promise.resolve([])\n )\n }\n\n async findByPatientSFKs(hcpartyId: string, patients: Array): Promise> {\n const perHcpId: { [key: string]: string[] } = {}\n for (const patient of patients) {\n ;(await this.crypto.xapi.secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .forEach(({ hcpartyId, extractedKeys }) => {\n ;(perHcpId[hcpartyId] || (perHcpId[hcpartyId] = [])).push(...extractedKeys)\n })\n }\n\n return _.uniqBy(\n _.flatMap(\n await Promise.all(\n Object.keys(perHcpId).map((hcpId) =>\n this.findContactsByHCPartyPatientForeignKeys(\n hcpartyId,\n new models.ListOfIds({\n ids: perHcpId[hcpId],\n })\n )\n )\n )\n ),\n (x) => x.id\n )\n }\n\n filterBy(startKey?: string, startDocumentId?: string, limit?: number, body?: models.FilterChainContact): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listContactsByOpeningDate(\n startDate: number,\n endDate: number,\n hcpartyid: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listServices(body?: ListOfIds): Promise> {\n throw new Error('Cannot call a method that returns services without providing a user for de/encryption')\n }\n\n findByHCPartyFormId(hcPartyId?: string, formId?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByHCPartyFormIds(hcPartyId?: string, body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getContact(contactId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getContacts(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n modifyContact(body?: Contact): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n modifyContacts(body?: Array): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n createContact(body?: Contact): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n /**\n * @deprecated use {@link findContactIdsByDataOwnerPatientOpeningDate} instead.\n */\n findByHCPartyPatientSecretFKeys(\n hcPartyId: string,\n secretFKeys: string,\n planOfActionIds?: string,\n skipClosedContacts?: boolean\n ): Promise> {\n return super\n .findByHCPartyPatientSecretFKeys(hcPartyId, secretFKeys, planOfActionIds, skipClosedContacts)\n .then((contacts) => this.decrypt(hcPartyId, contacts))\n }\n\n /**\n * @deprecated use {@link findContactIdsByDataOwnerPatientOpeningDate} instead.\n */\n findByHCPartyPatientSecretFKeysArray(\n hcPartyId: string,\n secretFKeys: string[],\n planOfActionIds?: string,\n skipClosedContacts?: boolean\n ): Promise | any> {\n return super\n .findByHCPartyPatientSecretFKeysUsingPost(hcPartyId, planOfActionIds, skipClosedContacts, secretFKeys)\n .then((contacts) => this.decrypt(hcPartyId, contacts))\n }\n\n filterByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: models.FilterChainContact\n ): Promise {\n return super\n .filterContactsBy(startDocumentId, limit, body)\n .then((ctcs) =>\n this.decrypt(user.healthcarePartyId! || user.patientId!, ctcs.rows!).then((decryptedRows) => Object.assign(ctcs, { rows: decryptedRows }))\n )\n }\n\n listContactsByOpeningDateWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n hcpartyid: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listContactsByOpeningDate(startDate, endDate, hcpartyid, startKey, startDocumentId, limit)\n .then((ctcs) =>\n this.decrypt(user.healthcarePartyId! || user.patientId!, ctcs.rows!).then((decryptedRows) => Object.assign(ctcs, { rows: decryptedRows }))\n )\n }\n\n getServiceWithUser(user: models.User, serviceId: string): Promise {\n return super\n .getService(serviceId)\n .then((service) => this.decryptServices(user.healthcarePartyId ?? user.patientId ?? user.deviceId!, [service]))\n .then((decrypted) => decrypted[0])\n }\n\n listServicesWithUser(user: models.User, serviceIds: ListOfIds): Promise | any> {\n return super\n .filterServicesBy(undefined, serviceIds.ids?.length, new FilterChainService({ filter: new ServiceByIdsFilter({ ids: serviceIds.ids }) }))\n .then((paginatedList) => this.decryptServices(user.healthcarePartyId ?? user.patientId ?? user.deviceId!, paginatedList.rows ?? []))\n }\n\n findByHCPartyFormIdWithUser(user: models.User, hcPartyId: string, formId: string): Promise | any> {\n return super.findByHCPartyFormId(hcPartyId, formId).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n findByHCPartyFormIdsWithUser(user: models.User, hcPartyId: string, body: models.ListOfIds): Promise | any> {\n return super.findByHCPartyFormIds(hcPartyId, body).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n getContactWithUser(user: models.User, contactId: string): Promise {\n return super\n .getContact(contactId)\n .then((ctc) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ctc]))\n .then((ctcs) => ctcs[0])\n }\n\n getContactsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getContacts(body).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n async modifyContactWithUser(user: models.User, body?: models.Contact): Promise {\n return body ? this.modifyContactAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, body) : null\n }\n\n private modifyContactAs(dataOwner: string, body: models.Contact): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((ctcs) => super.modifyContact(ctcs[0]))\n .then((ctc) => this.decrypt(dataOwner, [ctc]))\n .then((ctcs) => ctcs[0])\n }\n\n async modifyContactsWithUser(user: models.User, bodies?: Array): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((ctcs) => super.modifyContacts(ctcs))\n .then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n : null\n }\n\n async createContactWithUser(user: models.User, body?: models.Contact): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((ctcs) => super.createContact(ctcs[0]))\n .then((ctc) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ctc]))\n .then((ctcs) => ctcs[0])\n : null\n }\n\n async createContactsWithUser(user: models.User, bodies?: Array): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((ctcs) => super.createContacts(ctcs))\n .then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n : null\n }\n\n encryptServices(key: CryptoKey, rawKey: string, services: Service[]): PromiseLike {\n return Promise.all(\n services.map(async (svc) => {\n if (\n svc.content &&\n Object.values(svc.content).every(\n (c) =>\n c.compoundValue &&\n !c.stringValue &&\n !c.documentId &&\n !c.measureValue &&\n !c.medicationValue &&\n (c.booleanValue === null || c.booleanValue === undefined) &&\n (c.numberValue === null || c.numberValue === undefined) &&\n !c.instantValue &&\n !c.fuzzyDateValue &&\n !c.binaryValue\n )\n ) {\n const recursivelyEncryptedContent = Object.fromEntries(\n await Promise.all(\n Object.entries(svc.content).map(async (p) => {\n if (p[1].compoundValue?.length) {\n return [p[0], { ...p[1], compoundValue: await this.encryptServices(key, rawKey, p[1].compoundValue!) }]\n } else return p\n })\n )\n )\n const copyWithEncryptedContent = { ...svc, content: recursivelyEncryptedContent }\n return this.serviceEncryptedFieldsNoContent\n ? encryptObject(\n copyWithEncryptedContent,\n (obj) => {\n return this.crypto.primitives.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey)\n },\n this.serviceEncryptedFieldsNoContent,\n 'service'\n )\n : copyWithEncryptedContent\n } else {\n return encryptObject(\n svc,\n (obj) => {\n return this.crypto.primitives.AES.encrypt(key, utf8_2ua(JSON.stringify(obj)), rawKey)\n },\n this.serviceEncryptedFieldsWithContent,\n 'service'\n )\n }\n })\n )\n }\n\n encrypt(user: models.User, ctcs: Array) {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs)\n }\n\n private async encryptAs(hcpartyId: string, ctcs: Array): Promise {\n const initializedContacts: models.Contact[] = []\n for (const ctc of ctcs) {\n initializedContacts.push((await this.crypto.xapi.ensureEncryptionKeysInitialised(ctc, EntityWithDelegationTypeName.Contact)) ?? ctc)\n }\n const allEncrypted = await this.crypto.xapi.doManyIncrementallyDecryptingKeys(\n initializedContacts,\n EntityWithDelegationTypeName.Contact,\n async (entity, t, keys) => {\n for (const k of keys) {\n try {\n const encrypted = new Contact(\n await encryptObject(\n {\n ...entity,\n services: entity.services ? await this.encryptServices(k.key, k.raw, entity.services) : [],\n },\n (obj) => {\n return this.crypto.primitives.AES.encrypt(k.key, utf8_2ua(JSON.stringify(obj)), k.raw)\n },\n this.contactEncryptedFields,\n EntityWithDelegationTypeName.Contact\n )\n )\n return { success: encrypted }\n } catch (e) {\n console.warn(`Failed to encrypt contact ${entity.id} with key ${k.raw}`)\n }\n }\n return null\n }\n )\n if (ctcs.length != allEncrypted.size) {\n throw new Error(`Couldn't encrypt contacts ${ctcs.flatMap((e) => (allEncrypted.has(e.id!) ? [] : [e.id!]))}`)\n }\n return ctcs.map((e) => allEncrypted.get(e.id!)!)\n }\n\n async decrypt(hcpartyId: string, ctcs: Array): Promise> {\n return (await this.crypto.xapi.tryDecryptEntities(ctcs, EntityWithDelegationTypeName.Contact, (x) => new Contact(x))).map(({ entity }) => entity)\n }\n\n async decryptServices(hcpartyId: string, svcs: Array): Promise> {\n /*TODO\n * not super efficient, re-decrypts the encryption key metadata of services multiple times, but should mostly rely\n * on cached exchange data after the first decryption and should not do any extra requests to the db.\n * We could ensure to use only cached exchange data by doing limited-size batches of services from the same contact\n * id.\n */\n return (await this.crypto.xapi.tryDecryptEntities(svcs, EntityWithDelegationTypeName.Contact, (x) => new Service(x))).map(({ entity }) => entity)\n }\n\n contactOfService(ctcs: Array, svcId: string): models.Contact | undefined {\n let latestContact: models.Contact | undefined = undefined\n let latestService: models.Service\n ctcs.forEach((c) => {\n const s: models.Service | undefined = c.services!.find((it) => svcId === it.id)\n if (s && (!latestService || moment(s.valueDate).isAfter(moment(latestService.valueDate)))) {\n latestContact = c\n latestService = s\n }\n })\n return latestContact\n }\n\n filteredServices(ctcs: Array, filter: any): Array {\n const byIds: { [key: string]: models.Service } = {}\n ctcs.forEach((c) =>\n (c.services || [])\n .filter((s) => filter(s, c))\n .forEach((s) => {\n const ps = byIds[s.id!]\n if (!ps || !ps.modified || (s.modified && ps.modified < s.modified)) {\n byIds[s.id!] = s\n s.contactId = c.id\n }\n })\n )\n return _.values(byIds).filter((s: any) => !s.deleted && !s.endOfLife)\n }\n\n //Return a promise\n filterServices(ctcs: Array, filter: any): Promise> {\n return Promise.resolve(this.filteredServices(ctcs, filter))\n }\n\n services(ctc: models.Contact, label: string) {\n return ctc.services!.filter((s) => s.label === label)\n }\n\n preferredContent(svc: models.Service, lng: string) {\n return (\n svc && svc.content && (svc.content[lng] || svc.content['fr'] || (Object.keys(svc.content)[0] ? svc.content[Object.keys(svc.content)[0]] : null))\n )\n }\n\n contentValue(c: models.Content) {\n return (\n c.stringValue ||\n ((c.numberValue || c.numberValue === 0) && c.numberValue) ||\n (c.measureValue && (c.measureValue.value || c.measureValue.value === 0) ? c.measureValue : null) ||\n c.medicationValue ||\n c.booleanValue\n )\n }\n\n shortServiceDescription(svc: models.Service, lng: string) {\n const c = this.preferredContent(svc, lng)\n return !c ? '' : this.shortContentDescription(c, lng, svc.label)\n }\n\n shortContentDescription(c: models.Content, lng: string, label?: string) {\n return (\n c.stringValue ||\n ((c.numberValue || c.numberValue === 0) && c.numberValue) ||\n (c.measureValue &&\n '' +\n (c.measureValue.value || c.measureValue.value === 0 ? c.measureValue.value : '-') +\n (c.measureValue.unit ? ' ' + c.measureValue.unit : '')) ||\n (c.medicationValue ? this.medication().medicationToString(c.medicationValue, lng) : null) ||\n (c.booleanValue && label) ||\n 'OK'\n )\n }\n\n medicationValue(svc: models.Service, lng: string) {\n const c =\n svc && svc.content && (svc.content[lng] || svc.content['fr'] || (Object.keys(svc.content)[0] ? svc.content[Object.keys(svc.content)[0]] : null))\n return c && c.medicationValue\n }\n\n contentHasData(c: any): boolean {\n return c.stringValue || c.numberValue || c.measureValue || c.booleanValue || c.booleanValue === false || c.medicationValue || c.documentId\n }\n\n localize(e: any, lng: string) {\n if (!e) {\n return null\n }\n return e[lng] || e.fr || e.en || e.nl\n }\n\n /**\n * Modifies the subcontacts this svc belongs to while minimizing the number of references to the svcs inside the subcontacts\n * After the invocation, there is at least one subcontact with provided poaId and heId that contains the svc\n * The svc is not removed from a previous subcontact it would belong to except if the new conditions are compatible\n * Note that undefined and null do not have the same meaning for formId\n * If formId is null: the subcontact which refers svc must have a null formId\n * If formId is undefined, the subcontact can have any value for formId\n *\n * When a svc does not exist yet in the current contact but exists in a previous contact, all the scs it was belonging to are\n * copied in the current contact\n *\n * the svc returned is the one that's inside the ctc\n *\n * @param ctc\n * @param user\n * @param ctcs\n * @param svc\n * @param formId\n * @param poaId aMap {heId2: [poaId11, poaId12], heId2: [poaId21] }\n * @param heId an Array of heIds, equivalent to poaIds = {heId: [], ...}\n * @param init\n * @returns {*}\n */\n\n promoteServiceInContact(\n ctc: models.Contact,\n user: models.User,\n ctcs: Array,\n svc: models.Service,\n formId: string,\n poaIds?: { [key: string]: string[] },\n heIds?: Array,\n init?: any\n ) {\n if (!ctc) {\n return null\n }\n const existing = ctc.services!.find((s) => s.id === svc.id)\n const promoted = _.extend(_.extend(existing || {}, svc), {\n author: user.id,\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n modified: new Date().getTime(),\n })\n if (!existing) {\n ;(ctc.services || (ctc.services = [])).push(promoted)\n }\n const allSubcontactsInCurrentContactContainingService = (ctc.subContacts || []).filter((csc) =>\n (csc.services || []).some((s) => s.serviceId === svc.id)\n )\n\n //Rearrange poaIds and heIds as a hierarchy\n const hierarchyOfHeAndPoaIds: { [key: string]: Array } = {}\n ;(heIds || []).forEach((id) => (hierarchyOfHeAndPoaIds[id || '_'] = []))\n Object.keys(poaIds || {}).forEach((k: string) => {\n const poas = hierarchyOfHeAndPoaIds[k]\n if (poas) {\n hierarchyOfHeAndPoaIds[k] = _.concat(poas, (poaIds || {})[k])\n } else {\n hierarchyOfHeAndPoaIds[k] = (poaIds || {})[k]\n }\n })\n\n const pastCtc =\n (svc.contactId && svc.contactId !== ctc.id && ctcs.find((c) => c.id === svc.contactId)) ||\n ctcs.reduce(\n (selected: { s: models.Service | null; c: models.Contact | null }, c: models.Contact) => {\n const candidate = (c.services || []).find((s) => s.id === svc.id)\n return ctc.id !== c.id && candidate && (selected.s === null || before(selected.s.modified || 0, candidate.modified || 0))\n ? { s: candidate, c: c }\n : selected\n },\n { s: null, c: null }\n ).c\n //Make sure that all scs the svc was belonging to are copied inside the current contact\n pastCtc &&\n pastCtc\n .subContacts!.filter((psc) => psc.services!.some((s) => s.serviceId === svc.id))\n .forEach((psc) => {\n const sameInCurrent = allSubcontactsInCurrentContactContainingService.find(\n (csc) => csc.formId === psc.formId && csc.planOfActionId === psc.planOfActionId && csc.healthElementId === psc.healthElementId\n )\n if (sameInCurrent) {\n if (!sameInCurrent.services!.some((s) => s.serviceId === svc.id)) {\n sameInCurrent.services!.push({ serviceId: svc.id })\n }\n } else {\n const newSubContact = _.assign(_.assign({}, psc), {\n services: [{ serviceId: svc.id }],\n })\n ctc.subContacts!.push(newSubContact)\n allSubcontactsInCurrentContactContainingService.push(newSubContact)\n }\n })\n\n if (!Object.keys(hierarchyOfHeAndPoaIds).length) {\n hierarchyOfHeAndPoaIds._ = [] //Default is to have at least one option with heId equals to null (represented by _)\n }\n\n Object.keys(hierarchyOfHeAndPoaIds).forEach((heId: string | null) => {\n if (heId === '_') {\n heId = null\n }\n const subPoaIds = heId ? hierarchyOfHeAndPoaIds[heId] : []\n ;((subPoaIds || []).length ? subPoaIds : [null]).forEach((poaId) => {\n //Create or assign subcontacts for all pairs he/poa (can be null/null)\n let destinationSubcontact = ctc.subContacts!.find(\n (sc) =>\n (!formId || sc.formId === formId) &&\n ((!poaId && !sc.planOfActionId) || sc.planOfActionId === poaId) &&\n ((!heId && !sc.healthElementId) || sc.healthElementId === heId)\n )\n if (!destinationSubcontact) {\n ctc.subContacts!.push(\n (destinationSubcontact = new models.SubContact({\n formId: formId || undefined,\n planOfActionId: poaId,\n healthElementId: heId,\n services: [],\n }))\n )\n }\n\n const redundantSubcontact =\n allSubcontactsInCurrentContactContainingService.find((aSc) => destinationSubcontact === aSc) ||\n allSubcontactsInCurrentContactContainingService.find(\n (aSc) =>\n (!aSc.planOfActionId || aSc.planOfActionId === destinationSubcontact!.planOfActionId) &&\n (!aSc.healthElementId || aSc.healthElementId === destinationSubcontact!.healthElementId) &&\n (!aSc.formId || aSc.formId === destinationSubcontact!.formId)\n ) // Find a compatible sc: one that does not contain extra and ≠ information than the destination\n\n if (redundantSubcontact && redundantSubcontact !== destinationSubcontact) {\n redundantSubcontact.services!.splice(\n redundantSubcontact.services!.findIndex((link) => link.serviceId === svc.id),\n 1\n )\n }\n if (!destinationSubcontact.services!.some((s) => s.serviceId === svc.id)) {\n destinationSubcontact.services!.push({ serviceId: svc.id! })\n }\n })\n })\n\n return (init && init(promoted)) || promoted\n }\n\n isNumeric(svc: models.Service, lng: string) {\n const c = this.preferredContent(svc, lng)\n return c && (c.measureValue || c.numberValue || c.numberValue == 0)\n }\n\n service() {\n return {\n newInstance: (user: models.User, s: any) =>\n _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.embed.Service',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: s?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: s?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: [],\n tags: [],\n content: {},\n valueDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n s\n ),\n }\n }\n\n medication() {\n const regimenScores: any = {\n afterwakingup: 63000,\n beforebreakfast: 70000,\n duringbreakfast: 80000,\n afterbreakfast: 90000,\n morning: 100000,\n betweenbreakfastandlunch: 103000,\n beforelunch: 113000,\n midday: 120000,\n duringlunch: 123000,\n afterlunch: 130000,\n afternoon: 140000,\n betweenlunchanddinner: 160000,\n beforedinner: 180000,\n duringdinner: 190000,\n afterdinner: 200000,\n evening: 210000,\n betweendinnerandsleep: 213000,\n thehourofsleep: 220000,\n night: 230000,\n beforemeals: -30000,\n betweenmeals: -20000,\n aftermeals: -10000,\n }\n\n const myself = {\n regimenScores: function () {\n return regimenScores\n },\n medicationNameToString: function (m: any): string {\n return m && m.compoundPrescription\n ? m.compoundPrescription\n : m && m.substanceProduct\n ? myself.productToString(m && m.substanceProduct)\n : myself.productToString(m && m.medicinalProduct)\n },\n reimbursementReasonToString: (m: any, lang: string) => {\n return m && m.reimbursementReason && m.reimbursementReason.label && m.reimbursementReason.label.hasOwnProperty(lang)\n ? m.reimbursementReason.label[lang]\n : ''\n },\n medicationToString: (m: any, lang: string) => {\n let res = `${myself.medicationNameToString(m)}, ${myself.posologyToString(m, lang)}`\n const reason = myself.reimbursementReasonToString(m, lang)\n res = m.numberOfPackages\n ? `${m.numberOfPackages} ${m.numberOfPackages > 1 ? this.i18n[lang].packagesOf : this.i18n[lang].packageOf} ${res}`\n : res\n res = m.duration ? `${res} ${this.i18n[lang].during} ${myself.durationToString(m.duration, lang)}` : res\n res = reason ? `${res} (${reason})` : res\n return res\n },\n productToString: (m: any): string => {\n if (!m) {\n return ''\n }\n return m.intendedname\n },\n posologyToString: (m: any, lang: string) => {\n if (m) {\n if (m.instructionForPatient && m.instructionForPatient.length) {\n return m.instructionForPatient\n }\n if (!m.regimen || !m.regimen.length) {\n return ''\n }\n\n const unit =\n m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.administrationUnit\n ? m.regimen[0].administratedQuantity.administrationUnit.code\n : m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.unit\n let quantity = m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.quantity\n\n m.regimen.slice(1).find((ri: any) => {\n const oUnit =\n ri.administratedQuantity && ri.administratedQuantity.administrationUnit\n ? ri.administratedQuantity.administrationUnit.code\n : ri.administratedQuantity && ri.administratedQuantity.unit\n const oQuantity = ri.administratedQuantity && ri.administratedQuantity.quantity\n\n if (oQuantity !== quantity) {\n quantity = -1\n }\n return oUnit !== unit && oQuantity !== quantity\n })\n\n const cplxRegimen = !unit || quantity < 0\n const quantityUnit = cplxRegimen ? `1 ${this.i18n[lang].take_s_}` : `${quantity} ${unit || this.i18n[lang].take_s_}`\n\n const dayPeriod = m.regimen.find((r: any) => r.weekday !== null && r.weekday !== undefined)\n ? this.i18n[lang].weekly\n : m.regimen.find((r: any) => r.date)\n ? this.i18n[lang].monthly\n : this.i18n[lang].daily\n\n return `${quantityUnit}, ${m.regimen.length} x ${dayPeriod}, ${_.sortBy(\n m.regimen,\n (r) =>\n (r.date ? r.date * 1000000 : 29990000000000) +\n (r.dayNumber || 0) * 1000000 +\n ((r.weekday && r.weekday.weekNumber) || 0) * 7 * 1000000 +\n (r.timeOfDay ? r.timeOfDay : r.dayPeriod && r.dayPeriod.code ? (regimenScores[r.dayPeriod.code] as number) : 0)\n )\n .map((r) => (cplxRegimen ? myself.regimenToExtString(r, lang) : myself.regimenToString(r, lang)))\n .join(', ')}`\n }\n },\n frequencyToString: (m: any, lang: string) => {\n if (m.instructionForPatient && m.instructionForPatient.length) {\n return m.instructionForPatient\n }\n if (!m.regimen || !m.regimen.length) {\n return ''\n }\n\n const dayPeriod = m.regimen.find((r: any) => r.weekday !== null && r.weekday !== undefined)\n ? this.i18n[lang].weekly\n : m.regimen.find((r: any) => r.date)\n ? this.i18n[lang].monthly\n : this.i18n[lang].daily\n\n return `${m.regimen.length} x ${dayPeriod}`\n },\n durationToString: (d: models.Duration, lang: string) => {\n return d.value ? `${d.value} ${this.localize(d.unit!.label, lang)}` : ''\n },\n regimenToExtString: (r: models.RegimenItem, lang: string) => {\n const desc = myself.regimenToString(r, lang)\n return (\n (r.administratedQuantity && r.administratedQuantity.quantity && desc\n ? `${desc} (${r.administratedQuantity.quantity} ${\n (r.administratedQuantity.administrationUnit ? r.administratedQuantity.administrationUnit.code : r.administratedQuantity.unit) ||\n this.i18n[lang].take_s_\n })`\n : desc) || ''\n )\n },\n regimenToString: (r: models.RegimenItem, lang: string) => {\n let res = r.date\n ? `${this.i18n[lang].the} ${moment(r.date).format('DD/MM/YYYY')}`\n : r.dayNumber\n ? `${this.i18n[lang].onDay} ${r.dayNumber}`\n : r.weekday && r.weekday.weekday\n ? `${this.i18n[lang].on} ${r.weekday.weekday}`\n : null\n if (r.dayPeriod && r.dayPeriod.code && r.dayPeriod.code.length) {\n res = res\n ? `${res} ${this.i18n[lang][r.dayPeriod.code] || this.localize(r.dayPeriod.label, lang) || r.dayPeriod.code}`\n : this.i18n[lang][r.dayPeriod.code] || this.localize(r.dayPeriod.label, lang) || r.dayPeriod.code\n }\n if (r.timeOfDay) {\n const timeOfDay =\n r.timeOfDay === 120000\n ? this.i18n[lang].noon\n : `${Math.floor(r.timeOfDay / 10000)}:${('' + (Math.floor(r.timeOfDay / 100) % 100)).replace(/^(.)$/, '0$1')}`\n res = res ? res + ' ' + this.i18n[lang].at + ' ' + timeOfDay : timeOfDay\n }\n return res\n },\n localize: (s: any, lang: string) => {\n if (!s) {\n return s\n }\n return (\n this.i18n[lang][s] ||\n (this.i18n[lang][s.toLowerCase()] &&\n this.i18n[lang][s.toLowerCase()]\n .split('')\n .map((c: string, idx: number) => (idx >= s.length || s[idx].toLocaleLowerCase() === s[idx] ? c : c.toLocaleUpperCase()))\n .join('')) ||\n s\n ) //Applies the (lower/upper)case to the translated lowercase version of the input string (s)\n },\n }\n return myself\n }\n\n /**\n * @param contact a contact\n * @return the id of the patient that the contact refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(contact: models.Contact): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: contact, type: EntityWithDelegationTypeName.Contact }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given contact\n */\n async hasWriteAccess(contact: models.Contact): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: contact, type: EntityWithDelegationTypeName.Contact })\n }\n\n /**\n * Share an existing contact with other data owners, allowing them to access the non-encrypted data of the contact and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the contact.\n * @param contact the contact to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * contact does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this contact refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n contact: models.Contact,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(contact, { [delegateId]: options })\n }\n\n /**\n * Share an existing contact with other data owners, allowing them to access the non-encrypted data of the contact and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param contact the contact to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * contact does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this contact refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n contact: models.Contact,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(contact, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing contact with other data owners, allowing them to access the non-encrypted data of the contact and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param contact the contact to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * contact does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this contact refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n contact: models.Contact,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(contact, EntityWithDelegationTypeName.Contact)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyContactAs(self, entityWithEncryptionKey) : contact\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Contact,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareContacts(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Contact\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Contact })\n }\n\n getEncryptionKeysOf(entity: models.Contact): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Contact }, undefined)\n }\n\n async subscribeToServiceEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (dataSample: Service) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n return subscribeToEntityEvents(\n this.host,\n this.authApi,\n 'Service',\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted: Service) => (await this.decryptServices(currentUser.healthcarePartyId!, [encrypted]))[0]\n ).then((ws) => new ConnectionImpl(ws))\n }\n\n async subscribeToContactEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (dataSample: Contact) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n return subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.Contact,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted: Contact) => (await this.decrypt(currentUser.healthcarePartyId!, [encrypted]))[0]\n ).then((ws) => new ConnectionImpl(ws))\n }\n\n createDelegationDeAnonymizationMetadata(entity: Contact, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Contact }, delegates)\n }\n}\n","import { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { UserEncryptionKeysManager } from './crypto/UserEncryptionKeysManager'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { ExtendedApisUtils } from './crypto/ExtendedApisUtils'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\nimport { ExchangeDataManager } from './crypto/ExchangeDataManager'\nimport { AccessControlKeysHeadersProvider } from './crypto/AccessControlKeysHeadersProvider'\nimport { KeyPair } from './crypto/RSA'\nimport { DelegationsDeAnonymization } from './crypto/DelegationsDeAnonymization'\n\nexport class IccCryptoXApi {\n /**\n * The instance of {@link CryptoPrimitives} used by this instance of the iCure SDK.\n */\n get primitives(): CryptoPrimitives {\n return this._cryptoPrimitives\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice.\n */\n get exchangeKeys(): ExchangeKeysManager {\n return this._exchangeKeysManager\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get keyStorage(): KeyStorageFacade {\n return this._keyStorage\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get storage(): StorageFacade {\n return this._storage\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get xapi(): ExtendedApisUtils {\n return this.xapiUtils\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get exchangeData(): ExchangeDataManager {\n return this._exchangeDataManager\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get confidential(): ConfidentialEntities {\n return this._confidentialEntities\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get accessControlKeysHeaders(): AccessControlKeysHeadersProvider {\n return this._accessControlKeysHeaders\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get userKeysManager(): UserEncryptionKeysManager {\n return this._keyManager\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get shamirKeysManager(): ShamirKeysManager {\n return this._shamirManager\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get delegationsDeAnonymization(): DelegationsDeAnonymization {\n return this._delegationsDeAnonymisation\n }\n\n /**\n * @internal\n */\n constructor(\n private readonly _exchangeKeysManager: ExchangeKeysManager,\n private readonly _cryptoPrimitives: CryptoPrimitives,\n private readonly _keyManager: UserEncryptionKeysManager,\n private readonly _dataOwnerApi: IccDataOwnerXApi,\n private readonly xapiUtils: ExtendedApisUtils,\n private readonly _shamirManager: ShamirKeysManager,\n private readonly _storage: StorageFacade,\n private readonly _keyStorage: KeyStorageFacade,\n private readonly _confidentialEntities: ConfidentialEntities,\n private readonly _exchangeDataManager: ExchangeDataManager,\n private readonly _accessControlKeysHeaders: AccessControlKeysHeadersProvider,\n private readonly _delegationsDeAnonymisation: DelegationsDeAnonymization\n ) {}\n\n /**\n * Deletes values cached by the crypto api, to allow to detect changes in stored key pairs, exchange keys and/or current data owner details.\n * This method may be useful in cases where a user is logged in from multiple devices or in cases where other users have just shared some data with\n * the current user for the first time.\n */\n async forceReload() {\n await this._exchangeKeysManager.reloadCache()\n this._dataOwnerApi.clearCurrentDataOwnerIdsCache()\n await this._keyManager.reloadKeys()\n await this._exchangeDataManager.clearOrRepopulateCache()\n }\n\n /**\n * Get all key pairs available for the decrpytion and encryption of data to the current data owner. These include the key pairs from the data owner\n * and his parents.\n * @return an object with:\n * - `self` an object containing the current data owner id and the list of key pairs available for the current data owner with verification details.\n * - `parents` the list of parents to the current data owner with the list of key pairs available for each parent. The list is ordered from the\n * topmost ancestor (at index 0) to the direct parent of the current data owner (at the last index, may be 0).\n */\n getEncryptionDecryptionKeypairsForDataOwnerHierarchy(): Promise<{\n self: {\n dataOwnerId: string\n keys: { pair: KeyPair; verified: boolean }[]\n }\n parents: {\n dataOwnerId: string\n keys: { pair: KeyPair; verified: boolean }[]\n }[]\n }> {\n return this._keyManager.getCurrentUserHierarchyAvailableKeypairs()\n }\n\n /**\n * Get a key pair with the provided fingerprint if present.\n * @param fingerprint a key-pair/public-key fingerprint\n * @return the pair associated to the fingerprint and a boolean indicating if the pair is verified, if present, else undefined\n */\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair; verified: boolean } | undefined {\n return this._keyManager.getKeyPairForFingerprint(fingerprint)\n }\n\n /**\n * Get the public keys of available key pairs for the current user and his parents in hex-encoded spki representation (uses cached keys: no request\n * is done to the server).\n * Note that this will also include unverified keys.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise {\n return this._keyManager.getCurrentUserHierarchyAvailablePublicKeysHex()\n }\n\n /**\n * Get the public keys of available key pairs for the current user in hex-encoded spki representation (uses cached keys: no request is done to the\n * server).\n * By setting {@link verifiedOnly} to true only the public keys for verified key pairs will be returned: these will include only key pairs created\n * on this device or which have been verified using {@link CryptoStrategies} on this device.\n * @param verifiedOnly if true only the verified public keys will be returned.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise {\n return this._keyManager.getCurrentUserAvailablePublicKeysHex(verifiedOnly)\n }\n}\n","import { User } from '../icc-api/model/User'\nimport { IccDeviceApi, IccPatientApi, IccUserApi } from '../icc-api'\nimport { HealthcareParty } from '../icc-api/model/HealthcareParty'\nimport { Patient } from '../icc-api/model/Patient'\nimport { Device } from '../icc-api/model/Device'\nimport { fingerprintV1, fingerprintV2, hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of } from './crypto/utils'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { XHR } from '../icc-api/api/XHR'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../icc-api/model/CryptoActorStub'\nimport { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { IccDataownerApi } from '../icc-api/api/IccDataownerApi'\nimport { DataOwnerWithType } from '../icc-api/model/DataOwnerWithType'\n\nexport type DataOwnerOrStub = DataOwner | CryptoActorStub\nexport type DataOwner = HealthcareParty | Patient | Device\n\nexport class IccDataOwnerXApi extends IccDataownerApi {\n private currentDataOwnerType: DataOwnerTypeEnum | undefined\n private currentDataOwnerHierarchyIds: string[] | undefined\n\n private get selfDataOwnerId(): string | undefined {\n if (!this.currentDataOwnerHierarchyIds) return undefined\n return this.currentDataOwnerHierarchyIds[this.currentDataOwnerHierarchyIds.length - 1]\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n /**\n * Gets the public keys of a data owner to be used for encryption with RSA-OAEP+SHA-1, in hex format.\n * @param dataOwner a data owner.\n * @return the public keys for the data owner in hex format.\n */\n getHexPublicKeysWithSha1Of(dataOwner: DataOwnerOrStub): Set {\n return hexPublicKeysWithSha1Of(dataOwner)\n }\n\n /**\n * Gets the public keys of a data owner to be used for encryption with RSA-OAEP+SHA-256, in hex format.\n * @param dataOwner a data owner.\n * @return the public keys for the data owner in hex format.\n */\n getHexPublicKeysWithSha256Of(dataOwner: DataOwnerOrStub): Set {\n return hexPublicKeysWithSha256Of(dataOwner)\n }\n\n /**\n * Gets all public keys of a data owner to be used for encryption, in hex format. Note that this may include keys that should be used for different\n * encryption algorithms.\n */\n getHexPublicKeysOf(dataOwner: DataOwnerOrStub): Set {\n return new Set([...this.getHexPublicKeysWithSha1Of(dataOwner), ...this.getHexPublicKeysWithSha256Of(dataOwner)])\n }\n\n async getCurrentDataOwnerStub(): Promise {\n return CryptoActorStubWithType.fromDataOwner(await this.getCurrentDataOwner())\n }\n\n /**\n * If the logged user is a data owner get the current data owner. This information is cached without expiration, and will only be updated in case\n * of forced refresh.\n * @throws if the current user is not a data owner.\n */\n async getCurrentDataOwnerId(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.getCurrentDataOwnerHierarchyIds()\n }\n return this.currentDataOwnerHierarchyIds![this.currentDataOwnerHierarchyIds!.length - 1]\n }\n\n /**\n * If the logged user is a data owner get its parent hierarchy. This information is cached without expiration, and will only be updated in case\n * of forced refresh.\n * The resulting array starts with the topmost parent (the only ancestor without a parent) and ends with the data owner itself.\n * @throws if the current user is not a data owner.\n */\n async getCurrentDataOwnerHierarchyIds(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n }\n return [...this.currentDataOwnerHierarchyIds!]\n }\n\n /**\n * Get the hierarchy for the current data owner starting from the specified parent.\n * @throws an array starting at the topmost parent and ending at the provided parent id. If the provided id is not part of the hierarchy throws an\n * error.\n */\n async getCurrentDataOwnerHierarchyIdsFrom(parentId: string): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.getCurrentDataOwnerHierarchyIds()\n }\n const res = []\n for (const dataOwnerId of this.currentDataOwnerHierarchyIds!) {\n res.push(dataOwnerId)\n if (dataOwnerId === parentId) return res\n }\n throw new Error(`${parentId} is not part of the data owner hierarchy for the current user`)\n }\n\n /**\n * If the logged user is a data owner get the current data owner and all of his parents.\n * @throws if the current user is not a data owner.\n * @return the current data owner hierarchy, starting from the topmost parent to the current data owner.\n */\n async getCurrentDataOwnerHierarchy(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n return await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n } else return Promise.all(this.currentDataOwnerHierarchyIds!.map((id) => this.getDataOwner(id)))\n }\n\n /**\n * If the logged user is a data owner get the type of the current data owner. This information is cached.\n * @throws if the current user is not a data owner\n */\n async getCurrentDataOwnerType(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n }\n return this.currentDataOwnerType!\n }\n\n /**\n * Get the id of the data owner entity for a user.\n * @param user a user that is also a data owner.\n * @return the id of the data owner corresponding to the provided user.\n * @throws if the user is not a data owner.\n */\n getDataOwnerIdOf(user: User): string {\n const dataOwnerId = user.healthcarePartyId ?? user.patientId ?? user.deviceId\n if (dataOwnerId == undefined) {\n throw Error(`User ${user.id} is not a data owner`)\n }\n return dataOwnerId\n }\n\n /**\n * Get a data owner. Note that this does not decrpyt patient data owners.\n * @param ownerId id of the data owner to retrieve (patient, medical device, hcp, ...)\n * @return the data owner with the provided id\n * @throws if you have no access to the data owner. Use {@link getCryptoActorStub}.\n */\n async getDataOwner(ownerId: string): Promise {\n return super.getDataOwner(ownerId).then((dowt) => {\n if (dowt.dataOwner.id === this.selfDataOwnerId) this.checkDataOwnerIntegrity(dowt.dataOwner)\n return dowt\n })\n }\n\n /**\n * Get a crypto actor stub for a data owner.\n * @param ownerId id of the data owner for which you want to retrieve the stub (patient, medical device, hcp, ...)\n * @return the crypto actor stub of the data owner with the provided id\n */\n async getCryptoActorStub(ownerId: string): Promise {\n return super.getCryptoActorStub(ownerId).then((dowt) => {\n if (dowt.stub.id === this.selfDataOwnerId) this.checkDataOwnerIntegrity(dowt.stub)\n return dowt\n })\n }\n\n /**\n * Clears the cache of current data owner id and parent hierarchy ids. The hierarchy of a data owner should not normally change over time, so this\n * method should be rarely needed.\n */\n clearCurrentDataOwnerIdsCache() {\n this.currentDataOwnerHierarchyIds = undefined\n }\n\n private checkDataOwnerIntegrity(dataOwner: DataOwnerOrStub) {\n const keys = new Set([...this.getHexPublicKeysWithSha1Of(dataOwner), ...this.getHexPublicKeysWithSha256Of(dataOwner)])\n if (new Set(Array.from(keys).map((x) => fingerprintV2(x))).size != keys.size)\n throw new Error(\n `Different public keys for ${dataOwner.id} have the same fingerprint; this should not happen in normal circumstances. Please report this error to iCure.`\n )\n }\n\n private async forceLoadCurrentDataOwnerHierarchyAndCacheIds(): Promise {\n let curr = await this.getCurrentDataOwner()\n this.checkDataOwnerIntegrity(curr.dataOwner)\n this.currentDataOwnerType = curr.type\n let res = [curr]\n while ((curr.dataOwner as HealthcareParty).parentId) {\n curr = await this.getDataOwner((curr.dataOwner as HealthcareParty).parentId!)\n res = [curr, ...res]\n }\n this.currentDataOwnerHierarchyIds = res.map((x) => x.dataOwner.id!)\n return res\n }\n}\n","import {IccAuthApi, IccDeviceApi} from '../icc-api'\nimport {Device} from '../icc-api/model/Device'\nimport {AuthenticationProvider, NoAuthenticationProvider} from './auth/AuthenticationProvider'\nimport {AbstractFilter} from \"./filters/filters\"\nimport {Connection, ConnectionImpl} from \"../icc-api/model/Connection\"\nimport {subscribeToEntityEvents, SubscriptionOptions} from \"./utils/websocket\"\nimport {IccUserXApi} from \"./icc-user-x-api\"\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccDeviceXApi extends IccDeviceApi {\n private readonly userApi: IccUserXApi\n private readonly authApi: IccAuthApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n userApi: IccUserXApi,\n authApi: IccAuthApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n\n this.userApi = userApi\n this.authApi = authApi\n }\n\n async subscribeToDeviceEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (dataSample: Device) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n return subscribeToEntityEvents(\n this.host,\n this.authApi,\n 'Device',\n eventTypes,\n filter,\n eventFired,\n options,\n ).then((rs) => new ConnectionImpl(rs))\n }\n}\n","import { IccDoctemplateApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport { extend } from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { DocumentTemplate } from '../icc-api/model/models'\nimport { string2ua } from './utils/binary-utils'\nimport { XHR } from '../icc-api/api/XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccDoctemplateXApi extends IccDoctemplateApi {\n crypto: IccCryptoXApi\n authenticationProvider: AuthenticationProvider\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.authenticationProvider = authenticationProvider\n this.fetchImpl = fetchImpl\n }\n\n newInstance(user: models.User, template: string, c: any): Promise {\n return new Promise((resolve, reject) => {\n const documentTemplate: DocumentTemplate = {\n ...(c ?? {}),\n _type: 'org.taktik.icure.entities.DocumentTemplate',\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n owner: c?.owner ?? user.id,\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n guid: c?.guid ?? this.crypto.primitives.randomUuid(),\n group: c?.group ?? null,\n specialty: c?.specialty ?? null,\n attachment: c?.attachment ?? string2ua(template),\n mainUti: c?.mainUti ?? 'public.plain-text',\n }\n if (documentTemplate.group && documentTemplate.group.guid == null) {\n documentTemplate.group.guid = this.crypto.primitives.randomUuid()\n }\n\n //sauver l doctemplate vide\n\n if (template) {\n //save attachement\n }\n\n return resolve(documentTemplate)\n })\n }\n\n // noinspection JSUnusedLocalSymbols\n findAllByOwnerId(ownerId: string): Promise> {\n return new Promise(function (resolve, reject) {\n reject(console.log('findByHCPartyPatientSecretFKeys not implemented in document API!'))\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n getAttachmentUrl(documentId: string, attachmentId: string) {\n return (\n this.host + '/doctemplate/{documentId}/attachment/{attachmentId}'.replace('{documentId}', documentId).replace('{attachmentId}', attachmentId)\n )\n }\n\n getAttachmentText(documentTemplateId: string, attachmentId: string): Promise {\n const _body = null\n\n const _url =\n this.host +\n '/doctemplate/{documentTemplateId}/attachmentText/{attachmentId}'\n .replace('{documentTemplateId}', documentTemplateId + '')\n .replace('{attachmentId}', attachmentId + '') +\n '?ts=' +\n new Date().getTime()\n\n return XHR.sendCommand('GET', _url, this.headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => {\n if (doc.contentType.startsWith('application/octet-stream')) {\n const enc = new TextDecoder('utf-8')\n const arr = new Uint8Array(doc.body)\n return enc.decode(arr)\n } else if (doc.contentType.startsWith('text/plain') || doc.contentType.startsWith('text/html') || doc.contentType.startsWith('text/xml')) {\n return doc.body\n } else {\n return false\n }\n })\n .catch((err) => this.handleError(err))\n }\n}\n","import { IccAuthApi, IccDocumentApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport { XHR } from '../icc-api/api/XHR'\nimport * as models from '../icc-api/model/models'\n\nimport { a2b, hex2ua, string2ua, ua2string, ua2utf8 } from './utils/binary-utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { EntityWithDelegationTypeName } from './utils'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccDocumentXApi extends IccDocumentApi implements EncryptedEntityXApi {\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n\n /** maps invalid UTI values to corresponding MIME type for backward-compatibility (pre-v1.0.117) */\n compatUtiRevDefs: { [key: string]: string } = {\n 'com.adobe.encapsulatedPostscript': 'image/eps',\n 'com.adobe.illustrator.aiImage': 'application/illustrator',\n 'com.adobe.indesignImage': 'image/indesign',\n 'com.adobe.photoshopImage': 'image/psd',\n 'com.adobe.postscriptPfaFont': 'application/x-font-type1',\n 'com.adobe.postscriptPfbFont': 'application/x-font-type1',\n 'com.allume.stuffitArchive': 'application/stuffit',\n 'com.apple.binhexArchive': 'application/binhex',\n 'com.apple.diskImageUdif': 'application/x-apple-diskimage',\n 'com.apple.macbinaryArchive': 'application/macbinary',\n 'com.apple.quartzComposerComposition': 'application/x-quartzcomposer',\n 'com.apple.quicktimeImage': 'image/x-quicktime',\n 'com.apple.quicktimeMovie': 'video/quicktime',\n 'com.js.efxFax': 'image/efax',\n 'com.macromedia.shockwaveFlash': 'application/x-shockwave-flash',\n 'com.microsoft.advancedStreamRedirector': 'video/x-ms-asx',\n 'com.microsoft.advancedSystemsFormat': 'video/x-ms-asf',\n 'com.microsoft.waveformAudio': 'audio/wave',\n 'com.microsoft.windowsDynamicLinkLibrary': 'application/x-msdownload',\n 'com.microsoft.windowsExecutable': 'application/exe',\n 'com.microsoft.windowsMediaWax': 'audio/x-ms-wax',\n 'com.microsoft.windowsMediaWm': 'video/x-ms-wm',\n 'com.microsoft.windowsMediaWma': 'audio/x-ms-wma',\n 'com.microsoft.windowsMediaWmd': 'video/x-ms-wmd',\n 'com.microsoft.windowsMediaWmp': 'video/x-ms-wmp',\n 'com.microsoft.windowsMediaWmv': 'video/x-ms-wmv',\n 'com.microsoft.windowsMediaWmx': 'video/x-ms-wmx',\n 'com.microsoft.windowsMediaWmz': 'video/x-ms-wmz',\n 'com.microsoft.windowsMediaWvx': 'video/x-ms-wvx',\n 'com.netscape.javascriptSource': 'text/javascript',\n 'com.pkware.zipArchive': 'application/zip',\n 'com.rarlab.rarArchive': 'application/rar',\n 'com.redhat.redhatPackage': 'application/x-redhat-package',\n 'com.sgi.sgiImage': 'image/sgi',\n 'com.sun.javaAppDescriptor': 'text/vnd.sun.j2me.app-descriptor',\n 'com.sun.javaArchive': 'application/java-archive',\n 'com.sun.javaClass': 'application/java',\n 'com.sun.javaSource': 'text/x-java-source',\n 'com.sun.javaWebStart': 'application/jnlp',\n 'com.truevision.tgaImage': 'image/tga',\n 'org.bzip.bzip2Archive': 'application/x-bzip2',\n 'org.debian.debianPackage': 'application/x-debian-package',\n 'org.gnu.gnuTarArchive': 'application/x-gtar',\n 'org.gnu.gnuZipArchive': 'application/gzip',\n 'org.oasis.opendocument.textMaster': 'application/vnd.oasis.opendocument.text-master',\n 'org.oasis.opendocument.textWeb': 'application/vnd.oasis.opendocument.text-web',\n 'org.xiph.oggTheora': 'video/ogg',\n 'org.xiph.oggVorbis': 'audio/ogg',\n 'public.aifcAudio': 'audio/aiff',\n 'public.aiffAudio': 'audio/aiff',\n 'public.assemblySource': 'text/x-asm',\n 'public.cHeader': 'text/x-c-header',\n 'public.cpioArchive': 'application/x-cpio',\n 'public.cPlusPlusHeader': 'text/x-c++-hdr',\n 'public.cPlusPlusSource': 'application/x-cplusplus',\n 'public.cshScript': 'application/x-csh',\n 'public.cSource': 'text/x-c-code',\n 'public.isoImage': 'application/x-iso-image',\n 'public.mpeg4Audio': 'audio/mp4',\n 'public.objectiveCPlusPlusSource': 'text/x-objcppsrc',\n 'public.objectiveCSource': 'text/x-objcsrc',\n 'public.opentypeFont': 'font/opentype',\n 'public.perlScript': 'text/x-perl',\n 'public.phpScript': 'text/php',\n 'public.plainText': 'text/plain',\n 'public.pythonScript': 'text/x-python-script',\n 'public.shellScript': 'application/x-sh',\n 'public.tarArchive': 'application/tar',\n 'public.truetypeTtfFont': 'application/x-font-ttf',\n 'public.ulawAudio': 'audio/au',\n 'public.xbitmapImage': 'image/xbm',\n 'unofficial.atomFeed': 'application/atom+xml',\n 'unofficial.m3u8Playlist': 'application/x-mpegURL',\n 'unofficial.plsPlaylist': 'audio/scpls',\n 'unofficial.rdfFeed': 'application/rdf+xml',\n 'unofficial.rssFeed': 'application/rss+xml',\n }\n\n utiRevDefs: { [key: string]: string } = {\n ...this.compatUtiRevDefs,\n 'com.adobe.encapsulated-postscript': 'image/eps',\n 'com.adobe.illustrator.ai-image': 'application/illustrator',\n 'com.adobe.indesign-image': 'image/indesign',\n 'com.adobe.pdf': 'application/pdf',\n 'com.adobe.photoshop-image': 'image/psd',\n 'com.adobe.postscript': 'application/postscript',\n 'com.adobe.postscript-pfa-font': 'application/x-font-type1',\n 'com.adobe.postscript-pfb-font': 'application/x-font-type1',\n 'com.allume.stuffit-archive': 'application/stuffit',\n 'com.apple.applescript.script': 'application/x-applescript',\n 'com.apple.applescript.text': 'application/x-applescript',\n 'com.apple.binhex-archive': 'application/binhex',\n 'com.apple.disk-image-udif': 'application/x-apple-diskimage',\n 'com.apple.ical.ics': 'text/calendar',\n 'com.apple.ical.vcs': 'text/x-vcalendar',\n 'com.apple.macbinary-archive': 'application/macbinary',\n 'com.apple.pict': 'image/pict',\n 'com.apple.quartz-composer-composition': 'application/x-quartzcomposer',\n 'com.apple.quicktime-image': 'image/x-quicktime',\n 'com.apple.quicktime-movie': 'video/quicktime',\n 'com.bittorrent.torrent': 'application/x-bittorrent',\n 'com.compuserve.gif': 'image/gif',\n 'com.js.efx-fax': 'image/efax',\n 'com.kodak.flashpix.image': 'image/vndfpx',\n 'com.lizardtech.djvu': 'image/vnd.djvu',\n 'com.macromedia.shockwave-flash': 'application/x-shockwave-flash',\n 'com.microsoft.advanced-stream-redirector': 'video/x-ms-asx',\n 'com.microsoft.advanced-systems-format': 'video/x-ms-asf',\n 'com.microsoft.bmp': 'image/bmp',\n 'com.microsoft.excel.xls': 'application/excel',\n 'com.microsoft.ico': 'image/x-icon',\n 'com.microsoft.powerpoint.ppt': 'application/powerpoint',\n 'com.microsoft.waveform-audio': 'audio/wave',\n 'com.microsoft.windows-dynamic-link-library': 'application/x-msdownload',\n 'com.microsoft.windows-executable': 'application/exe',\n 'com.microsoft.windows-media-wax': 'audio/x-ms-wax',\n 'com.microsoft.windows-media-wm': 'video/x-ms-wm',\n 'com.microsoft.windows-media-wma': 'audio/x-ms-wma',\n 'com.microsoft.windows-media-wmd': 'video/x-ms-wmd',\n 'com.microsoft.windows-media-wmp': 'video/x-ms-wmp',\n 'com.microsoft.windows-media-wmv': 'video/x-ms-wmv',\n 'com.microsoft.windows-media-wmx': 'video/x-ms-wmx',\n 'com.microsoft.windows-media-wmz': 'video/x-ms-wmz',\n 'com.microsoft.windows-media-wvx': 'video/x-ms-wvx',\n 'com.microsoft.word.doc': 'application/msword',\n 'com.netscape.javascript-source': 'text/javascript',\n 'com.pkware.zip-archive': 'application/zip',\n 'com.rarlab.rar-archive': 'application/rar',\n 'com.real.realaudio': 'audio/vnd.rn-realaudio',\n 'com.real.realmedia': 'application/vnd.rn-realmedia',\n 'com.real.smil': 'application/smil',\n 'com.redhat.redhat-package': 'application/x-redhat-package',\n 'com.sgi.sgi-image': 'image/sgi',\n 'com.soundblaster.soundfont': 'application/x-soundfont',\n 'com.sun.java-app-descriptor': 'text/vnd.sun.j2me.app-descriptor',\n 'com.sun.java-archive': 'application/java-archive',\n 'com.sun.java-class': 'application/java',\n 'com.sun.java-source': 'text/x-java-source',\n 'com.sun.java-web-start': 'application/jnlp',\n 'com.truevision.tga-image': 'image/tga',\n 'org.bzip.bzip2-archive': 'application/x-bzip2',\n 'org.debian.debian-package': 'application/x-debian-package',\n 'org.gnu.gnu-tar-archive': 'application/x-gtar',\n 'org.gnu.gnu-zip-archive': 'application/gzip',\n 'org.neooffice.calc': 'application/vnd.sun.xml.calc',\n 'org.neooffice.draw': 'application/vnd.sun.xml.draw',\n 'org.neooffice.global': 'application/vnd.sun.xml.writer.global',\n 'org.neooffice.impress': 'application/vnd.sun.xml.impress',\n 'org.neooffice.math': 'application/vnd.sun.xml.math',\n 'org.neooffice.writer': 'application/vnd.sun.xml.writer',\n 'org.oasis.opendocument.chart': 'application/vnd.oasis.opendocument.chart',\n 'org.oasis.opendocument.database': 'application/vnd.oasis.opendocument.database',\n 'org.oasis.opendocument.formula': 'application/vnd.oasis.opendocument.formula',\n 'org.oasis.opendocument.graphics': 'application/vnd.oasis.opendocument.graphics',\n 'org.oasis.opendocument.image': 'application/vnd.oasis.opendocument.image',\n 'org.oasis.opendocument.presentation': 'application/vnd.oasis.opendocument.presentation',\n 'org.oasis.opendocument.spreadsheet': 'application/vnd.oasis.opendocument.spreadsheet',\n 'org.oasis.opendocument.text': 'application/vnd.oasis.opendocument.text',\n 'org.oasis.opendocument.text-master': 'application/vnd.oasis.opendocument.text-master',\n 'org.oasis.opendocument.text-web': 'application/vnd.oasis.opendocument.text-web',\n 'org.tug.tex': 'text/tex',\n 'org.xiph.flac': 'audio/flac',\n 'org.xiph.ogg-theora': 'video/ogg',\n 'org.xiph.ogg-vorbis': 'audio/ogg',\n 'public.3gpp': 'video/3gpp',\n 'public.3gpp2': 'video/3gpp2',\n 'public.aifc-audio': 'audio/aiff',\n 'public.aiff-audio': 'audio/aiff',\n 'public.assembly-source': 'text/x-asm',\n 'public.avi': 'video/avi',\n 'public.c-header': 'text/x-c-header',\n 'public.cpio-archive': 'application/x-cpio',\n 'public.c-plus-plus-header': 'text/x-c++-hdr',\n 'public.c-plus-plus-source': 'application/x-cplusplus',\n 'public.csh-script': 'application/x-csh',\n 'public.c-source': 'text/x-c-code',\n 'public.css': 'text/css',\n 'public.dv': 'video/x-dv',\n 'public.flv': 'video/x-flv',\n 'public.html': 'text/html',\n 'public.iso-image': 'application/x-iso-image',\n 'public.jpeg': 'image/jpeg',\n 'public.jpeg2000': 'image/jp2',\n 'public.midi': 'audio/midi',\n 'public.mka': 'audio/x-matroska',\n 'public.mkv': 'video/x-matroska',\n 'public.mp3': 'audio/mp3',\n 'public.mpeg': 'video/mpeg',\n 'public.mpeg4': 'video/mp4',\n 'public.mpeg4-audio': 'audio/mp4',\n 'public.mpegts': 'video/MP2T',\n 'public.objective-c-plus-plus-source': 'text/x-objcppsrc',\n 'public.objective-c-source': 'text/x-objcsrc',\n 'public.opentype-font': 'font/opentype',\n 'public.perl-script': 'text/x-perl',\n 'public.php-script': 'text/php',\n 'public.plain-text': 'text/plain',\n 'public.png': 'image/png',\n 'public.python-script': 'text/x-python-script',\n 'public.rtf': 'text/rtf',\n 'public.shell-script': 'application/x-sh',\n 'public.tar-archive': 'application/tar',\n 'public.tiff': 'image/tiff',\n 'public.truetype-ttf-font': 'application/x-font-ttf',\n 'public.ulaw-audio': 'audio/au',\n 'public.vcard': 'text/vcard',\n 'public.webm': 'video/webm',\n 'public.xbitmap-image': 'image/xbm',\n 'public.xml': 'text/xml',\n 'unofficial.atom-feed': 'application/atom+xml',\n 'unofficial.m3u8-playlist': 'application/x-mpegURL',\n 'unofficial.opml': 'text/x-opml',\n 'unofficial.pls-playlist': 'audio/scpls',\n 'unofficial.rdf-feed': 'application/rdf+xml',\n 'unofficial.rss-feed': 'application/rss+xml',\n }\n\n utiExts: { [key: string]: string } = {\n jpg: 'public.jpeg',\n jpeg: 'public.jpeg',\n png: 'public.png',\n rtf: 'public.rtf',\n mpeg: 'public.mpeg',\n mpg: 'public.mpeg',\n html: 'public.html',\n htm: 'public.html',\n pdf: 'com.adobe.pdf',\n xls: 'com.microsoft.excel.xls',\n xlsx: 'com.microsoft.excel.xls',\n doc: 'com.microsoft.word.doc',\n docx: 'com.microsoft.word.doc',\n }\n\n utiDefs: { [key: string]: string } = {\n 'application/atom+xml': 'unofficial.atom-feed',\n 'application/bat': 'com.microsoft.windows-executable',\n 'application/binhex': 'com.apple.binhex-archive',\n 'application/binhex4': 'com.apple.binhex-archive',\n 'application/ecmascript': 'com.netscape.javascript-source',\n 'application/eps': 'com.adobe.encapsulated-postscript',\n 'application/excel': 'com.microsoft.excel.xls',\n 'application/exe': 'com.microsoft.windows-executable',\n 'application/gnutar': 'public.tar-archive',\n 'application/gzip': 'org.gnu.gnu-zip-archive',\n 'application/illustrator': 'com.adobe.illustrator.ai-image',\n 'application/indesign': 'com.adobe.indesign-image',\n 'application/java-archive': 'com.sun.java-archive',\n 'application/java-byte-code': 'com.sun.java-class',\n 'application/java': 'com.sun.java-class',\n 'application/javascript': 'com.netscape.javascript-source',\n 'application/jnlp': 'com.sun.java-web-start',\n 'application/latex': 'org.tug.tex',\n 'application/mac-binary': 'com.apple.macbinary-archive',\n 'application/mac-binhex': 'com.apple.binhex-archive',\n 'application/mac-binhex40': 'com.apple.binhex-archive',\n 'application/macbinary': 'com.apple.macbinary-archive',\n 'application/mspowerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/msword': 'com.microsoft.word.doc',\n 'application/octet-stream': 'com.microsoft.windows-executable',\n 'application/pdf': 'com.adobe.pdf',\n 'application/photoshop': 'com.adobe.photoshop-image',\n 'application/php': 'public.php-script',\n 'application/plain': 'public.plain-text',\n 'application/postscript': 'com.adobe.postscript',\n 'application/powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/rar': 'com.rarlab.rar-archive',\n 'application/rdf+xml': 'unofficial.rdf-feed',\n 'application/rss+xml': 'unofficial.rss-feed',\n 'application/rtf': 'public.rtf',\n 'application/smil': 'com.real.smil',\n 'application/stuffit': 'com.allume.stuffit-archive',\n 'application/tar': 'public.tar-archive',\n 'application/tga': 'com.truevision.tga-image',\n 'application/vnd.fpx': 'com.kodak.flashpix.image',\n 'application/vnd.ms-excel': 'com.microsoft.excel.xls',\n 'application/vnd.ms-powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/vnd.oasis.opendocument.chart': 'org.oasis.opendocument.chart',\n 'application/vnd.oasis.opendocument.database': 'org.oasis.opendocument.database',\n 'application/vnd.oasis.opendocument.formula': 'org.oasis.opendocument.formula',\n 'application/vnd.oasis.opendocument.graphics-template': 'org.oasis.opendocument.graphics',\n 'application/vnd.oasis.opendocument.graphics': 'org.oasis.opendocument.graphics',\n 'application/vnd.oasis.opendocument.image': 'org.oasis.opendocument.image',\n 'application/vnd.oasis.opendocument.presentation-template': 'org.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.presentation': 'org.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet-template': 'org.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.spreadsheet': 'org.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.text-master': 'org.oasis.opendocument.text-master',\n 'application/vnd.oasis.opendocument.text-template': 'org.oasis.opendocument.text',\n 'application/vnd.oasis.opendocument.text-web': 'org.oasis.opendocument.text-web',\n 'application/vnd.oasis.opendocument.text': 'org.oasis.opendocument.text',\n 'application/vnd.rn-realmedia': 'com.real.realmedia',\n 'application/vnd.sun.xml.calc.template': 'org.neooffice.calc',\n 'application/vnd.sun.xml.calc': 'org.neooffice.calc',\n 'application/vnd.sun.xml.draw.template': 'org.neooffice.draw',\n 'application/vnd.sun.xml.draw': 'org.neooffice.draw',\n 'application/vnd.sun.xml.impress.template': 'org.neooffice.impress',\n 'application/vnd.sun.xml.impress': 'org.neooffice.impress',\n 'application/vnd.sun.xml.math': 'org.neooffice.math',\n 'application/vnd.sun.xml.writer.global': 'org.neooffice.global',\n 'application/vnd.sun.xml.writer.template': 'org.neooffice.writer',\n 'application/vnd.sun.xml.writer': 'org.neooffice.writer',\n 'application/vndms-excel': 'com.microsoft.excel.xls',\n 'application/vndms-powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/vndrn-realmedia': 'com.real.realmedia',\n 'application/x-apple-diskimage': 'com.apple.disk-image-udif',\n 'application/x-applescript': 'com.apple.applescript.script',\n 'application/x-bat': 'com.microsoft.windows-executable',\n 'application/x-binary': 'com.apple.macbinary-archive',\n 'application/x-binhex40': 'com.apple.binhex-archive',\n 'application/x-bittorrent': 'com.bittorrent.torrent',\n 'application/x-bzip2': 'org.bzip.bzip2-archive',\n 'application/x-cpio': 'public.cpio-archive',\n 'application/x-cplusplus': 'public.c-plus-plus-source',\n 'application/x-csh': 'public.csh-script',\n 'application/x-deb': 'org.debian.debian-package',\n 'application/x-debian-package': 'org.debian.debian-package',\n 'application/x-eps': 'com.adobe.encapsulated-postscript',\n 'application/x-excel': 'com.microsoft.excel.xls',\n 'application/x-exe': 'com.microsoft.windows-executable',\n 'application/x-flac': 'org.xiph.flac',\n 'application/x-font-ttf': 'public.truetype-ttf-font',\n 'application/x-font-type1': 'com.adobe.postscript-pfa-font',\n 'application/x-gtar': 'org.gnu.gnu-tar-archive',\n 'application/x-gzip': 'org.gnu.gnu-zip-archive',\n 'application/x-iso-image': 'public.iso-image',\n 'application/x-java-class': 'com.sun.java-class',\n 'application/x-java': 'com.sun.java-web-start',\n 'application/x-javascript': 'com.netscape.javascript-source',\n 'application/x-latex': 'org.tug.tex',\n 'application/x-mac-binhex40': 'com.apple.binhex-archive',\n 'application/x-macbinary': 'com.apple.macbinary-archive',\n 'application/x-midi': 'public.midi',\n 'application/x-mpegURL': 'unofficial.m3u8-playlist',\n 'application/x-ms-wmd': 'com.microsoft.windows-media-wmd',\n 'application/x-ms-wmz': 'com.microsoft.windows-media-wmz',\n 'application/x-msdos-program': 'com.microsoft.windows-executable',\n 'application/x-msdownload': 'com.microsoft.windows-executable',\n 'application/x-msexcel': 'com.microsoft.excel.xls',\n 'application/x-mspowerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/x-pdf': 'com.adobe.pdf',\n 'application/x-perl': 'public.perl-script',\n 'application/x-php': 'public.php-script',\n 'application/x-quartzcomposer': 'com.apple.quartz-composer-composition',\n 'application/x-rar-compressed': 'com.rarlab.rar-archive',\n 'application/x-redhat-package': 'com.redhat.redhat-package',\n 'application/x-rpm': 'com.redhat.redhat-package',\n 'application/x-rtf': 'public.rtf',\n 'application/x-sh': 'public.shell-script',\n 'application/x-shellscript': 'public.shell-script',\n 'application/x-shockwave-flash': 'com.macromedia.shockwave-flash',\n 'application/x-sit': 'com.allume.stuffit-archive',\n 'application/x-smil': 'com.real.smil',\n 'application/x-soundfont': 'com.soundblaster.soundfont',\n 'application/x-stuffit': 'com.allume.stuffit-archive',\n 'application/x-tar': 'public.tar-archive',\n 'application/x-tex': 'org.tug.tex',\n 'application/x-texinfo': 'org.tug.tex',\n 'application/x-troff-msvideo': 'public.avi',\n 'application/x-zip-compressed': 'com.pkware.zip-archive',\n 'application/xhtml+xml': 'public.html',\n 'application/xml': 'public.xml',\n 'application/zip': 'com.pkware.zip-archive',\n 'audio/3gpp': 'public.3gpp',\n 'audio/3gpp2': 'public.3gpp2',\n 'audio/aiff': 'public.aiff-audio',\n 'audio/au': 'public.ulaw-audio',\n 'audio/basic': 'public.ulaw-audio',\n 'audio/flac': 'org.xiph.flac',\n 'audio/mid': 'public.midi',\n 'audio/midi': 'public.midi',\n 'audio/mp3': 'public.mp3',\n 'audio/mp4': 'public.mpeg4-audio',\n 'audio/mp4a-latm': 'public.mpeg4-audio',\n 'audio/mpeg': 'public.mp3',\n 'audio/mpeg3': 'public.mp3',\n 'audio/mpegurl': 'unofficial.m3u-playlist',\n 'audio/mpg': 'public.mp3',\n 'audio/ogg': 'org.xiph.ogg-vorbis',\n 'audio/scpls': 'unofficial.pls-playlist',\n 'audio/snd': 'public.ulaw-audio',\n 'audio/vnd.rn-realaudio': 'com.real.realaudio',\n 'audio/wav': 'com.microsoft.waveform-audio',\n 'audio/wave': 'com.microsoft.waveform-audio',\n 'audio/webm': 'public.webm',\n 'audio/x-adpcm': 'public.ulaw-audio',\n 'audio/x-aiff': 'public.aiff-audio',\n 'audio/x-au': 'public.ulaw-audio',\n 'audio/x-flac': 'org.xiph.flac',\n 'audio/x-matroska': 'public.mka',\n 'audio/x-mid': 'public.midi',\n 'audio/x-midi': 'public.midi',\n 'audio/x-mp3': 'public.mp3',\n 'audio/x-mpeg-3': 'public.mp3',\n 'audio/x-mpeg': 'public.mp3',\n 'audio/x-mpeg3': 'public.mp3',\n 'audio/x-mpegurl': 'unofficial.m3u-playlist',\n 'audio/x-mpg': 'public.mp3',\n 'audio/x-ms-wax': 'com.microsoft.windows-media-wax',\n 'audio/x-ms-wma': 'com.microsoft.windows-media-wma',\n 'audio/x-ogg': 'org.xiph.ogg-vorbis',\n 'audio/x-pn-realaudio-plugin': 'com.real.realaudio',\n 'audio/x-pn-realaudio': 'com.real.realaudio',\n 'audio/x-pn-wav': 'com.microsoft.waveform-audio',\n 'audio/x-realaudio': 'com.real.realmedia',\n 'audio/x-scpls': 'unofficial.pls-playlist',\n 'audio/x-wav': 'com.microsoft.waveform-audio',\n 'font/opentype': 'public.opentype-font',\n 'image/bmp': 'com.microsoft.bmp',\n 'image/efax': 'com.js.efx-fax',\n 'image/eps': 'com.adobe.encapsulated-postscript',\n 'image/fpx': 'com.kodak.flashpix.image',\n 'image/gif': 'com.compuserve.gif',\n 'image/indd': 'com.adobe.indesign-image',\n 'image/indesign': 'com.adobe.indesign-image',\n 'image/jp2': 'public.jpeg2000',\n 'image/jpeg': 'public.jpeg',\n 'image/ms-bmp': 'com.microsoft.bmp',\n 'image/photoshop': 'com.adobe.photoshop-image',\n 'image/pict': 'com.apple.pict',\n 'image/pipeg': 'public.jpeg',\n 'image/pjpeg': 'public.jpeg',\n 'image/png': 'public.png',\n 'image/psd': 'com.adobe.photoshop-image',\n 'image/sgi': 'com.sgi.sgi-image',\n 'image/targa': 'com.truevision.tga-image',\n 'image/tga': 'com.truevision.tga-image',\n 'image/tiff': 'public.tiff',\n 'image/vnd.djvu': 'com.lizardtech.djvu',\n 'image/vndfpx': 'com.kodak.flashpix.image',\n 'image/vndnet-fpx': 'com.kodak.flashpix.image',\n 'image/webp': 'public.webp',\n 'image/x-bitmap': 'com.microsoft.bmp',\n 'image/x-bmp': 'com.microsoft.bmp',\n 'image/x-djvu': 'com.lizardtech.djvu',\n 'image/x-eps': 'com.adobe.encapsulated-postscript',\n 'image/x-icon': 'com.microsoft.ico',\n 'image/x-indesign': 'com.adobe.indesign-image',\n 'image/x-macpict': 'com.apple.pict',\n 'image/x-ms-bmp': 'com.microsoft.bmp',\n 'image/x-photoshop': 'com.adobe.photoshop-image',\n 'image/x-pict': 'com.apple.pict',\n 'image/x-quicktime': 'com.apple.quicktime-image',\n 'image/x-tiff': 'public.tiff',\n 'image/x-windows-bmp': 'com.microsoft.bmp',\n 'image/x-xbitmap': 'com.microsoft.bmp',\n 'image/x-xbm': 'public.xbitmap-image',\n 'image/xbm': 'public.xbitmap-image',\n 'multipart/x-gzip': 'org.gnu.gnu-zip-archive',\n 'multipart/x-zip': 'com.pkware.zip-archive',\n 'music/crescendo': 'public.midi',\n 'text/calendar': 'com.apple.ical.ics',\n 'text/css': 'public.css',\n 'text/directory': 'public.vcard',\n 'text/ecmascript': 'com.netscape.javascript-source',\n 'text/html': 'public.html',\n 'text/javascript': 'com.netscape.javascript-source',\n 'text/php': 'public.php-script',\n 'text/plain': 'public.plain-text',\n 'text/richtext': 'public.rtf',\n 'text/rtf': 'public.rtf',\n 'text/ruby-script': 'public.ruby-script',\n 'text/tex': 'org.tug.tex',\n 'text/vcard': 'public.vcard',\n 'text/vnd.sun.j2me.app-descriptor': 'com.sun.java-app-descriptor',\n 'text/x-asm': 'public.assembly-source',\n 'text/x-c-code': 'public.c-source',\n 'text/x-c-header': 'public.c-header',\n 'text/x-c': 'public.c-source',\n 'text/x-c++-code': 'public.c-plus-plus-source',\n 'text/x-c++-hdr': 'public.c-plus-plus-header',\n 'text/x-c++-src': 'public.c-plus-plus-source',\n 'text/x-c++src': 'public.c-plus-plus-source',\n 'text/x-h': 'public.c-header',\n 'text/x-java-source': 'com.sun.java-source',\n 'text/x-latex': 'org.tug.tex',\n 'text/x-objcppsrc': 'public.objective-c-plus-plus-source',\n 'text/x-objcsrc': 'public.objective-c-source',\n 'text/x-opml': 'unofficial.opml',\n 'text/x-perl-script': 'public.perl-script',\n 'text/x-perl': 'public.perl-script',\n 'text/x-php-script': 'public.php-script',\n 'text/x-python-script': 'public.python-script',\n 'text/x-python': 'public.python-script',\n 'text/x-scriptcsh': 'public.csh-script',\n 'text/x-scriptperl-module': 'public.perl-script',\n 'text/x-scriptperl': 'public.perl-script',\n 'text/x-scriptphyton': 'public.python-script',\n 'text/x-scriptsh': 'public.shell-script',\n 'text/x-server-parsed-html': 'public.html',\n 'text/x-tex': 'org.tug.tex',\n 'text/x-vcalendar': 'com.apple.ical.vcs',\n 'text/x-vcard': 'public.vcard',\n 'text/xhtml': 'public.html',\n 'text/xml': 'public.xml',\n 'video/3gpp': 'public.3gpp',\n 'video/3gpp2': 'public.3gpp2',\n 'video/avi': 'public.avi',\n 'video/MP2T': 'public.mpegts',\n 'video/mp4': 'public.mpeg4',\n 'video/mp4v': 'public.mpeg4',\n 'video/mpeg': 'public.mpeg',\n 'video/mpg': 'public.mpeg',\n 'video/msvideo': 'public.avi',\n 'video/ogg': 'org.xiph.ogg-theora',\n 'video/quicktime': 'com.apple.quicktime-movie',\n 'video/webm': 'public.webm',\n 'video/x-dv': 'public.dv',\n 'video/x-flv': 'public.flv',\n 'video/x-m4v': 'public.mpeg4',\n 'video/x-matroska': 'public.mkv',\n 'video/x-mpeg': 'public.mpeg',\n 'video/x-mpg': 'public.mpeg',\n 'video/x-ms-asf-plugin': 'com.microsoft.advanced-systems-format',\n 'video/x-ms-asf': 'com.microsoft.advanced-systems-format',\n 'video/x-ms-asx': 'com.microsoft.advanced-stream-redirector',\n 'video/x-ms-wm': 'com.microsoft.windows-media-wm',\n 'video/x-ms-wmd': 'com.microsoft.windows-media-wmd',\n 'video/x-ms-wmp': 'com.microsoft.windows-media-wmp',\n 'video/x-ms-wmv': 'com.microsoft.windows-media-wmv',\n 'video/x-ms-wmx': 'com.microsoft.windows-media-wmx',\n 'video/x-ms-wmz': 'com.microsoft.windows-media-wmz',\n 'video/x-ms-wvx': 'com.microsoft.windows-media-wvx',\n 'video/x-msvideo': 'public.avi',\n 'video/x-ogg': 'org.xiph.ogg-theora',\n 'x-msdos-program': 'com.microsoft.windows-executable',\n 'x-music/x-midi': 'public.midi',\n }\n dataOwnerApi: IccDataOwnerXApi\n authenticationProvider: AuthenticationProvider\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n private authApi: IccAuthApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.fetchImpl = fetchImpl\n this.authenticationProvider = authenticationProvider\n this.dataOwnerApi = dataOwnerApi\n }\n\n override get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Document))\n }\n\n /**\n * Creates a new instance of document with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param message the message this document refers to.\n * @param c initialised data for the document. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the message to use as the secret foreign key to use for the document. The default value will be a\n * secret id of the message known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of document.\n */\n async newInstance(\n user: models.User,\n message?: models.Message,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n if (!message && options.preferredSfk) throw new Error('You need to specify parent message in order to use secret foreign keys.')\n const document = {\n ...(c ?? {}),\n _type: 'org.taktik.icure.entities.Document',\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n responsible: c?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: c?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: c?.codes ?? [],\n tags: c?.tags ?? [],\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = message\n ? options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: message, type: EntityWithDelegationTypeName.Message }))\n : undefined\n if (message && !sfk) throw new Error(`Couldn't find any sfk of parent message ${message.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Document(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(document, EntityWithDelegationTypeName.Document, message?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * @deprecated use {@link findIdsByMessage} instead.\n */\n async findByMessage(hcpartyId: string, message: models.Message) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: message, type: EntityWithDelegationTypeName.Message }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let documents: Array = await this.findDocumentsByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys))\n return await this.decrypt(hcpartyId, documents)\n }\n\n /**\n * Same as {@link findByMessage} but it will only return the ids of the contacts. It can also filter the documents where Document.created is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsByMessage(hcpartyId: string, message: models.Message, startDate?: number, endDate?: number, descending?: boolean): Promise {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: message, type: EntityWithDelegationTypeName.Message }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return this.findDocumentIdsByDataOwnerSecretForeignKey(topmostParentId, _.uniq(extractedKeys), startDate, endDate, descending)\n }\n\n // Note: this is only for dealing with legacy documents: new document are not encrypted, only their attachments are\n async decrypt(hcpartyId: string, documents: Array): Promise> {\n const res: models.Document[] = []\n for (const document of documents) {\n const keys = await this.crypto.xapi.encryptionKeysOf({ entity: document, type: EntityWithDelegationTypeName.Document }, undefined)\n if (!keys.length) {\n console.log('Cannot decrypt document', document.id)\n res.push(document)\n } else if (keys.length && (document.encryptedSelf || document.encryptedAttachment)) {\n const key = await this.crypto.primitives.AES.importKey('raw', hex2ua(keys[0]))\n res.push(\n await Promise.all([\n document.encryptedSelf\n ? new Promise((resolve: (value: ArrayBuffer | null) => any) => {\n this.crypto.primitives.AES.decrypt(key, string2ua(a2b(document.encryptedSelf!))).then(resolve, () => {\n console.log('Cannot decrypt document', document.id)\n resolve(null)\n })\n })\n : Promise.resolve(null),\n document.encryptedAttachment\n ? new Promise((resolve: (value: ArrayBuffer | null) => any) => {\n this.crypto.primitives.AES.decrypt(key, document.encryptedAttachment!).then(resolve, () => {\n console.log('Cannot decrypt document', document.id)\n resolve(null)\n })\n })\n : Promise.resolve(null),\n ]).then((decrypted: [ArrayBuffer | null, ArrayBuffer | null]) => {\n let updatedDocument = { ...document }\n if (decrypted) {\n if (decrypted[0]) {\n updatedDocument = _.extend(document, JSON.parse(ua2string(decrypted[0])))\n }\n if (decrypted[1]) {\n updatedDocument.decryptedAttachment = decrypted[1]\n }\n }\n return updatedDocument\n })\n )\n } else {\n res.push(document)\n }\n }\n return res\n }\n\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"application/octet-stream\", enckeys?: string, fileName?: string): Promise\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"text/plain\", enckeys?: string, fileName?: string): Promise\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"application/json\", enckeys?: string, fileName?: string): Promise\n /**\n * @deprecated use getMainAttachmentAs instead\n */\n async getAttachmentAs(\n documentId: string,\n attachmentId: string,\n returnType: 'application/octet-stream' | 'text/plain' | 'application/json',\n enckeys?: string,\n fileName?: string\n ): Promise {\n if (!!enckeys || !!fileName) {\n console.warn('Using getAttachmentAs method with a value for enckeys or fileName does nothing anymore.')\n }\n return this.getMainAttachmentAs(documentId, returnType)\n }\n\n //prettier-ignore\n getMainAttachmentAs(documentId: string, returnType: \"application/octet-stream\"): Promise\n //prettier-ignore\n getMainAttachmentAs(documentId: string, returnType: \"text/plain\"): Promise\n //prettier-ignore\n getMainAttachmentAs(documentId: string, returnType: \"application/json\"): Promise\n //prettier-ignore\n getMainAttachmentAs(documentId: string, returnType: 'application/octet-stream' | 'text/plain' | 'application/json'): Promise\n async getMainAttachmentAs(documentId: string, returnType: 'application/octet-stream' | 'text/plain' | 'application/json'): Promise {\n const url = this.host + `/document/${documentId}/attachment` + '?ts=' + new Date().getTime()\n return XHR.sendCommand('GET', url, await this.headers, null, this.fetchImpl, returnType, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n //prettier-ignore\n getAndTryDecryptMainAttachmentAs(document: models.Document, returnType: \"application/octet-stream\"): Promise\n //prettier-ignore\n getAndTryDecryptMainAttachmentAs(document: models.Document, returnType: \"text/plain\"): Promise\n //prettier-ignore\n getAndTryDecryptMainAttachmentAs(document: models.Document, returnType: \"application/json\"): Promise\n //prettier-ignore\n getAndTryDecryptMainAttachmentAs(document: models.Document, returnType: 'application/octet-stream' | 'text/plain' | 'application/json'): Promise\n async getAndTryDecryptMainAttachmentAs(\n document: models.Document,\n returnType: 'application/octet-stream' | 'text/plain' | 'application/json'\n ): Promise {\n const key = (await this.crypto.xapi.encryptionKeysOf({ entity: document, type: EntityWithDelegationTypeName.Document }, undefined))[0]\n if (!key) return undefined\n const tryParse = this.parserFor(returnType)\n const attachmentInfo = await this.getAndTryDecryptDocumentAttachment(document, (decrypted) => Promise.resolve(tryParse(decrypted) !== undefined))\n if (attachmentInfo.wasDecrypted) {\n return tryParse(attachmentInfo.data)\n } else return undefined\n }\n private parserFor(returnType: 'application/octet-stream' | 'text/plain' | 'application/json'): (data: ArrayBuffer) => any | undefined {\n if (returnType === 'application/octet-stream') {\n return (data) => data\n } else if (returnType === 'text/plain') {\n return (data) => {\n try {\n return ua2utf8(data)\n } catch (e) {\n return undefined\n }\n }\n } else if (returnType === 'application/json') {\n return (data) => {\n try {\n return JSON.parse(ua2utf8(data))\n } catch (e) {\n return undefined\n }\n }\n } else throw new Error(`Unsupported type ${returnType}`)\n }\n\n // noinspection JSUnusedGlobalSymbols\n uti(mimeType: string, extension: string) {\n return (mimeType && mimeType !== 'application/octet-stream' ? this.utiDefs[mimeType] : this.utiExts[extension]) || this.utiDefs[mimeType]\n }\n\n // noinspection JSUnusedGlobalSymbols\n mimeType(uti: string) {\n return this.utiRevDefs[uti]\n }\n\n /**\n * Adds an attachment to a document, encrypting it on client side using the encryption keys of the provided document.\n * @param document a document.\n * @param attachment a new main attachment for the document.\n * @param utis an array of UTIs for the attachment. The first element will be considered as the main UTI for the document. If provided and non-empty\n * overrides existing values.\n * @return the updated document.\n */\n async encryptAndSetDocumentAttachment(document: models.Document, attachment: ArrayBuffer | Uint8Array, utis?: string[]): Promise {\n if (!document.rev) throw new Error('Cannot set attachment on document without rev')\n const { encryptedData, updatedEntity } = await this.crypto.xapi.encryptDataOf(document, EntityWithDelegationTypeName.Document, attachment, (d) =>\n this.modifyDocument(d)\n )\n return await this.setMainDocumentAttachment(document.id!, updatedEntity?.rev ?? document.rev, encryptedData, utis, true)\n }\n\n /**\n * Adds an unencrypted attachment to a document.\n * @param document a document.\n * @param attachment a new main attachment for the document.\n * @param utis an array of UTIs for the attachment. The first element will be considered as the main UTI for the document. If provided and non-empty\n * overrides existing values.\n * @return the updated document.\n */\n async setClearDocumentAttachment(document: models.Document, attachment: ArrayBuffer | Uint8Array, utis?: string[]): Promise {\n if (!document.rev) throw new Error('Cannot set attachment on document without rev')\n return await this.setMainDocumentAttachment(document.id!, document.rev, attachment, utis, false)\n }\n\n /**\n * Adds a secondary attachment to a document, encrypting it on client side using the encryption keys of the provided document.\n * @param document a document.\n * @param secondaryAttachmentKey key for the secondary attachment.\n * @param attachment a new secondary attachment for the document.\n * @param utis an array of UTIs for the attachment. The first element will be considered as the main UTI for the document. If provided and non-empty\n * overrides existing values.\n * @return the updated document.\n */\n async encryptAndSetSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n attachment: ArrayBuffer | Uint8Array,\n utis?: string[]\n ): Promise {\n if (!document.rev) throw new Error('Cannot set attachment on document without rev')\n const { encryptedData, updatedEntity } = await this.crypto.xapi.encryptDataOf(document, EntityWithDelegationTypeName.Document, attachment, (d) =>\n this.modifyDocument()\n )\n return await this.setSecondaryAttachment(document.id!, secondaryAttachmentKey, updatedEntity?.rev ?? document.rev!, encryptedData, utis, true)\n }\n\n /**\n * Adds an unencrypted secondary attachment to a document.\n * @param document a document.\n * @param secondaryAttachmentKey key for the secondary attachment.\n * @param attachment a new secondary attachment for the document.\n * @param utis an array of UTIs for the attachment. The first element will be considered as the main UTI for the document. If provided and non-empty\n * overrides existing values.\n * @return the updated document.\n */\n async setClearSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n attachment: ArrayBuffer | Uint8Array,\n utis?: string[]\n ): Promise {\n return await this.setSecondaryAttachment(document.id!, secondaryAttachmentKey, document.rev!, attachment, utis, false)\n }\n\n /**\n * Gets the main attachment of a document and tries to decrypt it using the encryption keys of the document, throwing an error if the operation fails.\n * @param document a document.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptDocumentAttachment(\n document: models.Document,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const retrieved = await this.getAndTryDecryptDocumentAttachment(document, (x) => validator(x))\n if (!retrieved.wasDecrypted) throw new Error(`No valid key found to decrypt data of document ${document.id}.`)\n return retrieved.data\n }\n\n /**\n * Gets the main attachment of a document and tries to decrypt it using the encryption keys of the document.\n * @param document a document.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptDocumentAttachment(\n document: models.Document,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.xapi.tryDecryptDataOf(\n { entity: document, type: EntityWithDelegationTypeName.Document },\n await this.getRawMainDocumentAttachment(document.id!),\n (x) => validator(x)\n )\n }\n\n /**\n * Gets the secondary attachment of a document and tries to decrypt it using the encryption keys of the document, throwing an error if the operation fails.\n * @param document a document.\n * @param secondaryAttachmentKey key of the secondary attachment.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment.\n */\n async getAndDecryptSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const { data, wasDecrypted } = await this.getAndTryDecryptSecondaryDocumentAttachment(document, secondaryAttachmentKey, (x) => validator(x))\n if (!wasDecrypted) throw new Error(`No valid key found to decrypt data of document ${document.id}.`)\n return data\n }\n\n /**\n * Gets the secondary attachment of a document and tries to decrypt it using the encryption keys of the document.\n * @param document a document.\n * @param secondaryAttachmentKey key of the secondary attachment.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.xapi.tryDecryptDataOf(\n { entity: document, type: EntityWithDelegationTypeName.Document },\n await this.getSecondaryAttachment(document.id!, secondaryAttachmentKey),\n (x) => validator(x)\n )\n }\n\n /**\n * @param document a document\n * @return the id of the message that the document refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptMessageIdOf(document: models.Document): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: document, type: EntityWithDelegationTypeName.Document }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given document\n */\n async hasWriteAccess(document: models.Document): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: document, type: EntityWithDelegationTypeName.Document })\n }\n\n /**\n * Share an existing document with other data owners, allowing them to access the non-encrypted data of the document and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the document.\n * @param document the document to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareMessageId: specifies if the id of the message that this document refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n document: models.Document,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n shareMessageId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(document, { [delegateId]: options })\n }\n\n /**\n * Share an existing document with other data owners, allowing them to access the non-encrypted data of the document and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param document the document to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareMessageId: specifies if the id of the message that this document refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity.\n */\n async shareWithMany(\n document: models.Document,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n shareMessageId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(document, delegates)).updatedEntityOrThrow\n }\n /**\n * Share an existing document with other data owners, allowing them to access the non-encrypted data of the document and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param document the document to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareMessageId: specifies if the id of the message that this document refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n document: models.Document,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n shareMessageId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(document, EntityWithDelegationTypeName.Document)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyDocument(entityWithEncryptionKey) : document\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Document,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.shareMessageId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareDocument(x)\n )\n .then((r) => r)\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Document\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Document })\n }\n\n getEncryptionKeysOf(entity: models.Document): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Document }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.Document, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.Document },\n delegates\n )\n }\n}\n","import { IccFormApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\n\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { EntityWithDelegationTypeName } from './utils'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccFormXApi extends IccFormApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Form))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of form with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this form refers to.\n * @param c initialised data for the form. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the form. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of form.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n const form = {\n ...(c ?? {}),\n _type: 'org.taktik.icure.entities.Form',\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n responsible: c?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: c?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: c?.codes ?? [],\n tags: c?.tags ?? [],\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Form(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(form, EntityWithDelegationTypeName.Form, patient.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all contacts with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the contacts of the patient.\n * @deprecated use {@link findIdsBy} instead.\n * @param hcpartyId\n * @param patient\n * @param usingPost (Promise)\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let forms: Array = await (usingPost\n ? this.findFormsByHCPartyPatientForeignKeysUsingPost(hcpartyId!, undefined, undefined, undefined, _.uniq(extractedKeys))\n : this.findFormsByHCPartyPatientForeignKeys(hcpartyId!, _.uniq(extractedKeys).join(',')))\n return await this.decrypt(hcpartyId, forms)\n }\n\n /**\n * Same as {@link findBy} but it will only return the ids of the forms. It can also filter the forms where Form.openingDate is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean) {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n return this.findFormIdsByDataOwnerPatientOpeningDate(hcpartyId, _.uniq(extractedKeys), startDate, endDate, descending)\n }\n\n async decrypt(hcpartyId: string, forms: Array) {\n return (await this.crypto.xapi.tryDecryptEntities(forms, EntityWithDelegationTypeName.Form, (x) => new models.Form(x))).map(\n ({ entity }) => entity\n )\n }\n\n /**\n * @param form a form\n * @return the id of the patient that the form refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(form: models.Form): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: form, type: EntityWithDelegationTypeName.Form }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given form\n */\n async hasWriteAccess(form: models.Form): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: form, type: EntityWithDelegationTypeName.Form })\n }\n\n /**\n * Share an existing form with other data owners, allowing them to access the non-encrypted data of the form and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the form.\n * @param form the form to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * form does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this form refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n form: models.Form,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(form, { [delegateId]: options })\n }\n\n /**\n * Share an existing form with other data owners, allowing them to access the non-encrypted data of the form and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param form the form to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * form does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this form refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n form: models.Form,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(form, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing form with other data owners, allowing them to access the non-encrypted data of the form and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param form the form to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * form does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this form refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n form: models.Form,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(form, EntityWithDelegationTypeName.Form)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyForm(entityWithEncryptionKey) : form\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Form,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareForms(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Form\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Form })\n }\n\n getEncryptionKeysOf(entity: models.Form): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Form }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.Form, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Form }, delegates)\n }\n}\n","import { IccAuthApi, IccHcpartyApi } from '../icc-api'\nimport { HealthcareParty } from '../icc-api/model/HealthcareParty'\nimport * as models from '../icc-api/model/models'\nimport { findName, garnishPersonWithName, hasName } from './utils/person-util'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { AbstractFilter } from './filters/filters'\nimport { subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\nimport { ListOfIds } from '../icc-api/model/models'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccHcpartyXApi extends IccHcpartyApi {\n hcPartyKeysCache: { [key: string]: { [key: string]: string } } = {}\n hcPartyCache: { [key: string]: [number, Promise] } = {}\n\n private CACHE_RETENTION_IN_MS = 300_000\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n private readonly authApi: IccAuthApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n private getHcPartyFromCache(key: string) {\n const hcpInCache = this.hcPartyCache[key]\n const now = Date.now()\n if (hcpInCache && hcpInCache[0] > now) {\n return hcpInCache[1]\n }\n if (!hcpInCache) {\n console.log(`Cache miss for key ${key} because not in cache`)\n } else {\n console.log(`Cache miss for key ${key} because ${hcpInCache[0]} > ${now}`)\n }\n return null\n }\n\n completeNames(hcParty?: models.HealthcareParty): models.HealthcareParty | undefined {\n if (!hcParty) {\n return hcParty\n }\n\n let finalHcParty = hcParty\n\n if ((!!finalHcParty.lastName || !!finalHcParty.name) && !hasName(finalHcParty, models.PersonName.UseEnum.Official)) {\n finalHcParty = garnishPersonWithName(\n finalHcParty,\n models.PersonName.UseEnum.Official,\n finalHcParty.lastName,\n finalHcParty.firstName,\n finalHcParty.name\n )\n }\n\n if ((!finalHcParty.lastName || !finalHcParty.name) && !!hasName(finalHcParty, models.PersonName.UseEnum.Official)) {\n let officialName = findName(finalHcParty, models.PersonName.UseEnum.Official)\n finalHcParty = {\n ...finalHcParty,\n lastName: officialName!.lastName,\n firstName: officialName!.firstNames ? officialName!.firstNames[0] : undefined,\n name: officialName!.text,\n }\n }\n\n return finalHcParty\n }\n\n putHcPartyInCache(key: string, hcpPromise: Promise): Promise {\n this.hcPartyCache[key] = [Date.now() + this.CACHE_RETENTION_IN_MS, hcpPromise]\n return hcpPromise\n }\n\n createHealthcareParty(body?: HealthcareParty): Promise {\n return super.createHealthcareParty(this.completeNames(body))\n }\n\n createHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n return super.createHealthcarePartyInGroup(groupId, this.completeNames(body))\n }\n\n modifyHealthcareParty(body?: HealthcareParty): Promise {\n if (body && body.id) {\n console.log(`Evict key ${body.id} because of modification`)\n delete this.hcPartyCache[body.id]\n }\n\n return super.modifyHealthcareParty(this.completeNames(body)).then((hcp) => this.putHcPartyInCache(hcp.id!, Promise.resolve(hcp)))\n }\n\n async getHealthcareParty(healthcarePartyId: string, bypassCache = false): Promise {\n const fromCache = bypassCache ? undefined : this.getHcPartyFromCache(healthcarePartyId)\n if (fromCache) {\n try {\n return await fromCache\n } catch {\n if (this.hcPartyCache[healthcarePartyId][1] === fromCache) {\n delete this.hcPartyCache[healthcarePartyId]\n }\n return this.getHealthcareParty(healthcarePartyId, bypassCache)\n }\n } else {\n return await this.putHcPartyInCache(healthcarePartyId, super.getHealthcareParty(healthcarePartyId))\n }\n }\n\n getHealthcarePartyHierarchyIds(healthcarePartyId: string, bypassCache = false): Promise {\n return this.getHealthcareParty(healthcarePartyId, bypassCache).then(async (hcp: HealthcareParty) => {\n return hcp ? (hcp.parentId ? (await this.getHealthcarePartyHierarchyIds(hcp.parentId!, bypassCache)).concat([hcp.id!]) : [hcp.id!]) : []\n })\n }\n\n async getHealthcareParties(healthcarePartyIds: ListOfIds): Promise | any> {\n const ids = healthcarePartyIds.ids\n if (!ids || !ids.length) {\n return Promise.resolve([])\n }\n const cached: Array<[string, HealthcareParty | null]> = []\n for (const id of ids) {\n let hcp\n try {\n hcp = await this.getHcPartyFromCache(id)\n } catch {\n hcp = null\n delete this.hcPartyCache[id]\n }\n cached.push([id, hcp])\n }\n const toFetch = cached.filter((x) => !x[1]).map((x) => x[0])\n\n if (!toFetch.length) {\n return Promise.all(cached.map((x) => x[1]!))\n }\n\n const prom: Promise = super.getHealthcareParties(new ListOfIds({ ids: toFetch }))\n return Promise.all(\n cached.map(\n (x) =>\n x[1] ??\n this.putHcPartyInCache(\n x[0],\n prom.then((hcps) => {\n const hcp = hcps.find((h) => h.id === x[0])\n if (!!hcp) {\n return hcp\n } else {\n throw new Error(`Hcp with id ${x[0]} not found`)\n }\n })\n )\n )\n )\n }\n\n getCurrentHealthcareParty(): Promise {\n return super.getCurrentHealthcareParty().then((hcp) => this.putHcPartyInCache(hcp.id!, Promise.resolve(hcp)))\n }\n\n isValidCbe(cbe: string) {\n cbe = cbe.replace(new RegExp('[^(0-9)]', 'g'), '')\n cbe = cbe.length == 9 ? '0' + cbe : cbe\n\n return 97 - (Number(cbe.substring(0, 8)) % 97) === Number(cbe.substring(8, 10))\n }\n\n async subscribeToHealthcarePartyEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (dataSample: HealthcareParty) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n return subscribeToEntityEvents(this.host, this.authApi, 'HealthcareParty', eventTypes, filter, eventFired, options).then(\n (rs) => new ConnectionImpl(rs)\n )\n }\n}\n","import { IccAuthApi, IccHelementApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { FilterChainHealthElement, HealthElement, PaginatedListHealthElement } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { AbstractFilter } from './filters/filters'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\n\nexport class IccHelementXApi extends IccHelementApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.HealthElement))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly userApi: IccUserXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n encryptedKeys: Array = ['descr', 'note'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'HealthElement.')\n }\n\n /**\n * Creates a new instance of health element with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this health element refers to.\n * @param h initialised data for the health element. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the health element. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy if the confidential is set to false, else a secret id that\n * the data owner did not share with any of his parents.\n * - confidential: if true, the entity will be created as confidential. Confidential entities are not shared with auto-delegations, and the default\n * foreign key used is any key that is not shared with any of the data owner parents. By default entities are created as non-confidential.\n * @return a new instance of health element.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n h: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n confidential?: boolean\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n const helement = {\n ...(h ?? {}),\n _type: 'org.taktik.icure.entities.HealthElement',\n id: h?.id ?? this.crypto.primitives.randomUuid(),\n created: h?.created ?? new Date().getTime(),\n modified: h?.modified ?? new Date().getTime(),\n responsible: h?.responsible ?? (this.autofillAuthor ? dataOwnerId : undefined),\n author: h?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: h?.codes ?? [],\n tags: h?.tags ?? [],\n healthElementId: h?.healthElementId ?? this.crypto.primitives.randomUuid(),\n openingDate: h?.openingDate ?? parseInt(moment().format('YYYYMMDDHHmmss')),\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (options?.confidential\n ? await this.crypto.confidential.getConfidentialSecretId({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n : await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id} for confidential=${options?.confidential ?? false}`)\n const extraDelegations = {\n ...(options.confidential\n ? {}\n : Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n )),\n ...(options?.additionalDelegates ?? {}),\n }\n const initialisationInfo = await this.crypto.xapi.entityWithInitialisedEncryptedMetadata(\n helement,\n EntityWithDelegationTypeName.HealthElement,\n patient.id,\n sfk,\n true,\n extraDelegations\n )\n return new models.HealthElement(initialisationInfo.updatedEntity)\n }\n\n createHealthElement(body?: models.HealthElement): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n createHealthElementWithUser(user: models.User, body?: models.HealthElement): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((hes) => super.createHealthElement(hes[0]))\n .then((he) => this.decryptWithUser(user, [he]))\n .then((hes) => hes[0])\n : Promise.resolve(null)\n }\n\n createHealthElements(body?: Array): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n createHealthElementsWithUser(user: models.User, bodies?: models.HealthElement[]): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((hes) => super.createHealthElements(hes))\n .then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n : Promise.resolve(null)\n }\n\n getHealthElement(healthElementId: string): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n getHealthElementWithUser(user: models.User, healthElementId: string): Promise {\n return super\n .getHealthElement(healthElementId)\n .then((he) => this.decryptWithUser(user, [he]))\n .then((hes) => hes[0])\n }\n\n getHealthElements(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n getHealthElementsWithUser(user: models.User, body?: models.ListOfIds): Promise {\n return super.getHealthElements(body).then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n }\n\n newHealthElementDelegations(healthElementId: string, body?: Array): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n findHealthElementsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n findHealthElementsByHCPartyPatientForeignKeysWithUser(user: models.User, hcPartyId: string, secretFKeys: string): Promise {\n return super.findHealthElementsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((hes) => this.decryptWithUser(user, hes))\n }\n\n findHealthElementsByHCPartyPatientForeignKeysArrayWithUser(user: models.User, hcPartyId: string, secretFKeys: string[]): Promise {\n return super.findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((hes) => this.decryptWithUser(user, hes))\n }\n\n async findHealthElementsByHCPartyAndPatientWithUser(\n user: models.User,\n hcPartyId: string,\n patient: models.Patient,\n usingPost: boolean = false\n ): Promise {\n let keysAndHcPartyId = await this.crypto.xapi.secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n const keys = keysAndHcPartyId.find((secretForeignKeys) => secretForeignKeys.ownerId == hcPartyId)?.extracted\n if (keys == undefined) {\n throw Error('No delegation for user')\n }\n return usingPost\n ? this.findHealthElementsByHCPartyPatientForeignKeysArrayWithUser(user, hcPartyId, keys)\n : this.findHealthElementsByHCPartyPatientForeignKeysWithUser(user, hcPartyId, keys.join(','))\n }\n\n modifyHealthElement(body?: HealthElement): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n modifyHealthElementWithUser(user: models.User, body?: HealthElement): Promise {\n return body ? this.modifyHealthElementAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n private modifyHealthElementAs(dataOwner: string, body: HealthElement): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((hes) => super.modifyHealthElement(hes[0]))\n .then((he) => this.decrypt(dataOwner, [he]))\n .then((hes) => hes[0])\n }\n\n modifyHealthElements(body?: Array): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n modifyHealthElementsWithUser(user: models.User, bodies?: HealthElement[]): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((hes) => super.modifyHealthElements(hes))\n .then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n : Promise.resolve(null)\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @deprecated use {@link findIdsBy}.\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n * @param usingPost\n */\n findBy(hcpartyId: string, patient: models.Patient, keepObsoleteVersions = false, usingPost = false) {\n return this.crypto.xapi\n .secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.length > 0\n ? Promise.all(\n secretForeignKeys\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId, _.uniq(extractedKeys).join(','))\n )\n ).then((results) => _.uniqBy(_.flatMap(results), (x) => x.id))\n : Promise.resolve([])\n )\n .then((decryptedHelements: Array) => {\n const byIds: { [key: string]: models.HealthElement } = {}\n\n if (keepObsoleteVersions) {\n return decryptedHelements\n } else {\n decryptedHelements.forEach((he) => {\n if (he.healthElementId) {\n const phe = byIds[he.healthElementId]\n if (!phe || !phe.modified || (he.modified && phe.modified < he.modified)) {\n byIds[he.healthElementId] = he\n }\n }\n })\n return _.values(byIds).filter((s: any) => !s.endOfLife)\n }\n })\n }\n\n /**\n * Same as {@link findBy} but it will only return the ids of the health elements. It can also filter the health elements where HealthElement.openingDate is between\n * startDate and endDate in ascending or descending order by that field. (default: ascending).\n */\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean) {\n return this.crypto.xapi.secretIdsForHcpHierarchyOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }).then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.length > 0\n ? Promise.all(\n secretForeignKeys\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n this.findHealthElementIdsByDataOwnerPatientOpeningDate(hcpartyId, extractedKeys, startDate, endDate, descending)\n )\n ).then((results) => _.uniq(_.flatMap(results)))\n : Promise.resolve([])\n )\n }\n\n /**\n * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.\n */\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise | any> {\n return super.findHealthElementsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((helements) => this.decrypt(hcPartyId, helements))\n }\n\n /**\n * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.\n */\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super\n .findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys)\n .then((helements) => this.decrypt(hcPartyId, helements))\n }\n\n encrypt(user: models.User, healthElements: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), healthElements)\n }\n\n private encryptAs(owner: string, healthElements: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n healthElements,\n EntityWithDelegationTypeName.HealthElement,\n this.encryptedFields,\n false,\n false,\n (x) => new models.HealthElement(x)\n )\n }\n\n decryptWithUser(user: models.User, hes: Array): Promise> {\n return this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes)\n }\n\n async decrypt(dataOwnerId: string, hes: Array): Promise> {\n return (await this.crypto.xapi.tryDecryptEntities(hes, EntityWithDelegationTypeName.HealthElement, (x) => new models.HealthElement(x))).map(\n ({ entity }) => entity\n )\n }\n\n filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n filterByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: FilterChainHealthElement\n ): Promise {\n return super\n .filterHealthElementsBy(startDocumentId, limit, body)\n .then((pl) => this.decryptWithUser(user, pl.rows!).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n // noinspection JSUnusedGlobalSymbols\n serviceToHealthElement(user: models.User, patient: models.Patient, heSvc: models.Service, descr: string) {\n return this.newInstance(user, patient, {\n idService: heSvc.id,\n author: heSvc.author,\n responsible: heSvc.responsible,\n openingDate: heSvc.valueDate || heSvc.openingDate,\n descr: descr,\n idOpeningContact: heSvc.contactId,\n modified: heSvc.modified,\n created: heSvc.created,\n codes: heSvc.codes,\n tags: heSvc.tags,\n }).then((he) => {\n return this.createHealthElement(he)\n })\n }\n\n // noinspection JSUnusedGlobalSymbols, JSMethodCanBeStatic\n stringToCode(code: string) {\n const c = code.split('|')\n return new models.Code({\n type: c[0],\n code: c[1],\n version: c[2],\n id: code,\n })\n }\n\n /**\n * @param healthElement a health element\n * @return the id of the patient that the health element refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(healthElement: models.HealthElement): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: healthElement, type: EntityWithDelegationTypeName.HealthElement }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given health element\n */\n async hasWriteAccess(healthElement: models.HealthElement): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: healthElement, type: EntityWithDelegationTypeName.HealthElement })\n }\n\n /**\n * Share an existing health element with other data owners, allowing them to access the non-encrypted data of the health element and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the health element.\n * @param healthElement the health element to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * health element does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this health element refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n healthElement: models.HealthElement,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(healthElement, { [delegateId]: options })\n }\n /**\n * Share an existing health element with other data owners, allowing them to access the non-encrypted data of the health element and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the health element.\n * @param healthElement the health element to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * health element does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this health element refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n healthElement: models.HealthElement,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(healthElement, delegates)).updatedEntityOrThrow\n }\n /**\n * Share an existing health element with other data owners, allowing them to access the non-encrypted data of the health element and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param healthElement the health element to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * health element does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this health element refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n healthElement: models.HealthElement,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(healthElement, EntityWithDelegationTypeName.HealthElement)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyHealthElementAs(self, entityWithEncryptionKey) : healthElement\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.HealthElement,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareHealthElements(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.HealthElement\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.HealthElement })\n }\n\n getEncryptionKeysOf(entity: models.HealthElement): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.HealthElement }, undefined)\n }\n\n async subscribeToHealthElementEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (healthElement: HealthElement) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n\n return await subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.HealthElement,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(currentUser), [encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n createDelegationDeAnonymizationMetadata(entity: HealthElement, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.HealthElement },\n delegates\n )\n }\n}\n","import { KeyPair } from './crypto/RSA'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { MaintenanceTask } from '../icc-api/model/MaintenanceTask'\nimport { ua2hex } from './utils'\nimport { PropertyStub } from '../icc-api/model/PropertyStub'\nimport { PropertyTypeStub } from '../icc-api/model/PropertyTypeStub'\nimport { TypedValueObject } from '../icc-api/model/TypedValueObject'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { KeyPairUpdateRequest } from './maintenance/KeyPairUpdateRequest'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { User } from '../icc-api/model/User'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { IccExchangeDataApi } from '../icc-api/api/internal/IccExchangeDataApi'\nimport { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { fingerprintV1 } from './crypto/utils'\n\ntype ExchangeKeyInfo = { delegator: string; delegate: string; fingerprints: Set }\n\n/**\n * Api for interpreting maintenance tasks and applying required client-side actions.\n */\nexport class IccIcureMaintenanceXApi {\n constructor(\n private readonly crypto: IccCryptoXApi,\n private readonly tasksApi: IccMaintenanceTaskXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly exchangeDataApi: IccExchangeDataApi\n ) {}\n\n // TODO api to get all tasks for current owner from owner with id\n\n /**\n * Applies a key pair update request between another data owner and the current data owner to allow the other data owner to access existing exchange\n * keys shared with the current data owner. IMPORTANT: it is your responsibility to verify the authenticity of the public key / update request\n * before calling this method: this method assumes the new public key for the concerned data owner is authentic.\n * @param update a keypair update request to the current data owner.\n */\n async applyKeyPairUpdate(update: KeyPairUpdateRequest) {\n await this.crypto.exchangeKeys.base.giveAccessBackTo(\n update.concernedDataOwnerId,\n update.newPublicKey,\n this.crypto.userKeysManager.getDecryptionKeys()\n )\n await this.crypto.exchangeData.giveAccessBackTo(update.concernedDataOwnerId, update.newPublicKey)\n }\n\n /**\n * @internal This method is intended only for internal use and may be changed without notice.\n * Creates the necessary maintenance tasks to request access to existing exchange keys with the new key pair for the current user.\n * @param user the user which owns the new key pair.\n * @param keypair a new key pair for the current user.\n * @param requestToOwnerTypes specifies the types of data owner that have shared data with the current data owner or which were given access to data\n * from the current data owner will receive a 'give access back' request. If not specified, the value be inferred from the current data owner type.\n */\n async createMaintenanceTasksForNewKeypair(user: User, keypair: KeyPair, requestToOwnerTypes?: DataOwnerTypeEnum[]): Promise {\n const currentUserType = await this.dataOwnerApi.getCurrentDataOwnerType()\n if (!requestToOwnerTypes) {\n if (currentUserType === 'device') {\n console.warn('Current data owner is a device and there is no need to create maintenance tasks for updated keypair.')\n return\n } else {\n requestToOwnerTypes =\n currentUserType === DataOwnerTypeEnum.Patient ? [DataOwnerTypeEnum.Patient, DataOwnerTypeEnum.Hcp] : [DataOwnerTypeEnum.Hcp]\n }\n }\n const hexNewPubKey = ua2hex(await this.crypto.primitives.RSA.exportKey(keypair.publicKey, 'spki'))\n const hexNewPubKeyFp = fingerprintV1(hexNewPubKey)\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const requestDataOwnersForExchangeKeys = (await this.getExchangeKeysInfosOf(selfId, requestToOwnerTypes))\n .filter((info) => !info.fingerprints.has(hexNewPubKeyFp))\n .flatMap((info) => [info.delegate, info.delegator])\n .filter((dataOwner) => dataOwner !== selfId)\n const requestDataOwnersForExchangeData = await this.exchangeDataApi.getExchangeDataParticipantCounterparts(\n selfId,\n [...new Set(requestToOwnerTypes)].join(',')\n )\n const requestDataOwners = [...new Set([...requestDataOwnersForExchangeKeys, ...requestDataOwnersForExchangeData])]\n if (requestDataOwners.length > 0) {\n const tasksToCreate = requestDataOwners.map((dataOwner) => ({\n delegate: dataOwner,\n task: this.createMaintenanceTask(selfId, hexNewPubKey),\n }))\n for (const taskToCreate of tasksToCreate) {\n const instance = await this.tasksApi.newInstance(user, taskToCreate.task, {\n additionalDelegates: { [taskToCreate.delegate]: AccessLevelEnum.WRITE },\n })\n if (instance) {\n // TODO create in bulk\n await this.tasksApi.createMaintenanceTaskWithUser(user, instance)\n }\n }\n }\n }\n\n private async getExchangeKeysInfosOf(dataOwnerId: string, otherOwnerTypes: DataOwnerTypeEnum[]): Promise {\n const allExchangeKeys = await this.crypto.exchangeKeys.base.getAllExchangeKeysWith(dataOwnerId, otherOwnerTypes)\n const infoTo = Object.entries(allExchangeKeys.keysToOwner).flatMap(([delegatorId, delegatorFpToKeys]) =>\n Object.values(delegatorFpToKeys).map((encryptedKeys) => ({\n delegator: delegatorId,\n delegate: dataOwnerId,\n fingerprints: new Set(Object.keys(encryptedKeys).map((x) => fingerprintV1(x))),\n }))\n )\n const infoFrom = Object.values(allExchangeKeys.keysFromOwner).flatMap((delegateIdToKeys) =>\n Object.entries(delegateIdToKeys).map(([delegateId, encryptedKeys]) => ({\n delegator: dataOwnerId,\n delegate: delegateId,\n fingerprints: new Set(Object.keys(encryptedKeys).map((x) => fingerprintV1(x))),\n }))\n )\n return [...infoFrom, ...infoTo]\n }\n\n private createMaintenanceTask(ownerId: string, concernedPubKey: string) {\n return new MaintenanceTask({\n id: this.crypto.primitives.randomUuid(),\n taskType: KeyPairUpdateRequest.TASK_TYPE,\n status: MaintenanceTask.StatusEnum.Pending,\n properties: [\n new PropertyStub({\n id: KeyPairUpdateRequest.OWNER_ID_PROP_ID,\n type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),\n typedValue: new TypedValueObject({\n type: TypedValueObject.TypeEnum.STRING,\n stringValue: ownerId,\n }),\n }),\n new PropertyStub({\n id: KeyPairUpdateRequest.OWNER_PUB_PROP_ID,\n type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),\n typedValue: new TypedValueObject({\n type: TypedValueObject.TypeEnum.STRING,\n stringValue: concernedPubKey,\n }),\n }),\n ],\n })\n }\n}\n","import { IccEntityrefApi, IccInvoiceApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { Invoice } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { EntityWithDelegationTypeName } from './utils'\n\nexport class IccInvoiceXApi extends IccInvoiceApi implements EncryptedEntityXApi {\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Invoice))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly entityrefApi: IccEntityrefApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n /**\n * Creates a new instance of invoice with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this invoice refers to.\n * @param inv initialised data for the invoice. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the invoice. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of invoice.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n inv: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ): Promise {\n const invoice = new models.Invoice({\n ...(inv ?? {}),\n _type: 'org.taktik.icure.entities.Invoice',\n id: inv?.id ?? this.crypto.primitives.randomUuid(),\n groupId: inv?.groupId ?? this.crypto.primitives.randomUuid(),\n created: inv?.created ?? new Date().getTime(),\n modified: inv?.modified ?? new Date().getTime(),\n responsible: inv?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: inv?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: inv?.codes ?? [],\n tags: inv?.tags ?? [],\n invoicingCodes: inv?.invoicingCodes ?? [],\n })\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.financialInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Invoice(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(invoice, EntityWithDelegationTypeName.Invoice, patient.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n createInvoice(invoice: Invoice, prefix?: string): Promise {\n if (!prefix) {\n return super.createInvoice(invoice)\n }\n if (!invoice.id) {\n invoice.id = this.crypto.primitives.randomUuid()\n }\n return this.getNextInvoiceReference(prefix, this.entityrefApi)\n .then((reference) => this.createInvoiceReference(reference, invoice.id!, prefix, this.entityrefApi))\n .then((entityReference) => {\n if (!entityReference.id) {\n throw new Error('Cannot create invoice')\n }\n\n if (invoice.internshipNihii) {\n invoice.invoiceReference = entityReference.id.substring(prefix.length).replace('0', '1')\n } else {\n invoice.invoiceReference = entityReference.id.substring(prefix.length)\n }\n return super.createInvoice(invoice)\n })\n }\n\n getNextInvoiceReference(prefix: string, entityrefApi: IccEntityrefApi): Promise {\n return entityrefApi.getLatest(prefix).then((entRef: models.EntityReference) => {\n if (!entRef || !entRef.id || !entRef.id!.startsWith(prefix)) return 1\n const sequenceNumber = entRef.id!.split(':').pop() || 0\n return Number(sequenceNumber) + 1\n })\n }\n\n createInvoiceReference(nextReference: number, docId: string, prefix: string, entityrefApi: IccEntityrefApi): Promise {\n return entityrefApi\n .createEntityReference(\n new models.EntityReference({\n id: prefix + nextReference.toString().padStart(6, '0'),\n docId,\n })\n )\n .catch((err) => {\n console.log(err)\n return this.createInvoiceReference(nextReference + 1, docId, prefix, entityrefApi)\n })\n }\n\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all invoices with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the invoices for the patient.\n *\n * @deprecated use {@link findIdsBy} instead\n * @param hcpartyId\n * @param patient (Promise)\n * @param usingPost\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false): Promise> {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let invoices: Array = usingPost\n ? await this.findInvoicesByHCPartyPatientForeignKeysUsingPost(hcpartyId!, _.uniq(extractedKeys))\n : await this.findInvoicesByHCPartyPatientForeignKeys(hcpartyId!, _.uniq(extractedKeys).join(','))\n return await this.decrypt(hcpartyId, invoices)\n }\n\n async findIdsBy(hcpartyId: string, patient: models.Patient, startDate?: number, endDate?: number, descending?: boolean): Promise {\n const extractedKeys = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return this.findInvoiceIdsByDataOwnerPatientInvoiceDate(hcpartyId!, _.uniq(extractedKeys), startDate, endDate, descending)\n }\n\n encrypt(user: models.User, invoices: Array) {\n return Promise.resolve(invoices)\n }\n\n decrypt(hcpartyId: string, invoices: Array): Promise> {\n return Promise.resolve(invoices)\n }\n\n /**\n * @param invoice a invoice\n * @return the id of the patient that the invoice refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(invoice: models.Invoice): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: invoice, type: EntityWithDelegationTypeName.Invoice }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given invoice\n */\n async hasWriteAccess(invoice: models.Invoice): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: invoice, type: EntityWithDelegationTypeName.Invoice })\n }\n\n /**\n * Share an existing invoice with other data owners, allowing them to access the non-encrypted data of the invoice and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the invoice.\n * @param invoice the invoice to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * invoice does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this invoice refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n invoice: models.Invoice,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(invoice, { [delegateId]: options })\n }\n\n /**\n * Share an existing invoice with other data owners, allowing them to access the non-encrypted data of the invoice and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param invoice the invoice to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * invoice does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this invoice refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n invoice: models.Invoice,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(invoice, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing invoice with other data owners, allowing them to access the non-encrypted data of the invoice and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param invoice the invoice to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * invoice does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this invoice refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n invoice: models.Invoice,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(invoice, EntityWithDelegationTypeName.Invoice)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyInvoice(entityWithEncryptionKey) : invoice\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Invoice,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareInvoices(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Invoice\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Invoice })\n }\n\n getEncryptionKeysOf(entity: models.Invoice): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Invoice }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.Invoice, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Invoice }, delegates)\n }\n}\n","import { IccMaintenanceTaskApi } from '../icc-api/api/IccMaintenanceTaskApi'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as models from '../icc-api/model/models'\nimport * as _ from 'lodash'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { DocIdentifier, ListOfIds, MaintenanceTask } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { IccAuthApi } from '../icc-api'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { AbstractFilter } from './filters/filters'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\nimport { IccUserXApi } from './icc-user-x-api'\n\nexport class IccMaintenanceTaskXApi extends IccMaintenanceTaskApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) =>\n this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.MaintenanceTask)\n )\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly hcPartyApi: IccHcpartyXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly userApi: IccUserXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n encryptedKeys: Array = [],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'MaintenanceTask.')\n }\n\n /**\n * Creates a new instance of maintenance task with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param m initialised data for the maintenance task. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * @return a new instance of maintenance task.\n */\n async newInstance(\n user: models.User,\n m: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n const maintenanceTask = {\n ...(m ?? {}),\n _type: 'org.taktik.icure.entities.MaintenanceTask',\n id: m?.id ?? this.crypto.primitives.randomUuid(),\n created: m?.created ?? new Date().getTime(),\n modified: m?.modified ?? new Date().getTime(),\n responsible: m?.responsible ?? (this.autofillAuthor ? dataOwnerId : undefined),\n author: m?.author ?? (this.autofillAuthor ? user.id : undefined),\n }\n\n const extraDelegations = {\n ...Object.fromEntries((user.autoDelegations?.all ?? []).map((d) => [d, AccessLevelEnum.WRITE])),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.MaintenanceTask(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(\n maintenanceTask,\n EntityWithDelegationTypeName.MaintenanceTask,\n undefined,\n undefined,\n true,\n extraDelegations\n )\n .then((x) => x.updatedEntity)\n )\n }\n\n createMaintenanceTask(body?: models.MaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n createMaintenanceTaskWithUser(user: models.User, body?: models.MaintenanceTask): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((tasks) => super.createMaintenanceTask(tasks[0]))\n .then((mt) => this.decrypt(user, [mt]))\n .then((tasks) => tasks[0])\n : Promise.resolve(null)\n }\n\n filterMaintenanceTasksBy(startDocumentId?: string, limit?: number, body?: models.FilterChainMaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n deleteMaintenanceTask(_maintenanceTaskId: string): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n deleteMaintenanceTaskWithUser(user: models.User, maintenanceTaskId: string): Promise | never {\n return super.deleteMaintenanceTask(maintenanceTaskId)\n }\n\n deleteMaintenanceTasks(_maintenanceTaskIds: ListOfIds): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n deleteMaintenanceTasksWithUser(user: models.User, maintenanceTaskIds: ListOfIds): Promise> | never {\n return super.deleteMaintenanceTasks(maintenanceTaskIds)\n }\n\n filterMaintenanceTasksByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: models.FilterChainMaintenanceTask\n ): Promise {\n return super\n .filterMaintenanceTasksBy(startDocumentId, limit, body)\n .then((pl) => this.decrypt(user, pl.rows!).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n getMaintenanceTask(maintenanceTaskId: string): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n getMaintenanceTaskWithUser(user: models.User, maintenanceTaskId: string): Promise {\n return super\n .getMaintenanceTask(maintenanceTaskId)\n .then((mt) => this.decrypt(user, [mt]))\n .then((mts) => mts[0])\n }\n\n modifyMaintenanceTask(body?: models.MaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n modifyMaintenanceTaskWithUser(user: models.User, body?: models.MaintenanceTask): Promise {\n return body ? this.modifyMaintenanceTaskAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n\n private modifyMaintenanceTaskAs(dataOwner: string, body: models.MaintenanceTask): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((encTasks) => super.modifyMaintenanceTask(encTasks[0]))\n .then((mt) => this.decryptAs(dataOwner, [mt]))\n .then((mts) => mts[0])\n }\n\n encrypt(user: models.User, maintenanceTasks: Array): Promise> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n return this.encryptAs(dataOwnerId, maintenanceTasks)\n }\n\n private encryptAs(dataOwner: string, maintenanceTasks: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n maintenanceTasks,\n EntityWithDelegationTypeName.MaintenanceTask,\n this.encryptedFields,\n true,\n false,\n (x) => new models.MaintenanceTask(x)\n )\n }\n\n decrypt(user: models.User, maintenanceTasks: Array): Promise> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n return this.decryptAs(dataOwnerId, maintenanceTasks)\n }\n\n private async decryptAs(dataOwner: string, maintenanceTasks: Array): Promise> {\n return (\n await this.crypto.xapi.tryDecryptEntities(maintenanceTasks, EntityWithDelegationTypeName.MaintenanceTask, (x) => new MaintenanceTask(x))\n ).map(({ entity }) => entity)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given maintenance task\n */\n async hasWriteAccess(maintenanceTask: models.MaintenanceTask): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: maintenanceTask, type: EntityWithDelegationTypeName.MaintenanceTask })\n }\n\n /**\n * Share an existing maintenance task with other data owners, allowing them to access the non-encrypted data of the maintenance task and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the maintenance task.\n * @param maintenanceTask the maintenance task to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * maintenance task does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n maintenanceTask: models.MaintenanceTask,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(maintenanceTask, { [delegateId]: options })\n }\n\n /**\n * Share an existing maintenance task with other data owners, allowing them to access the non-encrypted data of the maintenance task and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param maintenanceTask the maintenance task to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * maintenance task does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity.\n */\n async shareWithMany(\n maintenanceTask: models.MaintenanceTask,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(maintenanceTask, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing maintenance task with other data owners, allowing them to access the non-encrypted data of the maintenance task and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param maintenanceTask the maintenance task to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * maintenance task does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n maintenanceTask: models.MaintenanceTask,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(\n maintenanceTask,\n EntityWithDelegationTypeName.MaintenanceTask\n )\n const updatedEntity = entityWithEncryptionKey ? await this.modifyMaintenanceTaskAs(self, entityWithEncryptionKey) : maintenanceTask\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.MaintenanceTask,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareMaintenanceTask(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decryptAs(self, [e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.MaintenanceTask\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.MaintenanceTask })\n }\n\n getEncryptionKeysOf(entity: models.MaintenanceTask): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.MaintenanceTask }, undefined)\n }\n\n async subscribeToMaintenanceTaskEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter,\n eventFired: (dataSample: MaintenanceTask) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n\n return subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.MaintenanceTask,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.decrypt(currentUser, [encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n createDelegationDeAnonymizationMetadata(entity: MaintenanceTask, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.MaintenanceTask },\n delegates\n )\n }\n}\n","import { IccAuthApi, IccMessageApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\nimport { Message, MessagesReadStatusUpdate, PaginatedListMessage, Patient, User } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { FilterChainMessage } from '../icc-api/model/FilterChainMessage'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { AbstractFilter } from './filters/filters'\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\n\nexport class IccMessageXApi extends IccMessageApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Message))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n encryptedKeys: Array = [],\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'Message.')\n }\n\n // noinspection JSUnusedGlobalSymbols\n newInstance(user: User, m: any) {\n return this.newInstanceWithPatient(user, null, m)\n }\n\n /**\n * Creates a new instance of message with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this message refers to.\n * @param m initialised data for the message. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the message. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of message.\n */\n async newInstanceWithPatient(\n user: User,\n patient: Patient | null,\n m: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n if (!patient && options.preferredSfk) throw new Error('You need to specify parent patient in order to use secret foreign keys.')\n const message = {\n ...(m ?? {}),\n _type: 'org.taktik.icure.entities.Message',\n id: m?.id ?? this.crypto.primitives.randomUuid(),\n created: m?.created ?? new Date().getTime(),\n modified: m?.modified ?? new Date().getTime(),\n responsible: m?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: m?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: m?.codes ?? [],\n tags: m?.tags ?? [],\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = patient\n ? options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n : undefined\n if (patient && !sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Message(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(message, EntityWithDelegationTypeName.Message, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n async decrypt(messages: Array) {\n return await this.crypto.xapi.tryDecryptEntities(messages, EntityWithDelegationTypeName.Message, (x) => new models.Message(x))\n }\n\n encrypt(messages: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n messages,\n EntityWithDelegationTypeName.Message,\n this.encryptedFields,\n true,\n false,\n (x) => new models.Message(x)\n )\n }\n\n /**\n * @param message a message\n * @return the id of the patient that the message refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(message: models.Message): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: message, type: EntityWithDelegationTypeName.Message }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given message\n */\n async hasWriteAccess(message: models.Message): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: message, type: EntityWithDelegationTypeName.Message })\n }\n\n /**\n * Share an existing message with other data owners, allowing them to access the non-encrypted data of the message and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the message.\n * @param message the message to share.\n * @param shareSecretIds the secret ids of the Message that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Message is the owning entity id.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * message does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this message refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n message: models.Message,\n shareSecretIds: string[],\n options: {\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(message, { [delegateId]: { ...options, shareSecretIds } })\n }\n\n /**\n * Share an existing message with other data owners, allowing them to access the non-encrypted data of the message and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param message the message to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds the secret ids of the Message that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Message is the owning entity id. Mandatory.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * message does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this message refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n message: models.Message,\n delegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(message, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing message with other data owners, allowing them to access the non-encrypted data of the message and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param message the message to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds the secret ids of the Message that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Message is the owning entity id. Mandatory.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * message does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this message refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n message: models.Message,\n delegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(message, EntityWithDelegationTypeName.Message)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyMessage(entityWithEncryptionKey) : message\n return this.crypto.xapi.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Message,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareMessages(x)\n )\n }\n\n /**\n * @param message a message\n * @return the secret ids of the message, retrieved from the encrypted metadata. The result may be used to find entities where the message is\n * the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptSecretIdsOf(message: models.Message): Promise {\n return this.crypto.xapi.secretIdsOf({ entity: message, type: EntityWithDelegationTypeName.Message }, undefined)\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Message\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Message })\n }\n\n getEncryptionKeysOf(entity: models.Message): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Message }, undefined)\n }\n\n override async filterMessagesBy(body: FilterChainMessage, startDocumentId?: string, limit?: number): Promise {\n const page = await super.filterMessagesBy(body, startDocumentId, limit)\n const decryptedMessages = await this.decrypt(page.rows ?? [])\n if (decryptedMessages.some((m) => !m.decrypted)) throw new Error('Some messages could not be decrypted')\n return {\n ...page,\n rows: decryptedMessages.map((m) => m.entity),\n }\n }\n\n async encryptAndCreateMessageInTopic(body: Message): Promise {\n const encryptedMessage = await this.encrypt([body])\n const createdMessage = await super.createMessageInTopic(encryptedMessage[0])\n return (await this.decrypt([createdMessage]))[0].entity\n }\n\n async setMessagesReadStatus(body?: MessagesReadStatusUpdate): Promise> {\n return (await this.decrypt(await super.setMessagesReadStatus(body))).map((m) => m.entity)\n }\n\n async getAndDecryptMessage(messageId: string): Promise {\n const encryptedMessage = await super.getMessage(messageId)\n const decryptedMessage = await this.decrypt([encryptedMessage])\n if (!decryptedMessage[0].decrypted) throw new Error('Message could not be decrypted')\n return decryptedMessage[0].entity\n }\n\n async subscribeToMessageEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (message: Message) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n return await subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.Message,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.decrypt([encrypted]))[0].entity\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n createDelegationDeAnonymizationMetadata(entity: Message, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Message }, delegates)\n }\n}\n","import { IccAuthApi, IccPatientApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { Document, IcureStub, ListOfIds, MaintenanceTask, Patient } from '../icc-api/model/models'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { b64_2ab } from '../icc-api/model/ModelHelper'\nimport { findName, garnishPersonWithName, hasName } from './utils/person-util'\nimport { EncryptedFieldsManifest, parseEncryptedFields, retry, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { EntityWithDelegationTypeName } from './utils/EntityWithDelegationTypeName'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { MinimalEntityBulkShareResult } from '../icc-api/model/requests/MinimalEntityBulkShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { AbstractFilter } from './filters/filters'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\nimport { BulkShareOrUpdateMetadataParams } from '../icc-api/model/requests/BulkShareOrUpdateMetadataParams'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccPatientXApi extends IccPatientApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Patient))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly contactApi: IccContactXApi,\n private readonly formApi: IccFormXApi,\n private readonly helementApi: IccHelementXApi,\n private readonly invoiceApi: IccInvoiceXApi,\n private readonly documentApi: IccDocumentXApi,\n private readonly hcpartyApi: IccHcpartyXApi,\n private readonly classificationApi: IccClassificationXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly calendarItemApi: IccCalendarItemXApi,\n private readonly userApi: IccUserXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n encryptedKeys: Array = ['note'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'Patient.')\n }\n\n /**\n * Creates a new instance of patient with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param p initialised data for the patient. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * @return a new instance of patient.\n */\n async newInstance(\n user: models.User,\n p: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n } = {}\n ) {\n const patient = {\n ...(p ?? {}),\n _type: 'org.taktik.icure.entities.Patient',\n id: p?.id ?? this.crypto.primitives.randomUuid(),\n created: p?.created ?? new Date().getTime(),\n modified: p?.modified ?? new Date().getTime(),\n responsible: p?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: p?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: p?.codes ?? [],\n tags: p?.tags ?? [],\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n const initialisationInfo = await this.crypto.xapi.entityWithInitialisedEncryptedMetadata(\n patient,\n EntityWithDelegationTypeName.Patient,\n undefined,\n undefined,\n true,\n extraDelegations\n )\n return new models.Patient(initialisationInfo.updatedEntity)\n }\n\n completeNames(patient: models.Patient): models.Patient {\n let finalPatient: any = patient\n\n if (!!finalPatient.lastName && !hasName(finalPatient, models.PersonName.UseEnum.Official)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Official, finalPatient.lastName, finalPatient.firstName)\n }\n\n if (!!finalPatient.maidenName && !hasName(finalPatient, models.PersonName.UseEnum.Maiden)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Maiden, finalPatient.maidenName, finalPatient.firstName)\n }\n\n if (!!finalPatient.alias && !hasName(finalPatient, models.PersonName.UseEnum.Nickname)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Nickname, finalPatient.alias, finalPatient.firstName)\n }\n\n if (!finalPatient.lastName && !!hasName(finalPatient, models.PersonName.UseEnum.Official)) {\n const officialName = findName(finalPatient, models.PersonName.UseEnum.Official)\n finalPatient = {\n ...finalPatient,\n lastName: officialName!.lastName,\n firstName: officialName!.firstNames?.[0],\n }\n }\n\n if (!finalPatient.maidenName && !!hasName(finalPatient, models.PersonName.UseEnum.Maiden)) {\n finalPatient = {\n ...finalPatient,\n maidenName: findName(finalPatient, models.PersonName.UseEnum.Maiden)!.lastName,\n }\n }\n\n if (!finalPatient.alias && !!hasName(finalPatient, models.PersonName.UseEnum.Nickname)) {\n finalPatient = {\n ...finalPatient,\n alias: findName(finalPatient, models.PersonName.UseEnum.Nickname)!.lastName,\n }\n }\n\n return new Patient(finalPatient)\n }\n\n /**\n * @deprecated replace with {@link initConfidentialSecretId}\n */\n async initConfidentialDelegation(patient: models.Patient, user: models.User): Promise {\n return this.initConfidentialSecretId(patient, user)\n }\n\n /**\n * Ensures that the current data owner has some confidential secret ids for the provided patient. If not creates them and updates the patient in the\n * database.\n * @param patient the patient for which you want to initialise the confidential secret id.\n * @param user the current user.\n * @return the updated patient or the original patient if no change was necessary.\n */\n async initConfidentialSecretId(patient: models.Patient, user: models.User): Promise {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (dataOwnerId !== (await this.dataOwnerApi.getCurrentDataOwnerId()))\n throw new Error('You can initialise confidential delegations only for the current data owner')\n let updatedPatient = patient\n if (!patient.rev) {\n updatedPatient = await this.createPatientWithUser(user, patient)\n if (!updatedPatient) throw new Error('Could not create patient')\n }\n const initialised = await this.crypto.confidential.initialiseConfidentialSecretId(updatedPatient, EntityWithDelegationTypeName.Patient, (x) =>\n this.bulkSharePatients(x)\n )\n if (initialised) {\n return initialised\n } else {\n return updatedPatient\n }\n }\n\n createPatient(body?: models.Patient): never {\n throw new Error('Cannot call a method that returns patients without providing a user for de/encryption')\n }\n\n createPatientWithUser(user: models.User, body?: models.Patient): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(this.completeNames(body))])\n .then((pats) => super.createPatient(pats[0]))\n .then(async (patient: Patient) => {\n /**\n * This code is a workaround for the fact that the backend is adding empty delegations to the patient when it is created.\n */\n\n const patientDelegations = patient.delegations\n\n if (patientDelegations != undefined && Object.keys(patientDelegations).length > 0) {\n const areDelegationsEmpty = Object\n .values(patientDelegations)\n .every((delegation) => delegation.length === 0)\n\n if (areDelegationsEmpty) {\n return await this.modifyPatientRaw(\n new Patient({\n ...patient,\n delegations: {},\n })\n )\n }\n }\n return patient\n })\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n : Promise.resolve(null)\n }\n\n filterBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: models.FilterChainPatient\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n filterByWithUser(\n user: models.User,\n filterChain: models.FilterChainPatient,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean\n ): Promise {\n return super\n .filterPatientsBy(startKey, startDocumentId, limit, skip, sort, desc, filterChain)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n findByAccessLogUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByAccessLogUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .findByAccessLogUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n findByAccessLogUserAfterDate_1(externalId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByExternalIdWithUser(user: models.User, externalId: string): Promise {\n return super\n .findByExternalId(externalId)\n .then((pats) => this.decrypt(user, [pats]))\n .then((x) => x[0])\n }\n\n findByNameBirthSsinAuto(\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByNameBirthSsinAutoWithUser(\n user: models.User,\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .findByNameBirthSsinAuto(healthcarePartyId, filterValue, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n fuzzySearch(firstName?: string, lastName?: string, dateOfBirth?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n fuzzySearchWithUser(user: models.User, firstName?: string, lastName?: string, dateOfBirth?: number): Promise | any> {\n return super.fuzzySearch(firstName, lastName, dateOfBirth).then((pats) => this.decrypt(user, pats))\n }\n\n getPatient(patientId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getPatientRaw(patientId: string): Promise {\n return super.getPatient(patientId)\n }\n\n getPatientWithUser(user: models.User, patientId: string): Promise {\n return super\n .getPatient(patientId)\n .then((p) => this.tryDecryptOrReturnOriginal([p]))\n .then((pats) => pats[0].entity)\n }\n\n getPotentiallyEncryptedPatientWithUser(user: models.User, patientId: string): Promise<{ patient: models.Patient; decrypted: boolean }> {\n return super\n .getPatient(patientId)\n .then((p) => this.tryDecryptOrReturnOriginal([p]))\n .then((pats) => ({ patient: pats[0].entity, decrypted: pats[0].decrypted }))\n }\n\n getPatients(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getPatientsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getPatients(body).then((pats) => this.decrypt(user, pats))\n }\n\n listDeletedPatients(startDate?: number, endDate?: number, desc?: boolean, startKey?: string, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listDeletedPatientsWithUser(\n user: models.User,\n startDate?: number,\n endDate?: number,\n desc?: boolean,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listDeletedPatients(startDate, endDate, desc, startDocumentId, startKey, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listDeletedPatients_2(firstName?: string, lastName?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listDeletedPatientsByNameWithUser(user: models.User, firstName?: string, lastName?: string): Promise | any> {\n return super.listDeletedPatientsByName(firstName, lastName).then((rows) => this.decrypt(user, rows, false))\n }\n\n listOfMergesAfter(date: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listOfMergesAfterWithUser(user: models.User, date: number): Promise | any> {\n return super.listOfMergesAfter(date).then((pats) => this.decrypt(user, pats, false))\n }\n\n listOfPatientsModifiedAfter(date: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listOfPatientsModifiedAfterWithUser(\n user: models.User,\n date: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listOfPatientsModifiedAfter(date, startKey, startDocumentId, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatients(hcPartyId?: string, sortField?: string, startKey?: string, startDocumentId?: string, limit?: number, sortDirection?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsWithUser(\n user: models.User,\n hcPartyId?: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatients(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatientsByHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsByHcPartyWithUser(\n user: models.User,\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatientsByHcParty(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatientsOfHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsOfHcPartyWithUser(\n user: models.User,\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatientsOfHcParty(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n mergeInto(toId: string, fromIds: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n mergeIntoWithUser(user: models.User, toId: string, fromIds: string): Promise {\n return super\n .mergeInto(toId, fromIds)\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n }\n\n modifyPatient(body?: models.Patient): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice.\n */\n modifyPatientRaw(body?: models.Patient): Promise {\n return super.modifyPatient(body)\n }\n\n modifyPatientWithUser(user: models.User, body?: models.Patient): Promise {\n return body ? this.modifyPatientAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n\n private modifyPatientAs(dataOwner: string, body: models.Patient): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(this.completeNames(body))])\n .then((pats) => super.modifyPatient(pats[0]))\n .then((p) => this.decryptAs(dataOwner, [p]))\n .then((pats) => pats[0])\n }\n\n modifyPatientReferral(patientId: string, referralId: string, start?: number, end?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n modifyPatientReferralWithUser(\n user: models.User,\n patientId: string,\n referralId: string,\n start?: number,\n end?: number\n ): Promise {\n return super\n .modifyPatientReferral(patientId, referralId, start, end)\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n }\n\n encrypt(user: models.User, pats: Array): Promise> {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n return this.encryptAs(dataOwnerId, pats)\n }\n\n private encryptAs(dataOwner: string, pats: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n pats,\n EntityWithDelegationTypeName.Patient,\n this.encryptedFields,\n true,\n false,\n (x) => new models.Patient(x)\n )\n }\n\n // If patient can't be decrypted returns patient with encrypted data.\n decrypt(user: models.User, patients: Array, fillDelegations = true): Promise> {\n return this.decryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), patients, fillDelegations)\n }\n\n private decryptAs(dataOwner: string, patients: Array, fillDelegations = true): Promise> {\n return this.tryDecryptOrReturnOriginal(patients).then((ps) => ps.map((p) => p.entity))\n }\n\n async tryDecryptOrReturnOriginal(patients: Array): Promise<{ entity: models.Patient; decrypted: boolean }[]> {\n return (await this.crypto.xapi.tryDecryptEntities(patients, EntityWithDelegationTypeName.Patient, (x) => new models.Patient(x))).map((p) => {\n if (p.entity.picture && !(p.entity.picture instanceof ArrayBuffer)) {\n return {\n entity: new models.Patient({\n ...p.entity,\n picture: b64_2ab(p.entity.picture),\n }),\n decrypted: p.decrypted,\n }\n } else return p\n })\n }\n\n /**\n * @deprecated replace with {@link shareAllDataOfPatient}\n */\n async share(\n user: models.User,\n patId: string,\n ownerId: string,\n delegateIds: Array,\n delegationTags: { [key: string]: Array },\n usingPost: boolean = false\n ): Promise<{\n patient: models.Patient | null\n statuses: { [key: string]: { success: boolean | null; error: Error | null } }\n } | null> {\n return this.shareAllDataOfPatient(user, patId, ownerId, delegateIds, delegationTags, usingPost)\n }\n\n async shareAllDataOfPatient(\n user: models.User,\n patId: string,\n ownerId: string,\n delegateIds: Array,\n delegationTags: { [key: string]: Array },\n usingPost: boolean = false\n ): Promise<{\n patient: models.Patient | null\n statuses: { [key: string]: { success: boolean | null; error: Error | null } }\n } | null> {\n const allTags: string[] = _.uniq(_.flatMap(Object.values(delegationTags)))\n const status = {\n contacts: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n forms: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n healthElements: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n invoices: {\n success: allTags.includes('financialInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n documents: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n classifications: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n calendarItems: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n patient: { success: false, error: null, modified: 0 } as {\n success: boolean\n error: Error | null\n },\n }\n const hcp = await this.hcpartyApi.getHealthcareParty(ownerId)\n const parentId = hcp.parentId\n let patient = await retry(() => this.getPatientWithUser(user, patId))\n const patientWithInitialisedEncryption = await this.crypto.xapi.ensureEncryptionKeysInitialised(patient, EntityWithDelegationTypeName.Patient)\n if (patientWithInitialisedEncryption) {\n patient = await this.modifyPatientWithUser(user, patientWithInitialisedEncryption)\n }\n\n if (!patient) {\n status.patient = {\n success: false,\n error: new Error('Patient does not exist or cannot initialise encryption keys'),\n }\n return { patient: patient, statuses: status }\n }\n\n const delSfks = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, ownerId)\n const ecKeys = await this.crypto.xapi.encryptionKeysOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, ownerId)\n\n if (delSfks.length) {\n const retrievedHealthElements = await retry(() =>\n (usingPost\n ? this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((hes) =>\n parentId\n ? (usingPost\n ? this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreHes) => _.uniqBy(hes.concat(moreHes), 'id'))\n : hes\n )\n )\n const retrievedForms = await retry(() =>\n (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((frms) =>\n parentId\n ? (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreFrms) => _.uniqBy(frms.concat(moreFrms), 'id'))\n : frms\n )\n )\n const retrievedContacts = await retry(() =>\n (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(ownerId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ctcs) =>\n parentId\n ? (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(parentId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCtcs) => _.uniqBy(ctcs.concat(moreCtcs), 'id'))\n : ctcs\n )\n )\n const retrievedInvoices = await retry(() =>\n (usingPost\n ? this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ivs) =>\n parentId\n ? this.invoiceApi\n .findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreIvs) => _.uniqBy(ivs.concat(moreIvs), 'id'))\n : ivs\n )\n )\n const retrievedClassifications = await retry(() =>\n this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n .then((cls) =>\n parentId\n ? this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n )\n const retrievedCalendarItems = await retry(() =>\n (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((cls) =>\n parentId\n ? (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(parentId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n )\n const isMedicalInfoTags = (tags: string[]) => tags.includes('medicalInformation') || tags.includes('all')\n const isFinancialInfoTags = (tags: string[]) => tags.includes('financialInformation') || tags.includes('all')\n const doShareEntitiesAndUpdateStatus = async (\n entities: models.IcureStub[],\n entitiesType: EntityWithDelegationTypeName,\n status: {\n success: boolean | null\n error: null | Error\n modified: number\n },\n tagsCondition: (tags: string[]) => boolean,\n doShareMinimal: (request: BulkShareOrUpdateMetadataParams) => Promise\n ): Promise => {\n const delegatesToApply = delegateIds.filter((delegateId) => tagsCondition(delegationTags[delegateId]))\n if (entities.length && delegatesToApply.length) {\n const requests: {\n entity: IcureStub\n dataForDelegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKeys: string[]\n shareOwningEntityIds: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n }\n }[] = []\n for (const entity of entities) {\n const currentEntityRequests: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKeys: string[]\n shareOwningEntityIds: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n } = {}\n const secretIds = await this.crypto.xapi.secretIdsOf({ entity, type: entitiesType }, undefined)\n const encryptionKeys = await this.crypto.xapi.encryptionKeysOf({ entity, type: entitiesType }, undefined)\n const request = {\n shareSecretIds: secretIds,\n shareEncryptionKeys: encryptionKeys,\n shareOwningEntityIds: [patient.id!],\n requestedPermissions: RequestedPermissionEnum.MAX_WRITE,\n }\n for (const delegateId of delegatesToApply) {\n currentEntityRequests[delegateId] = request\n }\n requests.push({ dataForDelegates: currentEntityRequests, entity })\n }\n await this.crypto.xapi\n .bulkShareOrUpdateEncryptedEntityMetadataNoEntities(entitiesType, requests, (x) => doShareMinimal(x))\n .then((shareResult) => {\n status.modified = new Set(shareResult.successfulUpdates.map((x) => x.entityId)).size\n status.success = shareResult.updateErrors.length === 0\n if (!status.success) {\n const errorMsg = `Error while sharing (some) entities of type ${entitiesType} for patient ${patient.id} : ${JSON.stringify(\n shareResult.updateErrors\n )}`\n console.error(errorMsg)\n status.error = new Error(errorMsg)\n }\n })\n .catch((e) => {\n status.success = false\n status.error = e\n })\n } else {\n status.success = true\n }\n }\n await doShareEntitiesAndUpdateStatus(\n retrievedHealthElements,\n EntityWithDelegationTypeName.HealthElement,\n status.healthElements,\n isMedicalInfoTags,\n (x) => this.helementApi.bulkShareHealthElementsMinimal(x)\n )\n await doShareEntitiesAndUpdateStatus(retrievedContacts, EntityWithDelegationTypeName.Contact, status.contacts, isMedicalInfoTags, (x) =>\n this.contactApi.bulkShareContactsMinimal(x)\n )\n await doShareEntitiesAndUpdateStatus(retrievedInvoices, EntityWithDelegationTypeName.Invoice, status.invoices, isFinancialInfoTags, (x) =>\n this.invoiceApi.bulkShareInvoicesMinimal(x)\n )\n await doShareEntitiesAndUpdateStatus(\n retrievedClassifications,\n EntityWithDelegationTypeName.Classification,\n status.classifications,\n isMedicalInfoTags,\n (x) => this.classificationApi.bulkShareClassificationsMinimal(x)\n )\n await doShareEntitiesAndUpdateStatus(\n retrievedCalendarItems,\n EntityWithDelegationTypeName.CalendarItem,\n status.calendarItems,\n isMedicalInfoTags,\n (x) => this.calendarItemApi.bulkShareCalendarItemsMinimal(x)\n )\n await doShareEntitiesAndUpdateStatus(retrievedForms, EntityWithDelegationTypeName.Form, status.forms, isMedicalInfoTags, (x) =>\n this.formApi.bulkShareFormsMinimal(x)\n )\n }\n const sharePatientDataRequest = {\n shareSecretIds: delSfks,\n shareEncryptionKeys: ecKeys,\n shareOwningEntityIds: [],\n requestedPermissions: RequestedPermissionEnum.MAX_WRITE,\n }\n const sharePatientRequest = {\n entity: patient,\n dataForDelegates: Object.fromEntries(delegateIds.map((delegateId) => [delegateId, sharePatientDataRequest])),\n }\n return await this.crypto.xapi\n .bulkShareOrUpdateEncryptedEntityMetadata(EntityWithDelegationTypeName.Patient, [sharePatientRequest], (x) => this.bulkSharePatients(x))\n .then((shareResult) => {\n if (shareResult.updatedEntities.length && !shareResult.updateErrors.length) {\n status.patient.success = true\n return { patient: shareResult.updatedEntities[0], statuses: status }\n } else {\n const errorMsg = `Error while sharing patient with id ${patient.id} : ${JSON.stringify(shareResult.updateErrors)}`\n console.error(errorMsg)\n status.patient.error = new Error(errorMsg)\n status.patient.success = false\n return { patient: shareResult.updatedEntities[0] ?? patient, statuses: status }\n }\n })\n .catch((e) => {\n status.patient.error = e\n status.patient.success = false\n return { patient, statuses: status }\n })\n }\n\n export(user: models.User, patId: string, ownerId: string, usingPost: boolean = false): Promise<{ id: string }> {\n return this.hcpartyApi.getHealthcareParty(ownerId).then((hcp) => {\n const parentId = hcp.parentId\n\n return retry(() => this.getPatientWithUser(user, patId))\n .then(async (patient: models.Patient) => {\n const initialised = await this.crypto.xapi.ensureEncryptionKeysInitialised(patient, EntityWithDelegationTypeName.Patient)\n if (!initialised) {\n return patient\n } else {\n return await this.modifyPatientWithUser(user, initialised)\n }\n })\n .then(async (patient: models.Patient | null) => {\n if (!patient) {\n return Promise.resolve({ id: patId })\n }\n const delSfks = await this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, ownerId)\n return delSfks.length\n ? Promise.all([\n retry(() =>\n (usingPost\n ? this.helementApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n : this.helementApi.findByHCPartyPatientSecretFKeysArray(ownerId, delSfks)\n ).then((hes) =>\n parentId\n ? (usingPost\n ? this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreHes) => _.uniqBy(hes.concat(moreHes), 'id'))\n : hes\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((frms) =>\n parentId\n ? (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreFrms) => _.uniqBy(frms.concat(moreFrms), 'id'))\n : frms\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(ownerId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ctcs) =>\n parentId\n ? (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(parentId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCtcs) => _.uniqBy(ctcs.concat(moreCtcs), 'id'))\n : ctcs\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ivs) =>\n parentId\n ? this.invoiceApi\n .findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreIvs) => _.uniqBy(ivs.concat(moreIvs), 'id'))\n : ivs\n )\n ) as Promise>,\n retry(() =>\n this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n .then((cls) =>\n parentId\n ? this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n ) as Promise>,\n retry(async () => {\n const delegationSFKs = _.uniq(delSfks).join(',')\n try {\n let calendarItems = await (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(',')))\n\n if (parentId) {\n const moreCalendarItems = await (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(parentId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(',')))\n calendarItems = _.uniqBy(calendarItems.concat(moreCalendarItems), 'id')\n }\n\n return calendarItems\n } catch (ex) {\n console.log(`exception occured exporting calendarItem for ownerId: ${ownerId} - ${ex}`)\n //throw ex\n }\n }) as Promise>,\n ]).then(([hes, frms, ctcs, ivs, cls, cis]) => {\n const docIds: { [key: string]: number } = {}\n ctcs.forEach(\n (c: models.Contact) =>\n c.services &&\n c.services.forEach((s) => s.content && Object.values(s.content).forEach((c) => c && c.documentId && (docIds[c.documentId] = 1)))\n )\n\n return retry(() => this.documentApi.getDocuments(new ListOfIds({ ids: Object.keys(docIds) }))).then((docs: Array) => {\n return {\n id: patId,\n patient: patient,\n contacts: ctcs,\n forms: frms,\n healthElements: hes,\n invoices: ivs,\n classifications: cls,\n calItems: cis,\n documents: docs,\n }\n })\n })\n : Promise.resolve({\n id: patId,\n patient: patient,\n contacts: [],\n forms: [],\n healthElements: [],\n invoices: [],\n classifications: [],\n calItems: [],\n documents: [],\n })\n })\n })\n }\n\n checkInami(inami: string): boolean {\n const num_inami = inami.replace(new RegExp('[^(0-9)]', 'g'), '')\n\n const checkDigit = num_inami.substring(6, 8)\n const numSansCheck = num_inami.substring(0, 6)\n let retour = false\n\n //modulo du niss\n const modINAMI = parseInt(numSansCheck) % 97\n\n //obtention du num de check 97 - le resultat du mod\n const checkDigit_2 = 97 - modINAMI\n\n if (parseInt(checkDigit) == checkDigit_2) {\n retour = true\n }\n return retour\n }\n\n isValidSsin(ssin: string) {\n ssin = ssin.replace(new RegExp('[^(0-9)]', 'g'), '')\n let isValidNiss = false\n\n const normalNumber =\n /^[0-9][0-9](([0][0-9])|([1][0-2]))(([0-2][0-9])|([3][0-1]))(([0-9]{2}[1-9])|([0-9][1-9][0-9])|([1-9][0-9]{2}))(([0-8][0-9])|([9][0-7]))$/.test(\n ssin\n )\n const bisNumber = /^[0-9][0-9](([2][0-9])|([3][0-2]))(([0-2][0-9])|([3][0-1]))[0-9]{3}(([0-8][0-9])|([9][0-7]))$/.test(ssin)\n const terNumber = /^[0-9][0-9](([4][0-9])|([5][0-2]))(([0-2][0-9])|([3][0-1]))[0-9]{3}(([0-8][0-9])|([9][0-7]))$/.test(ssin)\n\n if (normalNumber || bisNumber || terNumber) {\n isValidNiss =\n 97 - (Number(ssin.substring(0, 9)) % 97) === Number(ssin.substring(9, 11))\n ? true\n : 97 - (Number('2' + ssin.substring(0, 9)) % 97) === Number(ssin.substring(9, 11))\n }\n\n return isValidNiss\n }\n\n async getPatientIdOfChildDocumentForHcpAndHcpParents(\n childDocument: models.Invoice | models.CalendarItem | models.Contact | models.AccessLog,\n hcpId: string,\n childDocumentType: EntityWithDelegationTypeName\n ): Promise {\n const parentIdsArray = await this.crypto.xapi.owningEntityIdsOf({ entity: childDocument, type: childDocumentType }, hcpId)\n\n const multipleParentIds = _.uniq(parentIdsArray).length > 1\n\n if (multipleParentIds) {\n throw 'Child document with id ' + childDocument.id + ' contains multiple parent ids in its CFKs for hcpId: ' + hcpId\n }\n\n const parentId = _.first(parentIdsArray)\n\n if (!parentId) {\n throw 'Parent id is empty in CFK of child document with id ' + childDocument.id + ' for hcpId: ' + hcpId\n }\n\n let patient: models.Patient = await super.getPatient(parentId!)\n\n let mergeLevel = 0\n const maxMergeLevel = 10\n while (patient.mergeToPatientId) {\n mergeLevel++\n if (mergeLevel === maxMergeLevel) {\n throw 'Too many merged levels for parent (Patient) of child document ' + childDocument.id + ' ; hcpId: ' + hcpId\n }\n\n patient = await super.getPatient(patient.mergeToPatientId!)\n }\n\n return patient.id!\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given patient\n */\n async hasWriteAccess(patient: models.Patient): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n }\n\n /**\n * Share an existing patient with other data owners, allowing them to access the non-encrypted data of the patient and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the patient.\n * @param patient the patient to share.\n * @param shareSecretIds the secret ids of the Patient that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Patient is the owning entity id.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * patient does not have encrypted content.\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n patient: models.Patient,\n shareSecretIds: string[],\n options: {\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(patient, { [delegateId]: { ...options, shareSecretIds: shareSecretIds } })\n }\n\n /**\n * Share an existing patient with other data owners, allowing them to access the non-encrypted data of the patient and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param patient the patient to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds the secret ids of the Patient that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Patient is the owning entity id.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * patient does not have encrypted content.\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n patient: models.Patient,\n delegates: {\n [delegateIds: string]: {\n shareSecretIds: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(patient, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing patient with other data owners, allowing them to access the non-encrypted data of the patient and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param patient the patient to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds the secret ids of the Patient that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Patient is the owning entity id.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * patient does not have encrypted content.\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n patient: models.Patient,\n delegates: {\n [delegateIds: string]: {\n shareSecretIds: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(patient, EntityWithDelegationTypeName.Patient)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyPatientAs(self, entityWithEncryptionKey) : patient\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Patient,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkSharePatients(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decryptAs(self, [e]).then((es) => es[0])))\n }\n\n /**\n * @param patient a patient\n * @return all the decryptable secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.xapi.secretIdsOf({ entity: patient, type: EntityWithDelegationTypeName.Patient }, undefined)\n }\n\n /**\n * @param patient a patient\n * @return the confidential secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptConfidentialSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.confidential.getConfidentialSecretIds({ entity: patient, type: EntityWithDelegationTypeName.Patient }, undefined)\n }\n\n /**\n * @param patient a patient\n * @return the non-confidential secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptNonConfidentialSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.confidential.getSecretIdsSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient })\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Patient\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Patient })\n }\n\n getEncryptionKeysOf(entity: models.Patient): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Patient }, undefined)\n }\n\n /**\n * Merge two patients into one. This method performs the following operations:\n * - The `from` patient will be soft-deleted, and it will point to the `into` patient. Only the `deletionDate` and `mergeToPatientId` fields of the\n * patient will be changed (automatically by this method). Note that the value of {@link from} is only used to verify that the client is aware of\n * the last version of the `from` patient: any changes to its content and/or metadata compared to what is actually stored in the database will be\n * ignored.\n * - The metadata of the `into` patient will be automatically updated to contain also the metadata of the `from` patient and to keep track of the\n * merge:\n * - the `mergedIds` will be updated to contain the `from` patient id\n * - all secret ids of the `from` patient will be added to the `into` patient\n * - all data owners (including anonymous data owners) with access to the `from` patient will have the same access to the merged `into` patient\n * (unless they already had greater access to the `into` patient, in which case they keep the greater access)\n * - The content of the `into` patient will be updated to match the content (name, address, note, ...) of the provided {@link mergedInto} parameter.\n * Note that since the metadata is automatically updated by this method you must not change the metadata of the `mergedInto` patient\n * (`delegations`, mergedInto`, ...): if there is any change between the metadata of the provided `mergedInto` patient and the stored patient this\n * method will fail with an error.\n *\n * In case the revisions of {@link from} and/or {@link mergedInto} does not match the latest revisions for these patients in the database this\n * method will fail without soft-deleting the `from` patient and without updating the `into` patient with the merged content and metadata. You will\n * have to retrieve the updated versions of both patients before retrying the merge.\n *\n * Finally, note that this method only merges existing data, and does not perform any automatic sharing of the data. The secret ids and encryption\n * keys will not be shared with users that had access only to one of the entity, you will have to use the {@link shareWith} method after the merge\n * if you want to do so.\n * For example consider hcps A, B with access to P' and hcps A, C with access to P'', and we merge P'' into P'. After the merge:\n * - A has access to all secret ids of the merged patient and to the encryption key of the merged patient\n * - B has access to the encryption key of the merged patient (since it is the same as in P'), but only to the secret id which was originally from\n * the unmerged P'\n * - C has no access to the encryption key of the merged patient, and has access only to the secret id which was originally from the unmerged P''\n *\n * @param from the original, unmodified `from` patient. Its content will be unchanged and its metadata will be automatically updated by this method\n * to reflect the merge.\n * @param mergedInto the `into` patient with updated content result of the merge with the `from` patient, as specified by your application logic.\n * The metadata of the `mergedInto` patient must not differ from the metadata of the stored version of the patient, since it will be automatically\n * updated by the method.\n * @return the updated `into` patient.\n */\n async mergePatients(from: Patient, mergedInto: Patient): Promise {\n const encryptedMerged = (await this.encryptAs(await this.dataOwnerApi.getCurrentDataOwnerId(), [mergedInto]))[0]\n const merged = await super.baseMergePatients(from.id!, from.rev!, encryptedMerged)\n return (await this.tryDecryptOrReturnOriginal([merged]))[0].entity\n }\n\n async subscribeToPatientEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (patient: Patient) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n return subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.Patient,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.decrypt(currentUser, [encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n createDelegationDeAnonymizationMetadata(entity: Patient, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Patient }, delegates)\n }\n\n /**\n * Initializes the exchange data towards a newly invited patient. This allows the doctor to share data with the\n * patient even if the patient has not yet initialized a keypair for himself.\n *\n * This method should be used only if the patient has not yet initialized a keypair for himself. If the patient has\n * already initialized a keypair this method does nothing and returns false. In this case the exchange data will be\n * automatically created the first time you share data with the patient, and your implementation of the crypto\n * strategies will be used to validate the public keys of the patient.\n *\n * Once exchange data is initialized you can use the {@link IccRecoveryXApi.createExchangeDataRecoveryInfo} to\n * generate a key that the patient will be able to use on his first login to immediately gain access to the exchange\n * data (through the {@link IccRecoveryXApi.recoverExchangeData} method).\n *\n * @param patientId the id of the newly invited patient.\n * @return true if exchange data was initialized, false if the patient already has a key pair and the exchange data\n * will be initialized in the standard way (automatically on the first time data is shared with the user).\n */\n async forceInitialiseExchangeDataToNewlyInvitedPatient(patientId: string): Promise {\n const patient = await super.getPatient(patientId)\n if (this.dataOwnerApi.getHexPublicKeysOf(patient).size) return false\n await this.crypto.exchangeData.getOrCreateEncryptionDataTo(patientId, true)\n return true\n }\n}\n","import { IccReceiptApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { MaintenanceTask } from '../icc-api/model/models'\nimport { EntityWithDelegationTypeName } from './utils'\n\nexport class IccReceiptXApi extends IccReceiptApi implements EncryptedEntityXApi {\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Receipt))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of receipt with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param r initialised data for the receipt. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * @return a new instance of receipt.\n */\n async newInstance(\n user: models.User,\n r: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n } = {}\n ): Promise {\n const receipt = new models.Receipt({\n ...(r ?? {}),\n _type: 'org.taktik.icure.entities.Receipt',\n id: r?.id ?? this.crypto.primitives.randomUuid(),\n created: r?.created ?? new Date().getTime(),\n modified: r?.modified ?? new Date().getTime(),\n responsible: r?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: r?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: r?.codes ?? [],\n tags: r?.tags ?? [],\n })\n\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n return new models.Receipt(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(receipt, EntityWithDelegationTypeName.Receipt, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n logReceipt(user: models.User, docId: string, refs: Array, blobType: string, blob: ArrayBuffer) {\n return this.newInstance(user, { documentId: docId, references: refs })\n .then((rcpt) => this.createReceipt(rcpt))\n .then((rcpt) => (blob.byteLength != 0 ? this.setReceiptAttachmentForBlobType(rcpt.id!, rcpt.rev!, blobType, blob) : Promise.resolve(rcpt)))\n }\n\n /**\n * Adds an attachment to a receipt, encrypting it on client side using the encryption keys of the provided receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async encryptAndSetReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise {\n const { encryptedData, updatedEntity } = await this.crypto.xapi.encryptDataOf(receipt, EntityWithDelegationTypeName.Receipt, attachment, (r) =>\n this.modifyReceipt(r)\n )\n return await this.setReceiptAttachmentForBlobType(receipt.id!, updatedEntity?.rev ?? receipt.rev!, blobType, encryptedData)\n }\n\n /**\n * Adds an unencrypted attachment to a receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async setClearReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise {\n return await this.setReceiptAttachmentForBlobType(receipt.id!, receipt.rev!, blobType, attachment)\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const retrieved = await this.getAndTryDecryptReceiptAttachment(receipt, attachmentId, (x) => validator(x))\n if (!retrieved.wasDecrypted) throw new Error(`No valid key found to decrypt data of receipt ${receipt.id}.`)\n return retrieved.data\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.xapi.tryDecryptDataOf(\n { entity: receipt, type: EntityWithDelegationTypeName.Receipt },\n await this.getReceiptAttachment(receipt.id!, attachmentId),\n (x) => validator(x)\n )\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given receipt\n */\n async hasWriteAccess(receipt: models.Receipt): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: receipt, type: EntityWithDelegationTypeName.Receipt })\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the receipt.\n * @param receipt the receipt to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n receipt: models.Receipt,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(receipt, { [delegateId]: options })\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param receipt the receipt to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n receipt: models.Receipt,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(receipt, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param receipt the receipt to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n receipt: models.Receipt,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(receipt, EntityWithDelegationTypeName.Receipt)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyReceipt(entityWithEncryptionKey) : receipt\n return this.crypto.xapi.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Receipt,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareReceipt(x)\n )\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Receipt\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Receipt })\n }\n\n getEncryptionKeysOf(entity: models.Receipt): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Receipt }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.Receipt, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Receipt }, delegates)\n }\n}\n","import { KeyPair, ShaVersion } from './crypto/RSA'\nimport { RecoveryDataEncryption, RecoveryDataUseFailureReason } from './crypto/RecoveryDataEncryption'\nimport { IccRecoveryDataApi } from '../icc-api/api/internal/IccRecoveryDataApi'\nimport { UserEncryptionKeysManager } from './crypto/UserEncryptionKeysManager'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { ua2hex } from './utils'\nimport { Content } from '../icc-api/model/Content'\nimport { RecoveryData } from '../icc-api/model/internal/RecoveryData'\nimport { ExchangeDataManager } from './crypto/ExchangeDataManager'\n\nexport { RecoveryDataUseFailureReason } from './crypto/RecoveryDataEncryption'\n\nexport class IccRecoveryXApi {\n constructor(\n private readonly baseRecoveryApi: IccRecoveryDataApi,\n private readonly recoveryDataEncryption: RecoveryDataEncryption,\n private readonly keyManager: UserEncryptionKeysManager,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly primitives: CryptoPrimitives,\n private readonly exchangeData: ExchangeDataManager\n ) {}\n\n /**\n * Create recovery data for the logged user and stores it encrypted on the iCure server. This allows the user that created\n * it to recover all the currently available keypairs at a later time by just providing the string returned by this method to the\n * {@link recoverKeyPairs} method.\n *\n * You can also provide an expiration time for the recovery data (through `options.lifetimeSeconds`). If you do so, the recovery dat\n * a will be deleted automatically after that amount seconds has passed. If you don't provide an expiration time, the recovery data\n * will be available until it is explicitly deleted.\n *\n * This could be used to:\n * - Provide some sort of one-use \"recovery codes\" to the user, which he can use to recover his keypair if he loses\n * his device. In this case you should not put any expiration time on the recovery data.\n * - Provide a way for the user to easily \"copy\" the key from one device to another. In this case you should put a\n * short expiration time on the recovery data (a few minutes), so that it will automatically be deleted if it is\n * not used after all.\n *\n * # Important\n *\n * A malicious user that can login as the creator of the recovery data or that can access directly the database\n * containing the recovery data will be able to get the private key of the data owner from the recovery key returned\n * by this method. Therefore, the resulting recovery key must be kept secret, just like a private key.\n *\n * @param options optional parameters:\n * - `includeParentsKeys` if true, the recovery data will also contain any available keypairs for parents data owners.\n * - `lifetimeSeconds` the amount of seconds the recovery data will be available. If not provided, the recovery data will be available until it is\n * explicitly deleted.\n * @return an hexadecimal string that is the `recoveryKey` which will allow the user to recover his keypair later or\n * from another device. This value must be kept secret from other users. You can use this value with {@link recoverKeyPairs}\n */\n async createRecoveryInfoForAvailableKeyPairs(options: { includeParentsKeys?: boolean; lifetimeSeconds?: number } = {}): Promise {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const allAvailableKeys = await this.keyManager.getCurrentUserHierarchyAvailableKeypairs()\n let dataOwnersToInclude: { dataOwnerId: string; keys: { pair: KeyPair; verified: boolean }[] }[]\n if (options.includeParentsKeys) {\n dataOwnersToInclude = [allAvailableKeys.self, ...allAvailableKeys.parents]\n } else {\n dataOwnersToInclude = [allAvailableKeys.self]\n }\n const keyPairsToSave: { [delegateId: string]: { pair: KeyPair; algorithm: ShaVersion }[] } = {}\n for (const { dataOwnerId, keys } of dataOwnersToInclude) {\n const dataOwner = await this.dataOwnerApi.getDataOwner(dataOwnerId)\n const sha1Keys = new Set(this.dataOwnerApi.getHexPublicKeysWithSha1Of(dataOwner.dataOwner))\n const sha256Keys = new Set(this.dataOwnerApi.getHexPublicKeysWithSha256Of(dataOwner.dataOwner))\n const pairs: { pair: KeyPair; algorithm: ShaVersion }[] = []\n for (const { pair, verified } of keys) {\n if (verified) {\n const pubKeyHex = ua2hex(await this.primitives.RSA.exportKey(pair.publicKey, 'spki'))\n if (sha256Keys.has(pubKeyHex)) {\n pairs.push({ pair, algorithm: ShaVersion.Sha256 })\n } else if (sha1Keys.has(pubKeyHex)) {\n pairs.push({ pair, algorithm: ShaVersion.Sha1 })\n } else {\n console.warn(`Found stored key ${pubKeyHex} for data owner ${dataOwnerId} which is not saved in the data owner. Ignoring.`)\n }\n }\n }\n keyPairsToSave[dataOwnerId] = pairs\n }\n return await this.recoveryDataEncryption.createAndSaveKeyPairsRecoveryDataFor(selfId, keyPairsToSave, options.lifetimeSeconds)\n }\n\n /**\n * Equivalent to {@link KeyPairRecoverer.recoverWithRecoveryKey}\n */\n recoverKeyPairs(\n recoveryKey: string,\n autoDelete: boolean\n ): Promise<{ success: { [dataOwnerId: string]: { [publicKeySpki: string]: KeyPair } } } | { failure: RecoveryDataUseFailureReason }> {\n return this.recoveryDataEncryption.getAndDecryptKeyPairsRecoveryData(recoveryKey, autoDelete)\n }\n\n /**\n * Create recovery data that allows the delegate {@link delegateId} recover the content of exchange data from the\n * current data owner to the delegate.\n *\n * This can be useful in the following situations:\n * - A user lost access to his old keypair and is asking for access back to his data. This is similar to the\n * give-access-back mechanism, except that instead of having to verify the public key of the delegate as in the\n * give-access-back, the delegator has to provide the recovery key to the delegate: the delegator has to properly\n * identify the delegate instead of validating that the public key belongs to the delegate.\n * - A patient is not yet registered in the system and therefore has no keypair, but the doctor wants to already share\n * some data with them. The doctor can create some placeholder exchange data, encrypted only with his own key\n * through the {@link IccPatientXApi.forceInitialiseExchangeDataToNewlyInvitedPatient} method, then create recovery data\n * for it and share the recovery key with the patient. The moment the patient logs in and creates his keypair he\n * will use the {@link recoverExchangeData} method to \"complete\" the placeholder exchange data.\n *\n * @param delegateId id of the delegate that needs access to his exchange data from the current data owner. This can't\n * be the id of the current data owner (you should instead recover the keypair).\n * @param options optional parameters:\n * - `lifetimeSeconds` the amount of seconds the recovery data will be available. If not provided, the recovery data will be available until it is\n * explicitly deleted.\n * @return an hexadecimal string that is the `recoveryKey` which will allow the delegate to gain access to the exchange data.\n * This value must be kept secret from users other than the current data owner and the delegate.\n * You can use this value with {@link recoverExchangeData}\n */\n async createExchangeDataRecoveryInfo(delegateId: string, options: { lifetimeSeconds?: number } = {}): Promise {\n const exchangeDataToDelegate = await this.exchangeData.base.getExchangeDataByDelegatorDelegatePair(\n await this.dataOwnerApi.getCurrentDataOwnerId(),\n delegateId\n )\n const decryptionKeys = this.keyManager.getDecryptionKeys()\n const decryptedInformation: {\n exchangeDataId: string\n rawExchangeKey: ArrayBuffer\n rawAccessControlSecret: ArrayBuffer\n rawSharedSignatureKey: ArrayBuffer\n }[] = []\n for (const exchangeData of exchangeDataToDelegate) {\n const decryptedData = await this.exchangeData.base.tryRawDecryptExchangeData(exchangeData, decryptionKeys)\n if (decryptedData !== undefined) {\n decryptedInformation.push({ ...decryptedData, exchangeDataId: exchangeData.id! })\n }\n }\n return this.recoveryDataEncryption.createAndSaveExchangeDataRecoveryData(delegateId, decryptedInformation, options.lifetimeSeconds)\n }\n\n /**\n * Recover the content of exchange data from the delegator that created the recovery data at the provided.\n * {@link recoveryKey} to the current delegate. This will enable the current user to access the exchange data with\n * any of his private keys available on the device from which this method was called.\n * The exchange data will be automatically deleted from the server after the process completes successfully.\n *\n * @param recoveryKey the result of a call to {@link createExchangeDataRecoveryInfo} by a delegator.\n * @return null on success or a failure reason if the recovery data could not be used to perform the operation.\n * @throws If the recovery data is valid but the process fails for other reasons.\n */\n async recoverExchangeData(recoveryKey: string): Promise {\n const selfEncryptionKeys = Object.fromEntries(this.keyManager.getSelfVerifiedKeys().map((k) => [k.fingerprint, k.pair.publicKey]))\n const recoveredExchangeData = await this.recoveryDataEncryption.getAndDecryptExchangeDataRecoveryData(recoveryKey)\n if ('failure' in recoveredExchangeData) {\n return recoveredExchangeData.failure\n }\n for (const exchangeDataInfo of recoveredExchangeData.success) {\n const retrievedData = await this.exchangeData.base.getExchangeDataById(exchangeDataInfo.exchangeDataId)\n if (!retrievedData) {\n console.warn(`Could not recover exchange data with id ${exchangeDataInfo.exchangeDataId} as it was not found. Ignoring`)\n } else {\n await this.exchangeData.base.updateExchangeDataWithRawDecryptedContent(\n retrievedData,\n selfEncryptionKeys,\n exchangeDataInfo.rawExchangeKey,\n exchangeDataInfo.rawAccessControlSecret,\n exchangeDataInfo.rawSharedSignatureKey\n )\n }\n }\n await this.baseRecoveryApi.deleteRecoveryData(await this.recoveryDataEncryption.recoveryKeyToId(recoveryKey)).catch((e) => {\n console.warn(`Could not delete recovery data with id ${recoveryKey} after successful recovery: ${e}. Ignoring.`)\n })\n await this.exchangeData.clearOrRepopulateCache()\n return null\n }\n\n /**\n * Deletes the recovery information associated to a certain recovery key. You can use this method with the recovery key for any kind of data,\n * regardless of how you obtained the recovery key (from the {@link createRecoveryInfoForAvailableKeyPairs} or from the\n * {@link createExchangeDataRecoveryInfo} methods).\n * If there is no data associated to the provided recovery key, this method will do nothing.\n * @param recoveryKey the recovery key associated to the recovery information to delete.\n */\n async deleteRecoveryInfo(recoveryKey: string): Promise {\n await this.baseRecoveryApi.deleteRecoveryData(await this.recoveryDataEncryption.recoveryKeyToId(recoveryKey))\n }\n\n /**\n * Deletes the recovery information associated to a certain data owner, regardless of type.\n * @param dataOwnerId the data owner for which to delete the recovery data.\n * @return the number of deleted recovery information.\n */\n async deleteAllRecoveryInfoFor(dataOwnerId: string): Promise {\n return this.getCountFromDeleteAllRes(await this.baseRecoveryApi.deleteAllRecoveryDataForRecipient(dataOwnerId))\n }\n\n /**\n * Deletes all key pair recovery information for a certain data owner.\n * @param dataOwnerId the data owner for which to delete the key pair recovery information.\n * @return the number of deleted key pair recovery information.\n */\n async deleteAllKeyPairRecoveryInfoFor(dataOwnerId: string): Promise {\n return this.getCountFromDeleteAllRes(\n await this.baseRecoveryApi.deleteAllRecoveryDataOfTypeForRecipient(RecoveryData.Type.KEYPAIR_RECOVERY, dataOwnerId)\n )\n }\n\n /**\n * Deletes all exchange data recovery information for a certain data owner.\n * @param dataOwnerId the data owner for which to delete the exchange data recovery information.\n * @return the number of deleted exchange data recovery information.\n */\n async deleteAllExchangeDataRecoveryInfoFor(dataOwnerId: string): Promise {\n return this.getCountFromDeleteAllRes(\n await this.baseRecoveryApi.deleteAllRecoveryDataOfTypeForRecipient(RecoveryData.Type.EXCHANGE_KEY_RECOVERY, dataOwnerId)\n )\n }\n\n private async getCountFromDeleteAllRes(deleteAllRes: Content): Promise {\n if (deleteAllRes.numberValue !== undefined) return deleteAllRes.numberValue\n throw new Error(`Unexpected result from delete method: ${JSON.stringify(deleteAllRes)}`)\n }\n}\n","import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport { IccTimeTableApi } from '../icc-api'\nimport { User } from '../icc-api/model/User'\nimport { TimeTable } from '../icc-api/model/TimeTable'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { MaintenanceTask } from '../icc-api/model/models'\nimport { EntityWithDelegationTypeName } from './utils'\n\nexport class IccTimeTableXApi extends IccTimeTableApi implements EncryptedEntityXApi {\n i18n: any = i18n\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.TimeTable))\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of timetable with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param tt initialised data for the timetable. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * @return a new instance of timetable.\n */\n async newInstance(\n user: User,\n tt: TimeTable,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n const timeTable: TimeTable = {\n ...(tt ?? {}),\n id: tt?.id ?? this.crypto.primitives.randomUuid(),\n created: tt?.created ?? new Date().getTime(),\n modified: tt?.modified ?? new Date().getTime(),\n responsible: tt?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: tt?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: tt?.codes ?? [],\n tags: tt?.tags ?? [],\n }\n\n const extraDelegations = {\n ...Object.fromEntries(\n [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.administrativeData ?? [])].map((d) => [d, AccessLevelEnum.WRITE])\n ),\n ...(options?.additionalDelegates ?? {}),\n }\n\n return new models.TimeTable(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(timeTable, EntityWithDelegationTypeName.TimeTable, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given time table\n */\n async hasWriteAccess(timeTable: models.TimeTable): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: timeTable, type: EntityWithDelegationTypeName.TimeTable })\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the time table.\n * @param timeTable the time table to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n timeTable: models.TimeTable,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(timeTable, { [delegateId]: options })\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param timeTable the time table to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n timeTable: models.TimeTable,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(timeTable, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param timeTable the time table to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n timeTable: models.TimeTable,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(timeTable, EntityWithDelegationTypeName.TimeTable)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyTimeTable(entityWithEncryptionKey) : timeTable\n return this.crypto.xapi.simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.TimeTable,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: ShareMetadataBehaviour.NEVER,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareTimeTable(x)\n )\n }\n\n getDataOwnersWithAccessTo(\n entity: models.TimeTable\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.TimeTable })\n }\n\n getEncryptionKeysOf(entity: models.TimeTable): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.TimeTable }, undefined)\n }\n\n createDelegationDeAnonymizationMetadata(entity: models.TimeTable, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo(\n { entity, type: EntityWithDelegationTypeName.TimeTable },\n delegates\n )\n }\n}\n","import { IccAuthApi, IccTopicApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { ListOfIds, MaintenanceTask, Topic, TopicRole } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { SecureDelegation } from '../icc-api/model/SecureDelegation'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { ShareResult } from './utils/ShareResult'\nimport { EntityShareRequest } from '../icc-api/model/requests/EntityShareRequest'\nimport { XHR } from '../icc-api/api/XHR'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\nimport { FilterChainTopic } from '../icc-api/model/FilterChainTopic'\nimport { PaginatedListTopic } from '../icc-api/model/PaginatedListTopic'\nimport AccessLevelEnum = SecureDelegation.AccessLevelEnum\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\nimport { EncryptedFieldsManifest, EntityWithDelegationTypeName, parseEncryptedFields, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { AbstractFilter } from './filters/filters'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccTopicXApi extends IccTopicApi implements EncryptedEntityXApi {\n private readonly encryptedFields: EncryptedFieldsManifest\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private readonly crypto: IccCryptoXApi,\n private readonly dataOwnerApi: IccDataOwnerXApi,\n private readonly authApi: IccAuthApi,\n private readonly autofillAuthor: boolean,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n encryptedKeys: Array = ['description'],\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n\n this.encryptedFields = parseEncryptedFields(encryptedKeys, 'Topic.')\n }\n\n get headers(): Promise> {\n return super.headers.then((h) => this.crypto.accessControlKeysHeaders.addAccessControlKeysHeaders(h, EntityWithDelegationTypeName.Topic))\n }\n\n /**\n * Creates a new instance of topic with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this topic refers to.\n * @param c initialised data for the topic. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the topic. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of topic.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient | null,\n c: Topic = {}, // TODO: Why this isn't Topic?\n options: {\n additionalDelegates?: { [dataOwnerId: string]: AccessLevelEnum }\n preferredSfk?: string\n } = {}\n ) {\n if (!patient && options.preferredSfk) throw new Error('preferredSfk can only be specified if patient is specified.')\n\n const topic = {\n ...(c ?? {}),\n id: c?.id ?? this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Topic',\n created: c?.created ?? new Date().getTime(),\n modified: c?.modified ?? new Date().getTime(),\n responsible: c?.responsible ?? (this.autofillAuthor ? this.dataOwnerApi.getDataOwnerIdOf(user) : undefined),\n author: c?.author ?? (this.autofillAuthor ? user.id : undefined),\n codes: c?.codes ?? [],\n tags: c?.tags ?? [],\n }\n\n const extraDelegations = {\n ...Object.fromEntries((user.autoDelegations?.all ?? []).map((d) => [d, AccessLevelEnum.WRITE])),\n ...(options?.additionalDelegates ?? {}),\n }\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = patient\n ? options.preferredSfk ??\n (await this.crypto.confidential.getAnySecretIdSharedWithParents({ entity: patient, type: EntityWithDelegationTypeName.Patient }))\n : undefined\n\n if (patient && !sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n\n return new models.Topic(\n await this.crypto.xapi\n .entityWithInitialisedEncryptedMetadata(topic, EntityWithDelegationTypeName.Topic, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n async decrypt(topics: Array) {\n return (await this.crypto.xapi.tryDecryptEntities(topics, EntityWithDelegationTypeName.Topic, (x) => new models.Topic(x))).map(\n ({ entity }) => entity\n )\n }\n\n async encrypt(topics: Array): Promise> {\n return this.crypto.xapi.tryEncryptEntities(\n topics,\n EntityWithDelegationTypeName.Topic,\n this.encryptedFields,\n true,\n false,\n (x) => new models.Topic(x)\n )\n }\n\n /**\n * Create and share a new topic with other participants.\n * @param body the topic to create.\n * @return the created topic.\n */\n override async createTopic(body: Topic): Promise {\n const encryptedTopics = await this.encrypt([body])\n const createdTopic = await super.createTopic(encryptedTopics[0])\n const decryptedTopics = await this.decrypt([createdTopic])\n return decryptedTopics[0]\n }\n\n /**\n * @param topic a topic\n * @return the id of the patient that the topic refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(topic: models.Topic): Promise {\n return this.crypto.xapi.owningEntityIdsOf({ entity: topic, type: EntityWithDelegationTypeName.Topic }, undefined)\n }\n\n /**\n * @return if the logged data owner has write access to the content of the given topic\n */\n async hasWriteAccess(topic: models.Topic): Promise {\n return this.crypto.xapi.hasWriteAccess({ entity: topic, type: EntityWithDelegationTypeName.Topic })\n }\n\n /**\n * Share an existing topic with other data owners, allowing them to access the non-encrypted data of the topic and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the topic.\n * @param topic the topic to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this topic refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWith(\n delegateId: string,\n topic: models.Topic,\n options: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(topic, { [delegateId]: options })\n }\n\n /**\n * Share an existing topic with other data owners, allowing them to access the non-encrypted data of the topic and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param topic the topic to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * topic does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this topic refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return the updated entity\n */\n async shareWithMany(\n topic: models.Topic,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n return (await this.tryShareWithMany(topic, delegates)).updatedEntityOrThrow\n }\n\n /**\n * Share an existing topic with other data owners, allowing them to access the non-encrypted data of the topic and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param topic the topic to share.\n * @param delegates associates the id of data owners which will be granted access to the entity, to the following sharing options:\n * - shareSecretIds: specifies which secret ids of the entity should be shared. If not provided all secret ids available to the current user will be shared\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * topic does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this topic refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - requestedPermissions: the requested permissions for the delegate, defaults to {@link RequestedPermissionEnum.MAX_WRITE}.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async tryShareWithMany(\n topic: models.Topic,\n delegates: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n requestedPermissions?: RequestedPermissionEnum\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise> {\n // All entities should have an encryption key.\n const entityWithEncryptionKey = await this.crypto.xapi.ensureEncryptionKeysInitialised(topic, EntityWithDelegationTypeName.Topic)\n const updatedEntity = entityWithEncryptionKey ? await this.modifyTopic(entityWithEncryptionKey) : topic\n return this.crypto.xapi\n .simpleShareOrUpdateEncryptedEntityMetadata(\n {\n entity: updatedEntity,\n type: EntityWithDelegationTypeName.Topic,\n },\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n requestedPermissions: options.requestedPermissions,\n shareEncryptionKeys: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n shareSecretIds: options.shareSecretIds,\n },\n ])\n ),\n (x) => this.bulkShareTopics(x)\n )\n .then((r) => r.mapSuccessAsync((e) => this.decrypt([e]).then((es) => es[0])))\n }\n\n getDataOwnersWithAccessTo(\n entity: models.Topic\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: AccessLevelEnum }; hasUnknownAnonymousDataOwners: boolean }> {\n return this.crypto.delegationsDeAnonymization.getDataOwnersWithAccessTo({ entity, type: EntityWithDelegationTypeName.Topic })\n }\n\n getEncryptionKeysOf(entity: models.Topic): Promise {\n return this.crypto.xapi.encryptionKeysOf({ entity, type: EntityWithDelegationTypeName.Topic }, undefined)\n }\n\n /**\n * Filter and decrypt topics by the given filter.\n * @param body the filter to apply.\n * @param startDocumentId the document id to start from (inclusive).\n * @param limit the maximum number of topics to return in the page.\n * @return a paginated list of topics.\n */\n override async filterTopicsBy(body: FilterChainTopic, startDocumentId?: string, limit?: number): Promise {\n const page = await super.filterTopicsBy(body, startDocumentId, limit)\n const decryptedTopics = await this.decrypt(page.rows ?? [])\n return {\n ...page,\n rows: decryptedTopics,\n }\n }\n\n /**\n * Obtain the topic with the given id and decrypt it.\n * @param id the id of the topic to retrieve.\n * @return the decrypted topic.\n */\n override async getTopic(id: string): Promise {\n const topic = await super.getTopic(id)\n const decryptedTopics = await this.decrypt([topic])\n return decryptedTopics[0]\n }\n\n /**\n * Obtain the topics with the given ids and decrypt them.\n * @param body the ids of the topics to retrieve.\n * @return the decrypted topics.\n */\n override async getTopics(body: ListOfIds): Promise> {\n const topics = await super.getTopics(body)\n return await this.decrypt(topics)\n }\n\n /**\n * Update and encrypt the given topic.\n * @param body the topic to update.\n * @return the updated decrypted topic.\n */\n override async modifyTopic(body: Topic): Promise {\n const encryptedTopics = await this.encrypt([body])\n const modifiedTopic = await super.modifyTopic(encryptedTopics[0])\n const decryptedTopics = await this.decrypt([modifiedTopic])\n return decryptedTopics[0]\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice\n * @param body data owner id of the data owner to which the participant should be added and the topic role of the participant.\n * @param topicId Id of the topic to which the participant should be added.\n */\n override async addParticipant(body: { dataOwnerId: string; topicRole: TopicRole }, topicId: string): Promise {\n throw new Error('Cannot add participant to topic without sharing it first. You should use addParticipantWithTopic instead.')\n }\n\n /**\n * This method is similar to {@link addParticipant} but it also shares the topic with the data owner before adding the participant.\n * @param body data owner id of the data owner to which the participant should be added and the topic role of the participant.\n * @param topic the topic to share and to which the participant should be added.\n * @return the updated topic.\n */\n async addParticipantWithTopic(body: { dataOwnerId: string; topicRole: TopicRole }, topic: Topic): Promise {\n const updatedTopic = await this.shareWith(body.dataOwnerId, topic, {\n requestedPermissions: RequestedPermissionEnum.FULL_WRITE,\n })\n\n return (await this.decrypt([await super.addParticipant(body, updatedTopic.id!)]))[0]\n }\n\n /**\n * Remove the participant with the given data owner id from the topic with the given id.\n * @param body data owner id of the participant to remove.\n * @param topicId Id of the topic from which the participant should be removed.\n * @return the updated decrypted topic.\n */\n async removeParticipant(body: { dataOwnerId: string }, topicId: string): Promise {\n const updatedTopic = await super.removeParticipant(body, topicId)\n return (await this.decrypt([updatedTopic]))[0]\n }\n\n async subscribeToTopicEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (message: Topic) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n return await subscribeToEntityEvents(\n this.host,\n this.authApi,\n EntityWithDelegationTypeName.Topic,\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.decrypt([encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n createDelegationDeAnonymizationMetadata(entity: Topic, delegates: string[]): Promise {\n return this.crypto.delegationsDeAnonymization.createOrUpdateDeAnonymizationInfo({ entity, type: EntityWithDelegationTypeName.Topic }, delegates)\n }\n}\n","import { IccUserApi } from '../icc-api/api/IccUserApi'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { AbstractFilter } from './filters/filters'\nimport { User } from '../icc-api/model/User'\nimport { Connection, ConnectionImpl } from '../icc-api/model/Connection'\nimport { a2b, subscribeToEntityEvents, SubscriptionOptions } from './utils'\nimport { IccAuthApi } from '../icc-api'\nimport { objectEquals } from './utils/collection-utils'\nimport { XHR } from '../icc-api/api/XHR'\nimport XHRError = XHR.XHRError\n\nexport class IccUserXApi extends IccUserApi {\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n private cachedCurrentUser: Promise | undefined\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n private readonly authApi: IccAuthApi,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.fetchImpl = fetchImpl\n }\n\n getCurrentUser(bypassCache: boolean = false): Promise {\n if (bypassCache) return (this.cachedCurrentUser = super.getCurrentUser())\n else return this.cachedCurrentUser ?? (this.cachedCurrentUser = super.getCurrentUser())\n }\n\n async modifyUser(body?: User): Promise {\n //If we do not load the current user, we cannot know if the modification is on the current user\n await this.getCurrentUser()\n if (this.cachedCurrentUser && (await this.cachedCurrentUser).id === body?.id) {\n try {\n const modifiedUser = await super.modifyUser(body).catch(async (e) => {\n //It is\n if (e.statusCode === 409) {\n let userInDb = await super.getCurrentUser()\n if (objectEquals((await this.cachedCurrentUser)!, userInDb, ['authenticationTokens', 'rev'])) {\n return await super.modifyUser({ ...body, rev: userInDb.rev, authenticationTokens: userInDb.authenticationTokens })\n }\n }\n throw e\n })\n this.cachedCurrentUser = Promise.resolve(modifiedUser)\n return modifiedUser\n } catch (e) {\n this.cachedCurrentUser = undefined\n throw e\n }\n } else return super.modifyUser(body)\n }\n\n async subscribeToUserEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: AbstractFilter | undefined,\n eventFired: (user: User) => Promise,\n options: SubscriptionOptions = {}\n ): Promise {\n const rs = await subscribeToEntityEvents(this.host, this.authApi, 'User', eventTypes, filter, eventFired, options)\n return new ConnectionImpl(rs)\n }\n\n async checkPassword(password: string): Promise {\n const userInfo = await this.getGroupAndUserIdFromToken()\n if (!!userInfo) {\n console.log(this.authApi)\n const loginUserId = !!userInfo.groupId ? `${userInfo.groupId}/${userInfo.userId}` : userInfo.userId\n try {\n return (await this.authApi.login({ username: loginUserId, password: password })).successful ?? false\n } catch (e) {\n return e instanceof XHRError && e.statusCode == 417\n }\n }\n throw Error('Could not get current group and user from jwt')\n }\n\n private async getGroupAndUserIdFromToken(): Promise<{ groupId: string | undefined; userId: string } | undefined> {\n const token = (await this.authenticationProvider.getIcureTokens())?.token\n if (!token) return undefined\n const splitToken = token.split('.')\n if (splitToken.length != 3) return undefined\n try {\n const tokenString = a2b(splitToken[1])\n const parsedClaims = JSON.parse(tokenString)\n if (!!parsedClaims['u']) {\n return { groupId: parsedClaims['g'], userId: parsedClaims['u'] }\n } else return undefined\n } catch {\n return undefined\n }\n }\n}\n","import {\n IccAgendaApi,\n IccAnonymousAccessApi,\n IccApplicationsettingsApi,\n IccAuthApi,\n IccBeefactApi,\n IccBeresultexportApi,\n IccBeresultimportApi,\n IccBesamv2Api,\n IccCalendarItemTypeApi,\n IccClassificationTemplateApi,\n IccEntityrefApi,\n IccEntitytemplateApi,\n IccFrontendmigrationApi,\n IccGroupApi,\n IccIcureApi,\n IccInsuranceApi,\n IccKeywordApi,\n IccMedexApi,\n IccMedicallocationApi,\n IccPatientApi,\n IccPermissionApi,\n IccPlaceApi,\n IccPubsubApi,\n IccReplicationApi,\n IccTarificationApi,\n IccTmpApi,\n IccUserApi,\n OAuthThirdParty,\n} from '../icc-api'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { IccPatientXApi } from './icc-patient-x-api'\nimport { IccMessageXApi } from './icc-message-x-api'\nimport { IccReceiptXApi } from './icc-receipt-x-api'\nimport { IccAccesslogXApi } from './icc-accesslog-x-api'\nimport { IccTimeTableXApi } from './icc-time-table-x-api'\nimport { IccCodeXApi } from './icc-code-x-api'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { LocalStorageImpl } from './storage/LocalStorageImpl'\nimport { KeyStorageImpl } from './storage/KeyStorageImpl'\nimport {\n AuthenticationProvider,\n EnsembleAuthenticationProvider,\n JwtAuthenticationProvider,\n NoAuthenticationProvider,\n} from './auth/AuthenticationProvider'\nimport { CryptoPrimitives, WebCryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { UserEncryptionKeysManager } from './crypto/UserEncryptionKeysManager'\nimport { IcureStorageFacade } from './storage/IcureStorageFacade'\nimport { DefaultStorageEntryKeysFactory } from './storage/DefaultStorageEntryKeysFactory'\nimport { KeyRecovery } from './crypto/KeyRecovery'\nimport { BaseExchangeKeysManager } from './crypto/BaseExchangeKeysManager'\nimport { StorageEntryKeysFactory } from './storage/StorageEntryKeysFactory'\nimport { CryptoStrategies } from './crypto/CryptoStrategies'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { TransferKeysManager } from './crypto/TransferKeysManager'\nimport { IccIcureMaintenanceXApi } from './icc-icure-maintenance-x-api'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\nimport { ensureDelegationForSelf } from './crypto/utils'\nimport { initialiseExchangeDataManagerForCurrentDataOwner } from './crypto/ExchangeDataManager'\nimport { BaseExchangeDataManager } from './crypto/BaseExchangeDataManager'\nimport { IccExchangeDataApi } from '../icc-api/api/internal/IccExchangeDataApi'\nimport { AccessControlSecretUtils } from './crypto/AccessControlSecretUtils'\nimport { SecureDelegationsEncryption } from './crypto/SecureDelegationsEncryption'\nimport { ExtendedApisUtilsImpl } from './crypto/ExtendedApisUtilsImpl'\nimport { SecureDelegationsManager } from './crypto/SecureDelegationsManager'\nimport { AccessControlKeysHeadersProvider } from './crypto/AccessControlKeysHeadersProvider'\nimport { IccExchangeDataMapApi } from '../icc-api/api/internal/IccExchangeDataMapApi'\nimport { ExchangeDataMapManager } from './crypto/ExchangeDataMapManager'\nimport { IccDeviceXApi } from './icc-device-x-api'\nimport { IccBekmehrXApi } from './icc-bekmehr-x-api'\nimport { IccDoctemplateXApi } from './icc-doctemplate-x-api'\nimport { UserGroup } from '../icc-api/model/UserGroup'\nimport { IccTopicXApi } from './icc-topic-x-api'\nimport { IccRoleApi } from '../icc-api/api/IccRoleApi'\nimport { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum'\nimport { DelegationsDeAnonymization } from './crypto/DelegationsDeAnonymization'\nimport { JwtBridgedAuthService } from './auth/JwtBridgedAuthService'\nimport { AuthSecretProvider, SmartAuthProvider } from './auth/SmartAuthProvider'\nimport { KeyPairRecoverer } from './crypto/KeyPairRecoverer'\nimport { IccRecoveryDataApi } from '../icc-api/api/internal/IccRecoveryDataApi'\nimport { RecoveryDataEncryption } from './crypto/RecoveryDataEncryption'\nimport { IccRecoveryXApi } from './icc-recovery-x-api'\nimport { getGroupOfJwt } from './auth/JwtUtils'\nimport { SecurityMetadataDecryptor } from './crypto/SecurityMetadataDecryptor'\n\nexport * from './icc-accesslog-x-api'\nexport * from './icc-bekmehr-x-api'\nexport * from './icc-calendar-item-x-api'\nexport * from './icc-classification-x-api'\nexport * from './icc-code-x-api'\nexport * from './icc-contact-x-api'\nexport * from './icc-crypto-x-api'\nexport * from './icc-doctemplate-x-api'\nexport * from './icc-document-x-api'\nexport * from './icc-form-x-api'\nexport * from './icc-hcparty-x-api'\nexport * from './icc-helement-x-api'\nexport * from './icc-invoice-x-api'\nexport * from './icc-message-x-api'\nexport * from './icc-patient-x-api'\nexport * from './icc-user-x-api'\nexport * from './icc-time-table-x-api'\nexport * from './icc-receipt-x-api'\nexport * from './icc-data-owner-x-api'\nexport * from './icc-icure-maintenance-x-api'\nexport * from './icc-maintenance-task-x-api'\nexport * from './icc-recovery-x-api'\nexport * from './utils'\n\nexport * from './crypto/RSA'\nexport * from './crypto/CryptoPrimitives'\nexport * from './crypto/ShareMetadataBehaviour'\nexport * from './auth/AuthenticationProvider'\n\nexport { AuthSecretDetails, AuthSecretType, AuthSecretProvider } from './auth/SmartAuthProvider'\nexport { KeyStorageFacade } from './storage/KeyStorageFacade'\nexport { LocalStorageImpl } from './storage/LocalStorageImpl'\nexport { StorageFacade } from './storage/StorageFacade'\nexport { KeyStorageImpl } from './storage/KeyStorageImpl'\nexport { CryptoStrategies } from './crypto/CryptoStrategies'\nexport { NativeCryptoPrimitivesBridge } from './crypto/NativeCryptoPrimitivesBridge'\nexport { hexPublicKeysWithSha1Of, hexPublicKeysWithSha256Of, getShaVersionForKey } from './crypto/utils'\n\nexport interface BasicApis {\n readonly authApi: IccAuthApi\n readonly codeApi: IccCodeXApi\n readonly userApi: IccUserXApi\n readonly permissionApi: IccPermissionApi\n readonly insuranceApi: IccInsuranceApi\n readonly entityReferenceApi: IccEntityrefApi\n readonly agendaApi: IccAgendaApi\n readonly groupApi: IccGroupApi\n readonly healthcarePartyApi: IccHcpartyXApi\n readonly deviceApi: IccDeviceXApi\n readonly patientApi: IccPatientApi\n readonly roleApi: IccRoleApi\n}\nexport interface Apis extends BasicApis {\n readonly calendarItemTypeApi: IccCalendarItemTypeApi\n readonly medicalLocationApi: IccMedicallocationApi\n readonly cryptoApi: IccCryptoXApi\n readonly accessLogApi: IccAccesslogXApi\n readonly contactApi: IccContactXApi\n readonly formApi: IccFormXApi\n readonly invoiceApi: IccInvoiceXApi\n readonly documentApi: IccDocumentXApi\n readonly healthcareElementApi: IccHelementXApi\n readonly classificationApi: IccClassificationXApi\n readonly calendarItemApi: IccCalendarItemXApi\n readonly receiptApi: IccReceiptXApi\n readonly timetableApi: IccTimeTableXApi\n readonly patientApi: IccPatientXApi\n readonly messageApi: IccMessageXApi\n readonly maintenanceTaskApi: IccMaintenanceTaskXApi\n readonly dataOwnerApi: IccDataOwnerXApi\n readonly icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n readonly anonymousAccessApi: IccAnonymousAccessApi\n readonly applicationSettingsApi: IccApplicationsettingsApi\n readonly bekmehrApi: IccBekmehrXApi\n readonly beefactApi: IccBeefactApi\n readonly beresultexportApi: IccBeresultexportApi\n readonly beresultimportApi: IccBeresultimportApi\n readonly besamv2Api: IccBesamv2Api\n readonly classificationTemplateApi: IccClassificationTemplateApi\n readonly doctemplateApi: IccDoctemplateXApi\n readonly entitytemplateApi: IccEntitytemplateApi\n readonly frontendmigrationApi: IccFrontendmigrationApi\n readonly icureApi: IccIcureApi\n readonly keywordApi: IccKeywordApi\n readonly medexApi: IccMedexApi\n readonly placeApi: IccPlaceApi\n readonly pubsubApi: IccPubsubApi\n readonly replicationApi: IccReplicationApi\n readonly tarificationApi: IccTarificationApi\n readonly tmpApi: IccTmpApi\n readonly topicApi: IccTopicXApi\n readonly recoveryApi: IccRecoveryXApi\n}\n\n/**\n * Allows to customise the behaviour of the iCure API by providing various optional parameters.\n */\nexport interface IcureApiOptions {\n /**\n * Specifies how iCure can store string values (e.g. json). In production this should be persistent storage.\n * @default the browser's localStorage.\n */\n readonly storage?: StorageFacade\n /**\n * Specifies how iCure can store cryptographic keys. Preferably this should be some ad-hoc storage key storage.\n * @default stores the json of the jwk representation of the key in {@link storage}.\n */\n readonly keyStorage?: KeyStorageFacade\n /**\n * Specifies where iCure should store his data within the {@link storage} and {@link keyStorage}.\n * @default {@link DefaultStorageEntryKeysFactory}\n */\n readonly entryKeysFactory?: StorageEntryKeysFactory\n /**\n * Specifies if iCure should automatically create maintenance tasks for requesting access back when a new key is generated at initialisation time.\n * Note that the maintenance task will be created only towards HCP data owners: if you want to create a maintenance task also to other types of data\n * owners you should disable this and call {@link IccIcureMaintenanceXApi.createMaintenanceTasksForNewKeypair} yourself.\n * @default true\n */\n readonly createMaintenanceTasksOnNewKey?: boolean\n /**\n * Additional headers to use on each request made by the iCure api.\n * @default no additional headers\n */\n readonly headers?: { [headerName: string]: string }\n /**\n * Specifies which fields should be encrypted for each kind of encryptable entity. You should make sure that every application in your environment\n * specifies the same values for this configuration.\n * @default see documentation for {@link EncryptedFieldsConfig}\n */\n readonly encryptedFieldsConfig?: EncryptedFieldsConfig\n /**\n * Each user may exist in multiple groups, but an instance of {@link IcureApi} is specialised for a single group. This function allows you to decide\n * the group to use for a given user.\n * This functions will be called only if a user exists in at least 2 groups, and takes in input:\n * - the information on the groups the user can access (in no specific order)\n * - if the authentication method uses JWT also the current group id (undefined otherwise)\n * The function must return the id of one of the available groups.\n * @default takes the first group provided. The group chosen by this method may vary between different instantiations of the {@link IcureApi} even\n * if for the same user and if the groups available for the user do not change.\n */\n readonly groupSelector?: (availableGroupsInfo: UserGroup[], currentGroupId?: string) => Promise\n /**\n * Temporary value to support EHR Lite and MedTech api implementations.\n *\n * Currently, all hcps are able to access encrypted data shared with any of their parents, and on initialisation the api will verify that there is a\n * key pair available for the current user and for every parent of the user. If this option is set to true, the api will not load keys for the\n * parent users.\n *\n * This \"implicit data-sharing scheme\" (each parent HCP is essentially sharing data with all its children HCPs), however, may not be ideal for all\n * use cases, and it will be changed in future to be configurable in order to make it more general.\n * @default false, equivalent to previous behaviour.\n */\n readonly disableParentKeysInitialisation?: boolean\n /**\n * If true the Api will not use some endpoints that are available only in the latest versions of kraken lite.\n * Set it to true only for connecting to kraken-lite versions < 0.1.187\n */\n readonly useLiteCompatibilityMode?: boolean\n}\n\nnamespace IcureApiOptions {\n export namespace Defaults {\n export const entryKeysFactory = new DefaultStorageEntryKeysFactory()\n export const createMaintenanceTasksOnNewKey = true\n export const headers = {}\n }\n\n export class WithDefaults implements IcureApiOptions {\n readonly entryKeysFactory: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey: boolean\n readonly storage: StorageFacade\n readonly keyStorage: KeyStorageFacade\n readonly headers: { [headerName: string]: string }\n readonly encryptedFieldsConfig: EncryptedFieldsConfig\n readonly groupSelector: (availableGroupsInfo: UserGroup[]) => Promise\n readonly disableParentKeysInitialisation: boolean\n\n constructor(custom: IcureApiOptions) {\n this.entryKeysFactory = custom.entryKeysFactory ?? Defaults.entryKeysFactory\n this.createMaintenanceTasksOnNewKey = custom.createMaintenanceTasksOnNewKey ?? Defaults.createMaintenanceTasksOnNewKey\n this.storage = custom.storage ?? new LocalStorageImpl()\n this.keyStorage = custom.keyStorage ?? new KeyStorageImpl(this.storage)\n this.headers = custom.headers ?? Defaults.headers\n this.encryptedFieldsConfig = custom.encryptedFieldsConfig ?? {}\n this.groupSelector = custom.groupSelector ?? ((groups) => Promise.resolve(groups[0].groupId!))\n this.disableParentKeysInitialisation = custom.disableParentKeysInitialisation ?? false\n }\n }\n}\n\n/**\n * Specifies which fields should be encrypted for each kind of encryptable entity.\n *\n * Note that any value you specify here overrides the default values. For example if you specify `['medicalLocationId']` for `healthElement` the\n * fields `['descr', 'note']` which are usually encrypted by default will no longer be encrypted. If you want to add fields to the default values\n * you can use {@link EncryptedFieldsConfig.Defaults}, for example `[...EncryptedFieldsConfig.Defaults.healthElement, 'medicalLocationId'].\n *\n * # Encrypted fields syntax\n *\n * ## Grammar\n *\n * The grammar for each encrypted field is the following:\n * ```\n * fieldName :=\n * regex([a-zA-Z_][a-zA-Z0-9_]+)\n * encryptedField :=\n * fieldName\n * | fieldName + (\".\" | \".*.\" | \"[].\") + encryptedField\n * ```\n *\n * This grammar allows you to specify the fields to encrypt for the object and recursively for nested objects.\n * - A string containing only a single `fieldName` will encrypt the field with the given name.\n * - A string starting with `fieldName.` allows to specify the encrypted fields of a nested object. The encrypted values of the\n * fields in the nested object will be saved in the nested object.\n * - A string starting with `fieldName.*.` treats `fieldName` as a map/dictionary data structure and allows to specify the encrypted fields of the\n * values of the map. Note that the values of the map must be objects as well. The encrypted content of each map value is stored in that value.\n * - A string starting with `fieldName[].` treats `fieldName` as an array and allows to specify the encrypted fields of the values of the array.\n * Note that the values of the array must be objects as well. The encrypted content of each array element is stored in that element.\n *\n * ## Example\n *\n * Consider the following object and encryption keys:\n * ```javascript\n * const obj = {\n * a: { x: 0, y: 1 },\n * b: \"hello\",\n * c: [ { public: \"a\", secret: \"b\" }, { public: \"c\", secret: \"d\" } ],\n * d: \"ok\",\n * e: {\n * info: \"something\",\n * private: \"secret\",\n * dataMap: {\n * \"en\": {\n * a: 1,\n * b: 2\n * },\n * \"fr\": {\n * a: 3,\n * b: 4\n * }\n * }\n * }\n * }\n * const encryptedFields = [\n * \"a\",\n * \"c[].secret\",\n * \"d\",\n * \"e.private\",\n * \"e.datamap.*.a\"\n * ]\n * ```\n * If you use them with the crypt method you will get the following result:\n * ```json\n * {\n * b: \"hello\",\n * c: [\n * { public: \"a\", encryptedSelf: 'encrypted+encoded { secret: \"b\" }' },\n * { public: \"c\", encryptedSelf: 'encrypted+encoded { secret: \"d\" }' }\n * ],\n * e: {\n * info: \"something\",\n * dataMap: {\n * \"en\": { b: 2, encryptedSelf: 'encrypted+encoded { a: 1 }' },\n * \"fr\": { b: 4, encryptedSelf: 'encrypted+encoded { a: 3 }' }\n * },\n * encryptedSelf: 'encrypted+encoded { private: \"secret\" }'\n * },\n * encryptedSelf: 'encrypted+encoded { a: { x: 0, y: 1 }, d: \"ok\" }'\n * }\n * ```\n *\n * ## Shortened representation\n *\n * You can also group encrypted fields having the same prefix by concatenating to the prefix the JSON representation of an array of all the postfixes.\n * For example the following encrypted fields:\n * ```javascript\n * const encryptedFields = [\"a.b.c.d.e.f1\", \"a.b.c.d.e.f2\", \"a.b.c.d.e.f3\", \"a.b.c.d.e.f4\"]\n * ```\n * can be shortened to\n * ```javascript\n * const encryptedFields = ['a.b.c.d.e.[\"f1\",\"f2\",\"f3\",\"f4\"]'] // Note the use of single quotes to avoid escaping the double quotes\n * ```\n * If you use the shortened representation you may need to escape nested json representations. In that case the use of `JSON.stringify` is\n * recommended.\n */\nexport interface EncryptedFieldsConfig {\n /**\n * Fields to encrypt for entities of type {@link AccessLog}\n * @default ['detail', 'objectId']\n */\n readonly accessLog?: string[]\n /**\n * Fields to encrypt for entities of type {@link CalendarItem}\n * @default ['details', 'title', 'patientId']\n */\n readonly calendarItem?: string[]\n /**\n * Fields to encrypt for entities of type {@link Contact}, excluding `services`. You can specify which fields of `services` should be encrypted\n * using {@link service}.\n * @default ['descr'] // encryption of `services` is managed through {@link service}\n */\n readonly contact?: string[]\n /**\n * Fields to encrypt for entities of type {@link Service}. Note that encryption of the `content` field and recursively contained `Services` through\n * `content.compoundValue` is automatically managed by the sdk, and you are not allowed to modify it.\n *\n * Note: any non-empty values for this field will break bi-directional data compatibility between v7 and previous: Contacts created with\n * v7 will not be read properly by previous versions. If you want\n * @default ['notes[].markdown'] // encryption of `content` is managed in a special way\n */\n readonly service?: string[]\n /**\n * Fields to encrypt for entities of type {@link HealthElement}\n * @default ['descr', 'note', 'notes[].markdown']\n */\n readonly healthElement?: string[]\n /**\n * Fields to encrypt for entities of type {@link MaintenanceTask}\n * @default ['properties']\n */\n readonly maintenanceTask?: string[]\n /**\n * Fields to encrypt for entities of type {@link Patient}\n * @default ['note', 'notes[].markdown']\n */\n readonly patient?: string[]\n\n /**\n * Fields to encrypt for entities of type {@link Message}\n * @default []\n */\n readonly message?: string[]\n\n /**\n * Fields to encrypt for entities of type {@link Topic}\n * @default ['description']\n */\n readonly topic?: string[]\n}\n\nexport namespace EncryptedFieldsConfig {\n export const Defaults = {\n accessLog: ['detail', 'objectId'],\n calendarItem: ['details', 'title', 'patientId'],\n contact: ['descr', 'notes[].markdown'],\n service: ['notes[].markdown'],\n healthElement: ['descr', 'note', 'notes[].markdown'],\n maintenanceTask: ['properties'],\n patient: ['note', 'notes[].markdown'],\n message: [],\n topic: ['description', 'linkedServices', 'linkedHealthElements'],\n }\n}\n\n/**\n * Details for the authentication of a user\n */\nexport type AuthenticationDetails =\n | {\n username: string\n password: string\n thirdPartyTokens?: { [thirdParty: string]: string }\n }\n | {\n icureTokens: { token: string; refreshToken: string }\n credentials?: { username: string; password: string }\n }\n | {\n thirdPartyTokens: { [thirdParty: string]: string }\n }\n | SmartAuthenticationDetails\n\n/**\n * Allows to perform authentication through an {@link AuthSecretProvider}.\n *\n * The iCure SDK can authenticate to the backend using different kinds of secrets, such as passwords, long-lived authentication tokens, and\n * short-lived authentication tokens generated through the message gateway. iCure associates to each kind of secret a certain security level, and for\n * some sensitive operations, depending on the configurations of the user and his group, some operations may require a secret of a certain security\n * level. For example, with the default configurations, in order to change his own email the user can't have logged in with a long-lived token, but he\n * needs to provide his current password or a short-lived token.\n *\n * By using this authentication option, the iCure SDK will automatically request and cache the secret from the {@link AuthSecretProvider} only when\n * needed, which should help to minimise the interaction with the user.\n *\n * Another advantage of using this authentication option over others is that in case all the cached tokens and secrets were to expire while performing\n * a request, instead of having the request fail the SDK will ask for a new secret from the {@link SmartAuthProvider} and the request will\n * automatically be retried with the new secret.\n *\n * You must provide the following information:\n * - username: any kind of value that can identify the user (userId, groupId/userId, username, email, ...). More generic identifiers, valid\n * on multiple groups, allow for simpler group switching by using {@link IcureApi.switchGroup}.\n * - secretProvider: the secret provider to use for authentication. Will handle interaction with the gui.\n *\n * You can also provide the following optional information, which may allow to reduce the requests for secrets initially:\n * - initialSecret: an initial secret (password, token, ...) that will be used to get new authentication tokens as needed. If it is expired it will be ignored.\n * - initialAuthToken: an initial authentication token used on each request. If it is expired it will be ignored.\n * - initialRefreshToken: an initial refresh token used to get new authentication tokens as needed. If it is expired it will be ignored.\n */\nexport type SmartAuthenticationDetails = {\n username: string\n secretProvider: AuthSecretProvider\n initialSecret?:\n | {\n password: string\n }\n | {\n longToken: string\n }\n | {\n oauthToken: string\n oauthType: OAuthThirdParty\n }\n initialAuthToken?: string\n initialRefreshToken?: string\n}\n\n/**\n * Main entry point for the iCure API. Provides entity-specific sub-apis and some general methods which are not related to a specific entity.\n */\nexport interface IcureApi extends Apis {\n /**\n * Get the information on groups that the current user can access and the current group that this api instance is working on.\n * Note that the values you will get for `availableGroups` may differ from the values you would get if you call {@link IccUserApi.getMatchingUsers}\n * on {@link Apis.userApi}, since the latter is specialised on the specific instance of the user in `currentGroup`.\n * - `currentGroup`: the group that this api instance is working on, or undefined if the backend environment is not multi-group.\n * - `availableGroups`: the list of groups that the current user can access with the provided secret. Empty if the backend environment is not\n * multi-group.\n */\n getGroupsInfo(): Promise<{ currentGroup: UserGroup | undefined; availableGroups: UserGroup[] }>\n\n /**\n * Switches the api to allow the user to work on a different group.\n * @param newGroupId the id of the group to switch to.\n * @return a new api for the specified group.\n */\n switchGroup(newGroupId: string): Promise\n}\n\nexport namespace IcureApi {\n /**\n * Initialises a new instance of the iCure API.\n */\n export async function initialise(\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto | CryptoPrimitives = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n options: IcureApiOptions = {}\n ): Promise {\n const params = new IcureApiOptions.WithDefaults(options)\n let authenticationProviderInfo = await initialiseAuthProviderWithGroupSelector(\n host,\n authenticationOptions,\n params.headers,\n fetchImpl,\n params.groupSelector\n )\n const cryptoInitInfo = await initialiseCryptoWithProvider(\n host,\n fetchImpl,\n authenticationProviderInfo.groupSpecificAuthenticationProvider,\n params,\n cryptoStrategies,\n crypto,\n options.useLiteCompatibilityMode ?? false\n )\n return new IcureApiImpl(\n cryptoInitInfo,\n host,\n authenticationProviderInfo.groupSpecificAuthenticationProvider,\n fetch,\n authenticationProviderInfo.grouplessUserApi,\n authenticationProviderInfo.matches,\n authenticationProviderInfo.matches.find((match) => match.groupId === authenticationProviderInfo.chosenGroupId),\n params,\n cryptoStrategies,\n options.useLiteCompatibilityMode ?? false\n )\n }\n}\n\nasync function getAuthenticationProvider(\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n headers: { [headerName: string]: string },\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n) {\n let authenticationProvider: AuthenticationProvider\n if ('getIcureTokens' in authenticationOptions && 'switchGroup' in authenticationOptions && 'getAuthService' in authenticationOptions) {\n authenticationProvider = authenticationOptions\n } else if ('icureTokens' in authenticationOptions && !!authenticationOptions.icureTokens) {\n authenticationProvider = new JwtAuthenticationProvider(\n new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions?.credentials?.username,\n authenticationOptions?.credentials?.password,\n undefined,\n authenticationOptions.icureTokens\n )\n } else if (\n 'username' in authenticationOptions &&\n 'password' in authenticationOptions &&\n !!authenticationOptions.username &&\n !!authenticationOptions.password\n ) {\n authenticationProvider = new EnsembleAuthenticationProvider(\n new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions.username,\n authenticationOptions.password,\n 3600,\n undefined,\n undefined,\n authenticationOptions.thirdPartyTokens\n )\n } else if ('thirdPartyTokens' in authenticationOptions && !!authenticationOptions.thirdPartyTokens) {\n authenticationProvider = new JwtAuthenticationProvider(\n new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl),\n undefined,\n undefined,\n new JwtBridgedAuthService(\n new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl),\n undefined,\n undefined,\n authenticationOptions.thirdPartyTokens,\n undefined\n )\n )\n } else if ('username' in authenticationOptions && 'secretProvider' in authenticationOptions) {\n authenticationProvider = SmartAuthProvider.initialise(\n new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions.username,\n authenticationOptions.secretProvider,\n {\n initialSecret: authenticationOptions.initialSecret,\n initialAuthToken: authenticationOptions.initialAuthToken,\n initialRefreshToken: authenticationOptions.initialRefreshToken,\n }\n )\n } else {\n throw new Error('Invalid authentication options provided')\n }\n return authenticationProvider\n}\n\nasync function initialiseAuthProviderWithGroupSelector(\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n headers: { [headerName: string]: string },\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise,\n groupSelector: ((availableGroupsInfo: UserGroup[], currentGroupId?: string) => Promise) | undefined\n) {\n let grouplessAuthenticationProvider = await getAuthenticationProvider(host, authenticationOptions, headers, fetchImpl)\n const grouplessUserApi = new IccUserApi(host, headers, grouplessAuthenticationProvider, fetchImpl)\n const matches = await getMatchesOrEmpty(grouplessUserApi)\n const tokens = await grouplessAuthenticationProvider.getIcureTokens()\n const currentGroupId = tokens ? getGroupOfJwt(tokens.token) : undefined\n const chosenGroupId = matches.length > 1 && !!groupSelector ? await groupSelector(matches, currentGroupId) : matches[0]?.groupId\n /*TODO\n * On new very new users switching the authentication provider to a specific group may fail and block the user for too many requests. This is\n * probably linked to replication of the user in the fallback database.\n */\n /*\n * If the auth provider is initialized with credentials and jwt not switching the group will may cause issues:\n * 1. The default group for the user is group A\n * 2. The user logs in to group B -> the provider is switched\n * 3. The user refreshes the page -> a new instance of the api with initial iCure tokens is created\n * 4. The refresh token is expired / the user needs to do a high security operation -> a new login is done .If we did\n * not switch the provider here the login would default to group A, potentially causing a lot of issues...\n */\n const groupSpecificAuthenticationProvider = !!chosenGroupId\n ? await grouplessAuthenticationProvider.switchGroup(chosenGroupId, matches)\n : grouplessAuthenticationProvider\n return {\n groupSpecificAuthenticationProvider,\n // No need for a groupless user api on a group-specific smart auth provider\n grouplessUserApi: groupSpecificAuthenticationProvider instanceof SmartAuthProvider ? undefined : grouplessUserApi,\n matches,\n chosenGroupId,\n }\n}\n\n// Apis which are used during crypto api initialisation, to avoid re-instantiating them later\ntype CryptoInitialisationInfo = {\n cryptoApi: IccCryptoXApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceXApi\n // no patient api since it is base\n dataOwnerApi: IccDataOwnerXApi\n userApi: IccUserXApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n headers: { [headerName: string]: string }\n dataOwnerRequiresAnonymousDelegation: boolean\n recoveryApi: IccRecoveryXApi\n}\n\nconst REQUEST_AUTOFIX_ANONYMITY_HEADER = 'Icure-Request-Autofix-Anonymity'\n\nasync function initialiseCryptoWithProvider(\n host: string,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise,\n groupSpecificAuthenticationProvider: AuthenticationProvider,\n params: IcureApiOptions.WithDefaults,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto | CryptoPrimitives,\n useLiteCompatibilityMode: boolean\n): Promise {\n const initialDataOwnerStub = await new IccDataOwnerXApi(\n host,\n params.headers,\n groupSpecificAuthenticationProvider,\n fetchImpl\n ).getCurrentDataOwnerStub()\n const dataOwnerRequiresAnonymousDelegation = cryptoStrategies.dataOwnerRequiresAnonymousDelegation(initialDataOwnerStub)\n let updatedHeaders = params.headers\n if (!Object.keys(updatedHeaders).includes(REQUEST_AUTOFIX_ANONYMITY_HEADER)) {\n if (initialDataOwnerStub.type == DataOwnerTypeEnum.Patient || initialDataOwnerStub.type == DataOwnerTypeEnum.Device) {\n if (!dataOwnerRequiresAnonymousDelegation) {\n updatedHeaders = { ...updatedHeaders, [REQUEST_AUTOFIX_ANONYMITY_HEADER]: 'false' }\n }\n } else {\n if (dataOwnerRequiresAnonymousDelegation) {\n updatedHeaders = { ...updatedHeaders, [REQUEST_AUTOFIX_ANONYMITY_HEADER]: 'true' }\n }\n }\n }\n\n const authApi = new IccAuthApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, updatedHeaders, groupSpecificAuthenticationProvider, authApi, fetchImpl)\n const healthcarePartyApi = new IccHcpartyXApi(host, updatedHeaders, groupSpecificAuthenticationProvider, authApi, fetchImpl)\n const deviceApi = new IccDeviceXApi(host, updatedHeaders, groupSpecificAuthenticationProvider, userApi, authApi, fetchImpl)\n const basePatientApi = new IccPatientApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n const dataOwnerApi = new IccDataOwnerXApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n const exchangeDataApi = new IccExchangeDataApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n const baseRecoveryDataApi = new IccRecoveryDataApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n // Crypto initialisation\n const icureStorage = new IcureStorageFacade(params.keyStorage, params.storage, params.entryKeysFactory)\n const cryptoPrimitives = 'AES' in crypto && 'RSA' in crypto && 'HMAC' in crypto ? crypto : new WebCryptoPrimitives(crypto)\n const baseExchangeKeysManager = new BaseExchangeKeysManager(cryptoPrimitives, dataOwnerApi, healthcarePartyApi, basePatientApi, deviceApi)\n const baseExchangeDataManager = new BaseExchangeDataManager(\n exchangeDataApi,\n dataOwnerApi,\n cryptoPrimitives,\n dataOwnerRequiresAnonymousDelegation,\n useLiteCompatibilityMode\n )\n const keyRecovery = new KeyRecovery(cryptoPrimitives, dataOwnerApi, baseExchangeKeysManager, baseExchangeDataManager)\n const recoveryDataEncryption = new RecoveryDataEncryption(cryptoPrimitives, baseRecoveryDataApi)\n const keyPairRecoverer = new KeyPairRecoverer(recoveryDataEncryption)\n const userEncryptionKeysManager = new UserEncryptionKeysManager(\n cryptoPrimitives,\n dataOwnerApi,\n icureStorage,\n keyRecovery,\n cryptoStrategies,\n !params.disableParentKeysInitialisation,\n keyPairRecoverer\n )\n const newKey = await userEncryptionKeysManager.initialiseKeys()\n await new TransferKeysManager(cryptoPrimitives, baseExchangeDataManager, dataOwnerApi, userEncryptionKeysManager, icureStorage).updateTransferKeys(\n await dataOwnerApi.getCurrentDataOwnerStub()\n )\n // TODO customise cache size?\n const exchangeKeysManager = new ExchangeKeysManager(userEncryptionKeysManager, baseExchangeKeysManager, dataOwnerApi)\n await exchangeKeysManager.reloadCache()\n const accessControlSecretUtils = new AccessControlSecretUtils(cryptoPrimitives)\n const exchangeDataManager = await initialiseExchangeDataManagerForCurrentDataOwner(\n baseExchangeDataManager,\n userEncryptionKeysManager,\n accessControlSecretUtils,\n cryptoStrategies,\n dataOwnerApi,\n cryptoPrimitives,\n !params.disableParentKeysInitialisation\n )\n const exchangeDataMapManager = new ExchangeDataMapManager(\n new IccExchangeDataMapApi(host, updatedHeaders, groupSpecificAuthenticationProvider, fetchImpl)\n )\n const secureDelegationsEncryption = new SecureDelegationsEncryption(userEncryptionKeysManager, cryptoPrimitives)\n const secureDelegationsSecurityMetadataEncryption = new SecurityMetadataDecryptor(\n exchangeKeysManager,\n cryptoPrimitives,\n exchangeDataManager,\n exchangeDataMapManager,\n secureDelegationsEncryption,\n dataOwnerApi\n )\n const xApiUtils = new ExtendedApisUtilsImpl(\n cryptoPrimitives,\n dataOwnerApi,\n secureDelegationsSecurityMetadataEncryption,\n new SecureDelegationsManager(\n exchangeDataManager,\n exchangeDataMapManager,\n secureDelegationsEncryption,\n accessControlSecretUtils,\n userEncryptionKeysManager,\n cryptoPrimitives,\n dataOwnerApi,\n cryptoStrategies,\n dataOwnerRequiresAnonymousDelegation\n ),\n userApi,\n !params.disableParentKeysInitialisation\n )\n const shamirManager = new ShamirKeysManager(cryptoPrimitives, dataOwnerApi, userEncryptionKeysManager, exchangeDataManager)\n const confidentialEntitites = new ConfidentialEntities(xApiUtils, cryptoPrimitives, dataOwnerApi)\n await ensureDelegationForSelf(dataOwnerApi, xApiUtils, basePatientApi, cryptoPrimitives)\n const accessControlKeysHeadersProvider = new AccessControlKeysHeadersProvider(exchangeDataManager)\n const delegationsDeAnonymisation = new DelegationsDeAnonymization(\n dataOwnerApi,\n secureDelegationsSecurityMetadataEncryption,\n xApiUtils,\n cryptoPrimitives,\n accessControlSecretUtils,\n host,\n updatedHeaders,\n groupSpecificAuthenticationProvider,\n fetchImpl,\n accessControlKeysHeadersProvider\n )\n const cryptoApi = new IccCryptoXApi(\n exchangeKeysManager,\n cryptoPrimitives,\n userEncryptionKeysManager,\n dataOwnerApi,\n xApiUtils,\n shamirManager,\n params.storage,\n params.keyStorage,\n confidentialEntitites,\n exchangeDataManager,\n accessControlKeysHeadersProvider,\n delegationsDeAnonymisation\n )\n const maintenanceTaskApi = new IccMaintenanceTaskXApi(\n host,\n updatedHeaders,\n cryptoApi,\n healthcarePartyApi,\n dataOwnerApi,\n userApi,\n authApi,\n !dataOwnerRequiresAnonymousDelegation,\n params.encryptedFieldsConfig.maintenanceTask ?? EncryptedFieldsConfig.Defaults.maintenanceTask,\n groupSpecificAuthenticationProvider,\n fetchImpl\n )\n const icureMaintenanceTaskApi = new IccIcureMaintenanceXApi(cryptoApi, maintenanceTaskApi, dataOwnerApi, exchangeDataApi)\n\n if (newKey && params.createMaintenanceTasksOnNewKey) {\n await icureMaintenanceTaskApi.createMaintenanceTasksForNewKeypair(await userApi.getCurrentUser(), newKey.newKeyPair)\n }\n return {\n cryptoApi,\n userApi,\n healthcarePartyApi,\n deviceApi,\n maintenanceTaskApi,\n dataOwnerApi,\n icureMaintenanceTaskApi,\n headers: updatedHeaders,\n dataOwnerRequiresAnonymousDelegation,\n recoveryApi: new IccRecoveryXApi(\n baseRecoveryDataApi,\n recoveryDataEncryption,\n userEncryptionKeysManager,\n dataOwnerApi,\n cryptoPrimitives,\n exchangeDataManager\n ),\n }\n}\n\nclass IcureApiImpl implements IcureApi {\n private latestGroupsRequest: Promise\n\n constructor(\n private readonly cryptoInitInfos: CryptoInitialisationInfo,\n private readonly host: string,\n private readonly groupSpecificAuthenticationProvider: AuthenticationProvider,\n private readonly fetch: (input: RequestInfo, init?: RequestInit) => Promise,\n private readonly grouplessUserApi: IccUserApi | undefined,\n latestMatches: UserGroup[],\n private readonly currentGroupInfo: UserGroup | undefined,\n private readonly params: IcureApiOptions.WithDefaults,\n private readonly cryptoStrategies: CryptoStrategies,\n private readonly useLiteCompatibilityMode: boolean\n ) {\n this.latestGroupsRequest = Promise.resolve(latestMatches)\n }\n\n private _authApi: IccAuthApi | undefined\n\n get recoveryApi(): IccRecoveryXApi {\n return this.cryptoInitInfos.recoveryApi\n }\n\n get authApi(): IccAuthApi {\n return (\n this._authApi ?? (this._authApi = new IccAuthApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _codeApi: IccCodeXApi | undefined\n\n get codeApi(): IccCodeXApi {\n return (\n this._codeApi ??\n (this._codeApi = new IccCodeXApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _calendarItemTypeApi: IccCalendarItemTypeApi | undefined\n\n get calendarItemTypeApi(): IccCalendarItemTypeApi {\n return (\n this._calendarItemTypeApi ??\n (this._calendarItemTypeApi = new IccCalendarItemTypeApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _medicalLocationApi: IccMedicallocationApi | undefined\n\n get medicalLocationApi(): IccMedicallocationApi {\n return (\n this._medicalLocationApi ??\n (this._medicalLocationApi = new IccMedicallocationApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _roleApi: IccRoleApi | undefined\n\n get roleApi(): IccRoleApi {\n return this._roleApi ?? (this._roleApi = new IccRoleApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n\n private _entityReferenceApi: IccEntityrefApi | undefined\n\n get entityReferenceApi(): IccEntityrefApi {\n return (\n this._entityReferenceApi ??\n (this._entityReferenceApi = new IccEntityrefApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _permissionApi: IccPermissionApi | undefined\n\n get permissionApi(): IccPermissionApi {\n return (\n this._permissionApi ??\n (this._permissionApi = new IccPermissionApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _accessLogApi: IccAccesslogXApi | undefined\n\n get accessLogApi(): IccAccesslogXApi {\n return (\n this._accessLogApi ??\n (this._accessLogApi = new IccAccesslogXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.params.encryptedFieldsConfig.accessLog ?? EncryptedFieldsConfig.Defaults.accessLog,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _agendaApi: IccAgendaApi | undefined\n\n get agendaApi(): IccAgendaApi {\n return (\n this._agendaApi ??\n (this._agendaApi = new IccAgendaApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _contactApi: IccContactXApi | undefined\n\n get contactApi(): IccContactXApi {\n return (\n this._contactApi ??\n (this._contactApi = new IccContactXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.userApi,\n this.authApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch,\n this.params.encryptedFieldsConfig.contact ?? EncryptedFieldsConfig.Defaults.contact,\n this.params.encryptedFieldsConfig.service ?? EncryptedFieldsConfig.Defaults.service\n ))\n )\n }\n\n private _formApi: IccFormXApi | undefined\n\n get formApi(): IccFormXApi {\n return (\n this._formApi ??\n (this._formApi = new IccFormXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _groupApi: IccGroupApi | undefined\n\n get groupApi(): IccGroupApi {\n return (\n this._groupApi ??\n (this._groupApi = new IccGroupApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _invoiceApi: IccInvoiceXApi | undefined\n\n get invoiceApi(): IccInvoiceXApi {\n return (\n this._invoiceApi ??\n (this._invoiceApi = new IccInvoiceXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.entityReferenceApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _insuranceApi: IccInsuranceApi | undefined\n\n get insuranceApi(): IccInsuranceApi {\n return (\n this._insuranceApi ??\n (this._insuranceApi = new IccInsuranceApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _documentApi: IccDocumentXApi | undefined\n\n get documentApi(): IccDocumentXApi {\n return (\n this._documentApi ??\n (this._documentApi = new IccDocumentXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.authApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _healthcareElementApi: IccHelementXApi | undefined\n\n get healthcareElementApi(): IccHelementXApi {\n return (\n this._healthcareElementApi ??\n (this._healthcareElementApi = new IccHelementXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.userApi,\n this.authApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.params.encryptedFieldsConfig.healthElement ?? EncryptedFieldsConfig.Defaults.healthElement,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _classificationApi: IccClassificationXApi | undefined\n\n get classificationApi(): IccClassificationXApi {\n return (\n this._classificationApi ??\n (this._classificationApi = new IccClassificationXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _calendarItemApi: IccCalendarItemXApi | undefined\n\n get calendarItemApi(): IccCalendarItemXApi {\n return (\n this._calendarItemApi ??\n (this._calendarItemApi = new IccCalendarItemXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.params.encryptedFieldsConfig.calendarItem ?? EncryptedFieldsConfig.Defaults.calendarItem,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _receiptApi: IccReceiptXApi | undefined\n\n get receiptApi(): IccReceiptXApi {\n return (\n this._receiptApi ??\n (this._receiptApi = new IccReceiptXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _timetableApi: IccTimeTableXApi | undefined\n\n get timetableApi(): IccTimeTableXApi {\n return (\n this._timetableApi ??\n (this._timetableApi = new IccTimeTableXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _patientApi: IccPatientXApi | undefined\n\n get patientApi(): IccPatientXApi {\n return (\n this._patientApi ??\n (this._patientApi = new IccPatientXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.contactApi,\n this.formApi,\n this.healthcareElementApi,\n this.invoiceApi,\n this.documentApi,\n this.healthcarePartyApi,\n this.classificationApi,\n this.dataOwnerApi,\n this.calendarItemApi,\n this.userApi,\n this.authApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.params.encryptedFieldsConfig.patient ?? EncryptedFieldsConfig.Defaults.patient,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _messageApi: IccMessageXApi | undefined\n\n get messageApi(): IccMessageXApi {\n return (\n this._messageApi ??\n (this._messageApi = new IccMessageXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.authApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.params.encryptedFieldsConfig.message ?? EncryptedFieldsConfig.Defaults.message,\n this.fetch\n ))\n )\n }\n\n private _topicApi: IccTopicXApi | undefined\n\n get topicApi(): IccTopicXApi {\n return (\n this._topicApi ??\n (this._topicApi = new IccTopicXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.authApi,\n !this.cryptoInitInfos.dataOwnerRequiresAnonymousDelegation,\n this.groupSpecificAuthenticationProvider,\n this.params.encryptedFieldsConfig.topic ?? EncryptedFieldsConfig.Defaults.topic,\n this.fetch\n ))\n )\n }\n\n private _anonymousAccessApi: IccAnonymousAccessApi | undefined\n\n get anonymousAccessApi(): IccAnonymousAccessApi {\n return (\n this._anonymousAccessApi ??\n (this._anonymousAccessApi = new IccAnonymousAccessApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _applicationSettingsApi: IccApplicationsettingsApi | undefined\n\n get applicationSettingsApi(): IccApplicationsettingsApi {\n return (\n this._applicationSettingsApi ??\n (this._applicationSettingsApi = new IccApplicationsettingsApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _bekmehrApi: IccBekmehrXApi | undefined\n\n get bekmehrApi(): IccBekmehrXApi {\n return (\n this._bekmehrApi ??\n (this._bekmehrApi = new IccBekmehrXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.contactApi,\n this.healthcareElementApi,\n this.documentApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _beefactApi: IccBeefactApi | undefined\n\n get beefactApi(): IccBeefactApi {\n return (\n this._beefactApi ??\n (this._beefactApi = new IccBeefactApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _beresultexportApi: IccBeresultexportApi | undefined\n\n get beresultexportApi(): IccBeresultexportApi {\n return (\n this._beresultexportApi ??\n (this._beresultexportApi = new IccBeresultexportApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _beresultimportApi: IccBeresultimportApi | undefined\n\n get beresultimportApi(): IccBeresultimportApi {\n return (\n this._beresultimportApi ??\n (this._beresultimportApi = new IccBeresultimportApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _besamv2Api: IccBesamv2Api | undefined\n\n get besamv2Api(): IccBesamv2Api {\n return (\n this._besamv2Api ??\n (this._besamv2Api = new IccBesamv2Api(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _classificationTemplateApi: IccClassificationTemplateApi | undefined\n\n get classificationTemplateApi(): IccClassificationTemplateApi {\n return (\n this._classificationTemplateApi ??\n (this._classificationTemplateApi = new IccClassificationTemplateApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _doctemplateApi: IccDoctemplateXApi | undefined\n\n get doctemplateApi(): IccDoctemplateXApi {\n return (\n this._doctemplateApi ??\n (this._doctemplateApi = new IccDoctemplateXApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.cryptoApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _entitytemplateApi: IccEntitytemplateApi | undefined\n\n get entitytemplateApi(): IccEntitytemplateApi {\n return (\n this._entitytemplateApi ??\n (this._entitytemplateApi = new IccEntitytemplateApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _frontendmigrationApi: IccFrontendmigrationApi | undefined\n\n get frontendmigrationApi(): IccFrontendmigrationApi {\n return (\n this._frontendmigrationApi ??\n (this._frontendmigrationApi = new IccFrontendmigrationApi(\n this.host,\n this.cryptoInitInfos.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n\n private _icureApi: IccIcureApi | undefined\n\n get icureApi(): IccIcureApi {\n return (\n this._icureApi ??\n (this._icureApi = new IccIcureApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _keywordApi: IccKeywordApi | undefined\n\n get keywordApi(): IccKeywordApi {\n return (\n this._keywordApi ??\n (this._keywordApi = new IccKeywordApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _medexApi: IccMedexApi | undefined\n\n get medexApi(): IccMedexApi {\n return (\n this._medexApi ??\n (this._medexApi = new IccMedexApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _placeApi: IccPlaceApi | undefined\n\n get placeApi(): IccPlaceApi {\n return (\n this._placeApi ??\n (this._placeApi = new IccPlaceApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _pubsubApi: IccPubsubApi | undefined\n\n get pubsubApi(): IccPubsubApi {\n return (\n this._pubsubApi ??\n (this._pubsubApi = new IccPubsubApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _replicationApi: IccReplicationApi | undefined\n\n get replicationApi(): IccReplicationApi {\n return (\n this._replicationApi ??\n (this._replicationApi = new IccReplicationApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _tarificationApi: IccTarificationApi | undefined\n\n get tarificationApi(): IccTarificationApi {\n return (\n this._tarificationApi ??\n (this._tarificationApi = new IccTarificationApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n private _tmpApi: IccTmpApi | undefined\n\n get tmpApi(): IccTmpApi {\n return (\n this._tmpApi ?? (this._tmpApi = new IccTmpApi(this.host, this.cryptoInitInfos.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n get cryptoApi(): IccCryptoXApi {\n return this.cryptoInitInfos.cryptoApi\n }\n\n get dataOwnerApi(): IccDataOwnerXApi {\n return this.cryptoInitInfos.dataOwnerApi\n }\n\n get deviceApi(): IccDeviceXApi {\n return this.cryptoInitInfos.deviceApi\n }\n\n get healthcarePartyApi(): IccHcpartyXApi {\n return this.cryptoInitInfos.healthcarePartyApi\n }\n\n get icureMaintenanceTaskApi(): IccIcureMaintenanceXApi {\n return this.cryptoInitInfos.icureMaintenanceTaskApi\n }\n\n get maintenanceTaskApi(): IccMaintenanceTaskXApi {\n return this.cryptoInitInfos.maintenanceTaskApi\n }\n\n get userApi(): IccUserXApi {\n return this.cryptoInitInfos.userApi\n }\n\n async getGroupsInfo(): Promise<{ currentGroup: UserGroup | undefined; availableGroups: UserGroup[] }> {\n this.latestGroupsRequest = (this.grouplessUserApi ?? this.userApi).getMatchingUsers()\n return { currentGroup: this.currentGroupInfo, availableGroups: await this.latestGroupsRequest }\n }\n\n async switchGroup(newGroupId: string): Promise {\n const availableGroups = await this.latestGroupsRequest\n const switchedProvider = await this.groupSpecificAuthenticationProvider.switchGroup(newGroupId, availableGroups)\n const cryptoInitInfos = await initialiseCryptoWithProvider(\n this.host,\n this.fetch,\n switchedProvider,\n this.params,\n this.cryptoStrategies,\n this.cryptoApi.primitives,\n this.useLiteCompatibilityMode\n )\n return new IcureApiImpl(\n cryptoInitInfos,\n this.host,\n switchedProvider,\n this.fetch,\n this.grouplessUserApi,\n availableGroups,\n availableGroups.find((x) => x.groupId === newGroupId)!,\n this.params,\n this.cryptoStrategies,\n this.useLiteCompatibilityMode\n )\n }\n}\n\nexport interface IcureBasicApi extends BasicApis {\n /**\n * Get the information on groups that the current user can access and the current group that this api instance is working on.\n * Note that the values you will get for `availableGroups` may differ from the values you would get if you call {@link IccUserApi.getMatchingUsers}\n * on {@link Apis.userApi}, since the latter is specialised on the specific instance of the user in `currentGroup`.\n * - `currentGroup`: the group that this api instance is working on, or undefined if the backend environment is not multi-group.\n * - `availableGroups`: the list of groups that the current user can access with the provided secret. Empty if the backend environment is not\n * multi-group.\n */\n getGroupsInfo(): Promise<{ currentGroup: UserGroup | undefined; availableGroups: UserGroup[] }>\n\n /**\n * Switches the api to allow the user to work on a different group.\n * @param newGroupId the id of the group to switch to.\n * @return a new api for the specified group.\n */\n switchGroup(newGroupId: string): Promise\n}\n\nclass IcureBasicApiImpl implements IcureBasicApi {\n private latestGroupsRequest: Promise\n private _agendaApi: IccAgendaApi | undefined\n private _authApi: IccAuthApi | undefined\n private _codeApi: IccCodeXApi | undefined\n private _deviceApi: IccDeviceXApi | undefined\n private _entityReferenceApi: IccEntityrefApi | undefined\n private _groupApi: IccGroupApi | undefined\n private _healthcarePartyApi: IccHcpartyXApi | undefined\n private _insuranceApi: IccInsuranceApi | undefined\n private _permissionApi: IccPermissionApi | undefined\n private _userApi: IccUserXApi | undefined\n private _patientApi: IccPatientApi | undefined\n private _roleApi: IccRoleApi | undefined\n\n get agendaApi(): IccAgendaApi {\n return (\n this._agendaApi ?? (this._agendaApi = new IccAgendaApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get authApi(): IccAuthApi {\n return this._authApi ?? (this._authApi = new IccAuthApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get codeApi(): IccCodeXApi {\n return this._codeApi ?? (this._codeApi = new IccCodeXApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get deviceApi(): IccDeviceXApi {\n return (\n this._deviceApi ??\n (this._deviceApi = new IccDeviceXApi(\n this.host,\n this.params.headers,\n this.groupSpecificAuthenticationProvider,\n this.userApi,\n this.authApi,\n this.fetch\n ))\n )\n }\n get entityReferenceApi(): IccEntityrefApi {\n return (\n this._entityReferenceApi ??\n (this._entityReferenceApi = new IccEntityrefApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get groupApi(): IccGroupApi {\n return this._groupApi ?? (this._groupApi = new IccGroupApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get healthcarePartyApi(): IccHcpartyXApi {\n return (\n this._healthcarePartyApi ??\n (this._healthcarePartyApi = new IccHcpartyXApi(\n this.host,\n this.params.headers,\n this.groupSpecificAuthenticationProvider,\n this.authApi,\n this.fetch\n ))\n )\n }\n get insuranceApi(): IccInsuranceApi {\n return (\n this._insuranceApi ??\n (this._insuranceApi = new IccInsuranceApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get permissionApi(): IccPermissionApi {\n return (\n this._permissionApi ??\n (this._permissionApi = new IccPermissionApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get userApi(): IccUserXApi {\n return (\n this._userApi ??\n (this._userApi = new IccUserXApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.authApi, this.fetch))\n )\n }\n\n async getGroupsInfo(): Promise<{ currentGroup: UserGroup | undefined; availableGroups: UserGroup[] }> {\n if (!this.currentGroupInfo) return { currentGroup: undefined, availableGroups: [] }\n this.latestGroupsRequest = (this.grouplessUserApi ?? this.userApi).getMatchingUsers()\n return { currentGroup: this.currentGroupInfo, availableGroups: await this.latestGroupsRequest }\n }\n\n get patientApi(): IccPatientApi {\n return (\n this._patientApi ?? (this._patientApi = new IccPatientApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n\n get roleApi(): IccRoleApi {\n return this._roleApi ?? (this._roleApi = new IccRoleApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n\n async switchGroup(newGroupId: string): Promise {\n if (!this.currentGroupInfo) throw new Error('Cannot switch group: the backend environment does not support multiple groups.')\n const availableGroups = await this.latestGroupsRequest\n const switchedProvider = await this.groupSpecificAuthenticationProvider.switchGroup(newGroupId, availableGroups)\n return new IcureBasicApiImpl(\n this.host,\n switchedProvider,\n this.fetch,\n this.grouplessUserApi,\n availableGroups,\n availableGroups.find((x) => x.groupId === newGroupId)!,\n this.params\n )\n }\n\n constructor(\n private readonly host: string,\n private readonly groupSpecificAuthenticationProvider: AuthenticationProvider,\n private readonly fetch: (input: RequestInfo, init?: RequestInit) => Promise,\n private readonly grouplessUserApi: IccUserApi | undefined,\n latestMatches: UserGroup[],\n private readonly currentGroupInfo: UserGroup | undefined,\n private readonly params: IcureBasicApiOptions.WithDefaults\n ) {\n this.latestGroupsRequest = Promise.resolve(latestMatches)\n }\n}\n\nexport interface IcureBasicApiOptions {\n /**\n * Additional headers to use on each request made by the iCure api.\n * @default no additional headers\n */\n readonly headers?: { [headerName: string]: string }\n /**\n * Each user may exist in multiple groups, but an instance of {@link IcureApi} is specialised for a single group. This function allows you to decide\n * the group to use for a given user.\n * This functions will be called only if a user exists in at least 2 groups, and takes in input:\n * - the information on the groups the user can access (in no specific order)\n * - if the authentication method uses JWT also the current group id (undefined otherwise)\n * The function must return the id of one of the available groups.\n * @default takes the first group provided. The group chosen by this method may vary between different instantiations of the {@link IcureApi} even\n * if for the same user and if the groups available for the user do not change.\n */\n readonly groupSelector?: (availableGroupsInfo: UserGroup[], currentGroupId?: string) => Promise\n}\n\nnamespace IcureBasicApiOptions {\n export namespace Defaults {\n export const headers = {}\n }\n export class WithDefaults implements IcureBasicApiOptions {\n constructor(custom: IcureBasicApiOptions) {\n this.headers = custom.headers ?? Defaults.headers\n this.groupSelector = custom.groupSelector ?? ((groups) => Promise.resolve(groups[0].groupId!))\n }\n\n readonly headers: { [headerName: string]: string }\n readonly groupSelector: (availableGroupsInfo: UserGroup[]) => Promise\n }\n}\n\nexport namespace IcureBasicApi {\n /**\n * Initialises a new instance of the iCure API.\n */\n export async function initialise(\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n options: IcureBasicApiOptions = {}\n ): Promise {\n const params = new IcureBasicApiOptions.WithDefaults(options)\n const authProviderInfo = await initialiseAuthProviderWithGroupSelector(\n host,\n authenticationOptions,\n params.headers ?? {},\n fetchImpl,\n params.groupSelector\n )\n return new IcureBasicApiImpl(\n host,\n authProviderInfo.groupSpecificAuthenticationProvider,\n fetch,\n authProviderInfo.grouplessUserApi,\n authProviderInfo.matches,\n authProviderInfo.matches.find((match) => match.groupId === authProviderInfo.chosenGroupId),\n params\n )\n }\n}\n\nasync function getMatchesOrEmpty(userApi: IccUserApi): Promise {\n try {\n return await userApi.getMatchingUsers()\n } catch (err) {\n if (err instanceof Error && 'statusCode' in err && (err as any).statusCode === 404) return Promise.resolve([])\n else return Promise.reject(err)\n }\n}\n","/**\n * Represents a request to update aes exchange keys following the creation of a new key pair for a data owner.\n */\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { PropertyStub } from '../../icc-api/model/PropertyStub'\n\nexport interface KeyPairUpdateRequest {\n /**\n * New public key of the data owner, in hex-encoded spki format.\n */\n readonly newPublicKey: string\n\n /**\n * Id of the data owner which created a new key pair and wants to regain access to his exchange keys.\n */\n readonly concernedDataOwnerId: string\n\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n readonly originalTask?: MaintenanceTask\n}\n\nexport namespace KeyPairUpdateRequest {\n /**\n * Create a key pair update request from a maintenance task.\n */\n export function fromMaintenanceTask(task: MaintenanceTask): KeyPairUpdateRequest {\n if (task.taskType !== KeyPairUpdateRequest.TASK_TYPE)\n throw new Error(`Key pair update tasks should have task type ${KeyPairUpdateRequest.TASK_TYPE}, but got task with type ${task.taskType}`)\n\n function findStringProp(propId: string): string {\n const prop: PropertyStub | undefined = task.properties?.find((x) => x.id === propId)\n if (!prop) throw new Error(`Task is missing required string property ${propId} for KeyPairUpdateRequest. ${JSON.stringify(task)}`)\n const propValue = prop.typedValue?.stringValue\n if (!propValue)\n throw new Error(`Invalid value ${prop.typedValue?.stringValue} for property ${propId} for KeyPairUpdateRequest. ${JSON.stringify(task)}`)\n return propValue\n }\n\n return {\n concernedDataOwnerId: findStringProp(KeyPairUpdateRequest.OWNER_ID_PROP_ID),\n newPublicKey: findStringProp(KeyPairUpdateRequest.OWNER_PUB_PROP_ID),\n originalTask: task,\n }\n }\n}\n\nexport namespace KeyPairUpdateRequest {\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const OWNER_ID_PROP_ID = 'dataOwnerConcernedId'\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const OWNER_PUB_PROP_ID = 'dataOwnerConcernedPubKey'\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const TASK_TYPE = MaintenanceTask.TaskTypeEnum.KeyPairUpdate\n}\n","export default {\n 'BE-THESAURUS': ['fr', 'nl'],\n 'CD-ATC': ['fr', 'nl'],\n 'CD-DRUG-CNK': ['fr', 'nl'],\n 'CD-INNCLUSTER': ['fr', 'nl'],\n ICPC: ['fr', 'nl'],\n ICD: ['fr', 'nl'],\n}\n","export default {\n fr: {\n package: 'boîte',\n packages: 'boîtes',\n packageOf: 'boîte de',\n packagesOf: 'boîtes de',\n during: 'pendant',\n take_s_: 'prise(s)',\n weekly: '/semaine',\n monthly: '/mois',\n daily: '/jour',\n the: 'le',\n onDay: 'le jour',\n on: 'le',\n afterwakingup: 'Au lever',\n afterbreakfast: 'Après ptit déj.',\n afterdinner: 'Après rep. soir',\n afterlunch: 'Après rep. midi',\n afternoon: 'Après-midi',\n beforebreakfast: 'Avant ptit déj.',\n beforedinner: 'Avant rep. soir',\n beforelunch: 'Avant rep. midi',\n duringbreakfast: 'Pdt ptit déj.',\n duringdinner: 'Pdt rep. soir',\n duringlunch: 'Pdt rep. midi',\n betweenbreakfastandlunch: 'Entre ptit déj et rep. midi',\n betweenlunchanddinner: 'Entre rep. midi et rep. soir',\n betweendinnerandsleep: 'Entre rep. soir et couch.',\n evening: 'Soir',\n knownuse: 'Usage connu',\n morning: 'Matin',\n night: 'Avt couch.',\n midday: 'Midi',\n noon: 'Midi',\n at: 'à',\n thehourofsleep: 'Au coucher',\n },\n en: {\n package: 'package',\n packages: 'packages',\n packageOf: 'package of',\n packagesOf: 'packages of',\n during: 'during',\n take_s_: 'take(s)',\n weekly: 'weekly',\n monthly: 'monthly',\n daily: 'daily',\n the: 'the',\n onDay: 'on day',\n on: 'on',\n afterwakingup: 'After Waking Up',\n afterbreakfast: 'After Breakfast',\n afterdinner: 'After Dinner',\n afterlunch: 'After Lunch',\n afternoon: 'Afternoon',\n beforebreakfast: 'Before Breakfast',\n beforedinner: 'Before Dinner',\n beforelunch: 'Before Lunch',\n duringbreakfast: 'During Breakfast',\n duringdinner: 'During Dinner',\n duringlunch: 'During Lunch',\n betweenbreakfastandlunch: 'Between Breakfast and Lunch',\n betweenlunchanddinner: 'Between Lunch and Dinner',\n betweendinnerandsleep: 'Between Dinner and Sleep',\n evening: 'Evening',\n knownuse: 'Known Usage',\n morning: 'Morning',\n night: 'Night',\n midday: 'Midday',\n noon: 'Noon',\n at: 'at',\n thehourofsleep: 'At Bedtime',\n },\n nl: {\n package: 'verpakking',\n packages: 'verpakkingen',\n packageOf: 'verpakking van',\n packagesOf: 'verpakkingen van',\n during: 'gedurende',\n take_s_: 'inname(s)',\n weekly: 'wekelijks',\n monthly: 'maandelijks',\n daily: 'dagelijks',\n the: 'de',\n onDay: 'op dag',\n on: 'op',\n afterwakingup: 'Bij het opstaan',\n afterbreakfast: 'Na ontbijt',\n afterdinner: 'Na avondeten',\n afterlunch: 'Na middageten',\n afternoon: 'Namiddag',\n beforebreakfast: 'Voor ontbijt',\n beforedinner: 'Voor avondeten',\n beforelunch: 'Voor middageten',\n duringbreakfast: 'Tijdens ontbijt',\n duringdinner: 'Tijdens avondeten',\n duringlunch: 'Tijdens middageten',\n betweenbreakfastandlunch: 'Tussen ontbijt en middageten',\n betweenlunchanddinner: 'Tussen middag- en avondeten',\n betweendinnerandsleep: 'Tussen avondmaal en slapeneten',\n evening: 'Avond',\n knownuse: 'Gekend gebruik',\n morning: \"'s Morgens\",\n night: 'Vóór slapengaan',\n midday: 'Middag',\n noon: 'Middag',\n at: 'om',\n thehourofsleep: 'Voor het slapen',\n },\n}\n","export default {\n 'A00-B99': {\n en: 'Infectious and parasitic',\n fr: 'Infections & parasites',\n colour: 'ICD-10--IV',\n },\n 'C00-D48': {\n en: 'Neoplasms',\n fr: 'Tumeurs',\n colour: 'ICD-10--IV',\n },\n 'D49-D89': {\n en: 'Blood & immunity',\n fr: 'Sang & immunité',\n colour: 'ICD-10--IV',\n },\n 'E00-E99': {\n en: 'Endocrine, nutritional & metabolic',\n fr: 'Endocrino, nutrition et métabolisme',\n colour: 'ICD-10--IV',\n },\n 'F00-F99': {\n en: 'Mental and behavioural disorders',\n fr: 'Troubles mentaux et du comportement',\n colour: 'ICD-10--V',\n },\n 'G00-G99': {\n en: 'Nervous system',\n fr: 'Système nerveux',\n colour: 'ICD-10--VI',\n },\n 'H00-H59': {\n en: 'Eye and adnexa',\n fr: 'Œil et de ses annexes',\n colour: 'ICD-10--VII',\n },\n 'H60-H99': {\n en: 'Ear and mastoid process',\n fr: \"Oreille et de l'apophyse mastoïde\",\n colour: 'ICD-10--VII',\n },\n 'I00-I99': {\n en: 'Circulatory system',\n fr: 'Appareil circulatoire',\n colour: 'ICD-10--VIII',\n },\n 'J00-J99': {\n en: 'Respiratory system',\n fr: 'Appareil respiratoire',\n colour: 'ICD-10--IX',\n },\n 'K00-K99': {\n en: 'Digestive system',\n fr: 'Appareil digestif',\n colour: 'ICD-10--X',\n },\n 'L00-L99': {\n en: 'Skin and subcutaneous tissue',\n fr: 'Peau et Tissu cellulaire sous-cutané',\n colour: 'ICD-10--XI',\n },\n 'M00-M99': {\n en: 'Musculoskeletal system and connective tissue',\n fr: 'Système ostéo-articulaire, des muscles et du tissu conjonctif',\n colour: 'ICD-10--XII',\n },\n 'N00-N99': {\n en: 'Genitourinary system',\n fr: 'Appareil génito-urinaire',\n colour: 'ICD-10--XIII',\n },\n 'O00-O99': {\n en: 'Pregnancy, childbirth and the puerperium',\n fr: 'Grossesse, accouchement et puerpéralité',\n colour: 'ICD-10--XIV',\n },\n 'P00-P99': {\n en: 'Perinatal period conditions',\n fr: 'Affections périnatale',\n colour: 'ICD-10--XV',\n },\n 'Q00-Q99': {\n en: 'Congenital malformations, deformations and chromosomal abnormalities',\n fr: 'Malformations congénitales et anomalies chromosomiques',\n colour: 'ICD-10--XVI',\n },\n 'R00-R69': {\n en: 'Symptoms and signs',\n fr: 'Symptômes et signes',\n colour: 'ICD-10--other',\n },\n 'R70-R94': {\n en: 'Abnormal clinical and laboratory findings',\n fr: 'Examens cliniques et laboratoires anormaux',\n colour: 'ICD-10--other',\n },\n 'R95-R99': {\n en: 'Ill-defined and unknown causes of mortality',\n fr: 'Cause de décès mal-définie ou inconnue',\n colour: 'ICD-10--other',\n },\n 'S00-T99': {\n en: 'Injuries & poisoning',\n fr: 'Traumato & toxicologie',\n colour: 'ICD-10--other',\n },\n 'U00-Y99': { en: 'Unsorted', fr: 'Non-classé', colour: 'ICD-10--other' },\n 'Z00-Z99': {\n en: 'General health status',\n fr: 'Etat général',\n colour: 'ICD-10--other',\n },\n}\n","export default {\n A: { en: 'General and unspecified', colour: 'ICPC-2--A' },\n B: {\n en: 'Blood, blood forming organs, lymphatics, spleen',\n colour: 'ICPC-2--B',\n },\n D: { en: 'Digestive', colour: 'ICPC-2--D' },\n F: { en: 'Eye', colour: 'ICPC-2--F' },\n H: { en: 'Ear', colour: 'ICPC-2--H' },\n K: { en: 'Circulatory', colour: 'ICPC-2--K' },\n L: { en: 'Musculoskeletal', colour: 'ICPC-2--L' },\n N: { en: 'Neurological', colour: 'ICPC-2--N' },\n P: { en: 'Psychological', colour: 'ICPC-2--P' },\n R: { en: 'Respiratory', colour: 'ICPC-2--R' },\n S: { en: 'Skin', colour: 'ICPC-2--S' },\n T: { en: 'Endocrine, metabolic and nutritional', colour: 'ICPC-2--T' },\n U: { en: 'Urology', colour: 'ICPC-2--U' },\n W: { en: 'Pregnancy, childbirth, family planning', colour: 'ICPC-2--W' },\n X: { en: 'Female genital system and breast', colour: 'ICPC-2--X' },\n Y: { en: 'Male genital system', colour: 'ICPC-2--Y' },\n Z: { en: 'Social problems', colour: 'ICPC-2--Z' },\n}\n","import { StorageEntryKeysFactory } from './StorageEntryKeysFactory'\nimport { fingerprintIsV1, fingerprintIsV2 } from '../crypto/utils'\n\n/**\n * Default implementation for {@link StorageEntryKeysFactory}, compatible with legacy local storage keys.\n */\nexport class DefaultStorageEntryKeysFactory implements StorageEntryKeysFactory {\n cachedRecoveredKeypairOfDataOwner(dataOwnerId: string, publicKeyFingerprint: string): string {\n if (!fingerprintIsV2(publicKeyFingerprint) && !fingerprintIsV1(publicKeyFingerprint))\n throw new Error(`Invalid key fingerprint: ${publicKeyFingerprint}`)\n return `org.taktik.icure.rsa.recovered.${dataOwnerId}.${publicKeyFingerprint}`\n }\n\n deviceKeypairOfDataOwner(dataOwnerId: string, publicKeyFingerprint: string): string {\n if (!fingerprintIsV2(publicKeyFingerprint) && !fingerprintIsV1(publicKeyFingerprint))\n throw new Error(`Invalid key fingerprint: ${publicKeyFingerprint}`)\n return `org.taktik.icure.rsa.device.${dataOwnerId}.${publicKeyFingerprint}`\n }\n\n selfPublicKeysVerificationCacheForDataOwner(dataOwnerId: string): string {\n return `org.taktik.icure.rsa.${dataOwnerId}.verification.self`\n }\n\n signatureKeyForDataOwner(dataOwnerId: string): string {\n return `org.taktik.icure.rsa.sign.${dataOwnerId}.self`\n }\n\n signatureVerificationKeyForDataOwner(dataOwnerId: string, publicKeyFingerprint: string): string {\n return `org.taktik.icure.rsa.sign.verify.${dataOwnerId}.${publicKeyFingerprint}`\n }\n}\n","import { KeyStorageFacade } from './KeyStorageFacade'\nimport { StorageFacade } from './StorageFacade'\nimport { StorageEntryKeysFactory } from './StorageEntryKeysFactory'\nimport { KeyPair } from '../crypto/RSA'\nimport { fingerprintV1 } from '../crypto/utils'\n\n/**\n * @internal This class is meant for internal use only and may be changed without notice.\n * Simplifies access to the storage facades for iCure-specific data storage.\n */\nexport class IcureStorageFacade {\n private readonly keys: KeyStorageFacade\n private readonly data: StorageFacade\n private readonly entryFor: StorageEntryKeysFactory\n\n constructor(keyStorage: KeyStorageFacade, storage: StorageFacade, entryKeysFactory: StorageEntryKeysFactory) {\n this.keys = keyStorage\n this.data = storage\n this.entryFor = entryKeysFactory\n }\n\n /**\n * Saves a key pair for the data owner.\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of the public key of the pair.\n * @param keyPair a key pair of the data owner.\n * @param isDevice true if the key was generated on this device.\n */\n async saveKey(dataOwnerId: string, publicKeyFingerprint: string, keyPair: KeyPair, isDevice: boolean): Promise {\n const key = isDevice\n ? this.entryFor.deviceKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint)\n : this.entryFor.cachedRecoveredKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint)\n await this.keys.storeKeyPair(key, keyPair)\n }\n\n /**\n * Get an existing key pair for the data owner.\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of a public key of the data owner.\n * @param legacyPublicKey the legacy public key of the data owner, if present (only used to know if we should search for the key in 'legacy' storage\n * locations.\n * @return the keypair and if the key was generated on this device or undefined if the key pair could not be found.\n */\n async loadKey(\n dataOwnerId: string,\n publicKeyFingerprint: string,\n legacyPublicKey: string | undefined\n ): Promise<{ pair: KeyPair; isDevice: boolean } | undefined> {\n const deviceKey =\n (await this.keys.getKeypair(this.entryFor.deviceKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint))) ??\n (await this.keys.getKeypair(`org.taktik.icure.rsa.${dataOwnerId}.${publicKeyFingerprint}`)) ??\n (!!legacyPublicKey && fingerprintV1(legacyPublicKey) === publicKeyFingerprint\n ? await this.keys.getKeypair(`org.taktik.icure.rsa.${dataOwnerId}`)\n : undefined)\n if (deviceKey) return { pair: deviceKey, isDevice: true }\n const cachedKey = await this.keys.getKeypair(this.entryFor.cachedRecoveredKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint))\n if (cachedKey) return { pair: cachedKey, isDevice: false }\n return undefined\n }\n\n /**\n * Save the results of public key verification. If there were already results stored the entries will be merged. In case of conflicts the new\n * {@link verificationDetails} take priority over the stored data.\n * @param dataOwnerId id of a data owner.\n * @param verificationDetails results of verification, associates key fingerprints to true if they were verified by the user or false otherwise.\n * @return the updated keys\n */\n async saveSelfVerifiedKeys(\n dataOwnerId: string,\n verificationDetails: { [keyFingerprint: string]: boolean }\n ): Promise<{ [keyFingerprint: string]: boolean }> {\n const updated = {\n ...(await this.loadSelfVerifiedKeys(dataOwnerId)),\n ...verificationDetails,\n }\n await this.data.setItem(this.entryFor.selfPublicKeysVerificationCacheForDataOwner(dataOwnerId), JSON.stringify(updated))\n return updated\n }\n\n /**\n * Get the last saved results of public key verification.\n * @param dataOwnerId id of a data owner.\n * @return saved results of verification, associates key fingerprints to true if they were verified by the user or false otherwise. If no results\n * were saved returns an empty object instead.\n * @throws if the stored results are not in a valid format.\n */\n async loadSelfVerifiedKeys(dataOwnerId: string): Promise<{ [keyFingerprint: string]: boolean }> {\n const dataString = await this.data.getItem(this.entryFor.selfPublicKeysVerificationCacheForDataOwner(dataOwnerId))\n if (dataString) {\n const parsed = JSON.parse(dataString)\n Object.entries(parsed).forEach(([k, v]) => {\n if (v !== true && v !== false) throw new Error(`Unexpected entry ${k}:${v}`)\n })\n return parsed\n } else return {}\n }\n\n /**\n * Saves a signature and verification key pair. Overrides previously saved signature keys (but keeps signature verification keys).\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of the public key of the pair.\n * @param keyPair the key pair to save.\n */\n async saveSignatureKeyPair(dataOwnerId: string, publicKeyFingerprint: string, keyPair: KeyPair): Promise {\n await this.keys.storeKeyPair(this.entryFor.signatureKeyForDataOwner(dataOwnerId), keyPair)\n await this.keys.storePublicKey(this.entryFor.signatureVerificationKeyForDataOwner(dataOwnerId, publicKeyFingerprint), keyPair.publicKey)\n }\n\n /**\n * Loads the signature key for the data owner.\n * @param dataOwnerId id of the data owner with the key.\n * @return the signature key for the data owner or undefined if there is no signature key stored.\n */\n async loadSignatureKey(dataOwnerId: string): Promise | undefined> {\n return await this.keys.getKeypair(this.entryFor.signatureKeyForDataOwner(dataOwnerId))\n }\n\n /**\n * Loads the signature verification key for a data owner with the provided fingerprint.\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of the verification key.\n * @return the requested signature verification key or undefined if the key could not be found.\n */\n async loadSignatureVerificationKey(dataOwnerId: string, publicKeyFingerprint: string): Promise {\n return await this.keys.getPublicKey(this.entryFor.signatureVerificationKeyForDataOwner(dataOwnerId, publicKeyFingerprint))\n }\n}\n","import { StorageFacade } from './StorageFacade'\nimport { KeyStorageFacade } from './KeyStorageFacade'\n\nexport class KeyStorageImpl implements KeyStorageFacade {\n private readonly _storage: StorageFacade\n\n constructor(storage: StorageFacade) {\n this._storage = storage\n }\n\n async deleteKeypair(key: string): Promise {\n return await this._storage.removeItem(key)\n }\n\n private async getPartialKeyPair(key: string): Promise<{ publicKey?: JsonWebKey; privateKey?: JsonWebKey } | undefined> {\n const loaded = await this._storage.getItem(key)\n if (!loaded) return undefined\n const keyPair = JSON.parse(loaded)\n const res: { publicKey?: JsonWebKey; privateKey?: JsonWebKey } = {}\n if (keyPair.hasOwnProperty('publicKey')) res['publicKey'] = keyPair['publicKey']\n if (keyPair.hasOwnProperty('privateKey')) res['privateKey'] = keyPair['privateKey']\n return res\n }\n\n async getKeypair(key: string): Promise<{ publicKey: JsonWebKey; privateKey: JsonWebKey } | undefined> {\n const partial = await this.getPartialKeyPair(key)\n if (!partial || !partial.publicKey || !partial.privateKey) return undefined\n return { publicKey: partial.publicKey, privateKey: partial.privateKey }\n }\n\n async getPrivateKey(key: string): Promise {\n return this.getPartialKeyPair(key).then((partial) => partial?.privateKey)\n }\n\n async getPublicKey(key: string): Promise {\n return this.getPartialKeyPair(key).then((partial) => partial?.publicKey)\n }\n\n async storeKeyPair(key: string, keyPair: { publicKey: JsonWebKey; privateKey: JsonWebKey }): Promise {\n return await this._storage.setItem(key, JSON.stringify(keyPair))\n }\n\n async storePublicKey(key: string, publicKey: JsonWebKey): Promise {\n return await this._storage.setItem(key, JSON.stringify({ publicKey }))\n }\n\n async storePrivateKey(key: string, privateKey: JsonWebKey): Promise {\n return await this._storage.setItem(key, JSON.stringify({ privateKey }))\n }\n}\n","import { StorageFacade } from './StorageFacade'\n\nexport class LocalStorageImpl implements StorageFacade {\n async getItem(key: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.getItem(key) ?? undefined\n }\n\n async removeItem(key: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.removeItem(key)\n }\n\n async setItem(key: string, valueToStore: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.setItem(key, valueToStore)\n }\n}\n","/**\n * Names of all possible encrypted entity types.\n */\nimport { EncryptedEntity, EncryptedEntityStub } from '../../icc-api/model/models'\n\nexport enum EntityWithDelegationTypeName {\n Article = 'Article',\n AccessLog = 'AccessLog',\n CalendarItem = 'CalendarItem',\n Classification = 'Classification',\n Contact = 'Contact',\n Document = 'Document',\n Form = 'Form',\n HealthElement = 'HealthElement',\n Invoice = 'Invoice',\n MaintenanceTask = 'MaintenanceTask',\n Message = 'Message',\n Patient = 'Patient',\n Receipt = 'Receipt',\n TimeTable = 'TimeTable',\n Topic = 'Topic',\n}\n\nexport const entityWithDelegationTypeNames: Set = new Set([\n EntityWithDelegationTypeName.Article,\n EntityWithDelegationTypeName.AccessLog,\n EntityWithDelegationTypeName.CalendarItem,\n EntityWithDelegationTypeName.Classification,\n EntityWithDelegationTypeName.Contact,\n EntityWithDelegationTypeName.Document,\n EntityWithDelegationTypeName.Form,\n EntityWithDelegationTypeName.HealthElement,\n EntityWithDelegationTypeName.Invoice,\n EntityWithDelegationTypeName.MaintenanceTask,\n EntityWithDelegationTypeName.Message,\n EntityWithDelegationTypeName.Patient,\n EntityWithDelegationTypeName.Receipt,\n EntityWithDelegationTypeName.TimeTable,\n])\n\n/**\n * Type containing information on an entity and its type. If the entity is a stub (EncryptedEntityStub or IcureStub) the type should refer to the\n * original entity from which the stub was extracted.\n */\nexport type EncryptedEntityWithType = { entity: EncryptedEntityStub | EncryptedEntity; type: EntityWithDelegationTypeName }\n\n/**\n * @internal this function is meant for internal use only and may be changed without notice\n * Gets the class of an encrypted entity. Throws error if the class can't be retrieved.\n * @param entity the entity object\n * @param declaredClassName the declared type of the entity, to use as a fallback in case the original class name can't be retrieved (for example\n * due to the use of minified code).\n * @return the class of the encrypted entity\n */\nexport function encryptedEntityClassOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n declaredClassName: EntityWithDelegationTypeName | undefined\n): EntityWithDelegationTypeName {\n const entityClass = tryGetEncryptedEntityClassOf(entity, declaredClassName)\n if (entityClass) {\n return entityClass\n } else\n throw new Error(\n `No valid encrypted entity class name (constructor: \"${entity.constructor.name}\",` +\n `declared: ${declaredClassName ? '\"' + declaredClassName + '\"' : 'undefined'}).` +\n `Please specify a valid class name.\\nValid class names are ${Array.from(entityWithDelegationTypeNames)}.`\n )\n}\n\n/**\n * @internal this function is meant for internal use only and may be changed without notice\n * Gets the class of an encrypted entity. Returns undefined if the class can't be retrieved.\n * @param entity the entity object\n * @param declaredClassName the declared type of the entity, to use as a fallback in case the original class name can't be retrieved (for example\n * due to the use of minified code).\n * @return the class of the encrypted entity\n */\nexport function tryGetEncryptedEntityClassOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n declaredClassName: EntityWithDelegationTypeName | undefined\n): EntityWithDelegationTypeName | undefined {\n const _type = (entity as any)._type\n if (_type && (typeof _type === 'string' || _type instanceof String)) {\n const splitType = _type.split('.')\n const candidate = splitType[splitType.length - 1]\n if (entityWithDelegationTypeNames.has(candidate as any)) {\n if (declaredClassName && declaredClassName !== candidate)\n throw new Error(`Declared type name \"${declaredClassName}\" does not match type detected from field \\`_type:\"${_type}\"\\` (\"${candidate}\")`)\n return candidate as EntityWithDelegationTypeName\n }\n }\n if (!declaredClassName)\n console.warn(\n 'Usage of a delegation-related method without specifying the entity class name, and input object does not have a `_type` value. ' +\n 'Will use constructor name as fallback, but this may not work with minified code.'\n )\n const constructorName = entity.constructor?.name\n if (entityWithDelegationTypeNames.has(constructorName as any)) {\n if (declaredClassName && declaredClassName !== constructorName)\n throw new Error(`Declared type name \"${declaredClassName}\" does not match valid constructor name \"${constructorName}\"`)\n return constructorName as EntityWithDelegationTypeName\n } else if (declaredClassName && entityWithDelegationTypeNames.has(declaredClassName)) {\n return declaredClassName\n } else return undefined\n}\n","/**\n * Represents the result of a share operation.\n */\nimport { EntityShareRequest } from '../../icc-api/model/requests/EntityShareRequest'\nimport RequestedPermissionEnum = EntityShareRequest.RequestedPermissionEnum\n\nexport interface ShareResult {\n /**\n * Return the updated entity if the share operation was successful, else throw an error.\n */\n get updatedEntityOrThrow(): T\n\n /**\n * Map the result of a successful share operation to another type.\n * @param f The mapping function.\n * @return If the share result was successful a new share result containing the result of the mapping function, else the original share result.\n */\n mapSuccess(f: (t: T) => U): ShareResult\n\n /**\n * Async version of {@link mapSuccess}.\n */\n mapSuccessAsync(f: (t: T) => Promise): Promise>\n}\n\n/**\n * Represents the result of a successful share operation.\n */\nexport class ShareResultSuccess implements ShareResult {\n /**\n * @param updatedEntity The entity with updated encrypted metadata.\n */\n constructor(private readonly updatedEntity: T) {}\n\n get updatedEntityOrThrow(): T {\n return this.updatedEntity\n }\n\n mapSuccess(f: (t: T) => U): ShareResult {\n return new ShareResultSuccess(f(this.updatedEntity))\n }\n\n async mapSuccessAsync(f: (t: T) => Promise): Promise> {\n return new ShareResultSuccess(await f(this.updatedEntity))\n }\n}\n\n/**\n * Represents the result of a failed share operation.\n */\nexport class ShareResultFailure implements ShareResult {\n /**\n * @param errorsDetails Details of the errors, as returned by the server.\n * @param message Human-friendly error message, should provide additional context that the server may not have had, for example if the original user\n * request was modified by the crypto API for migration purposes.\n */\n constructor(\n readonly errorsDetails: {\n entityId: string\n delegateId: string\n request?: {\n shareSecretIds?: string[]\n shareEncryptionKeys?: string[]\n shareOwningEntityIds?: string[]\n requestedPermissions: RequestedPermissionEnum\n }\n updatedForMigration: boolean\n code?: number\n reason?: string\n }[],\n readonly message: string\n ) {}\n\n get updatedEntityOrThrow(): never {\n console.error(`Error when sharing an entity. Details: ${JSON.stringify(this.errorsDetails)}`)\n throw new Error(this.message)\n }\n\n mapSuccess(f: (t: never) => U): ShareResult {\n return this\n }\n\n mapSuccessAsync(f: (t: never) => Promise): Promise> {\n return Promise.resolve(this)\n }\n}\n","// Copyright 2018 AJ ONeal. All rights reserved\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Ported to Typescript by iCure sa */\n\nconst numToHex = function (d: number): string {\n const ds = d.toString(16)\n if (ds.length % 2) {\n return '0' + ds\n }\n return ds\n}\n\n//\n// Packer\n//\n// Almost every ASN.1 type that's important for CSR\n// can be represented generically with only a few rules.\nexport function packOther(...args: string[]) {\n const typ: string = args.shift()!\n const str: string = args.join('').replace(/\\s+/g, '').toLowerCase()\n var len: number = str.length / 2\n var lenlen = 0\n var hex = typ\n\n // We can't have an odd number of hex chars\n if (len !== Math.round(len)) {\n throw new Error('invalid hex')\n }\n\n // The first byte of any ASN.1 sequence is the type (Sequence, Integer, etc)\n // The second byte is either the size of the value, or the size of its size\n // 1. If the second byte is < 0x80 (128) it is considered the size\n // 2. If it is > 0x80 then it describes the number of bytes of the size\n // ex: 0x82 means the next 2 bytes describe the size of the value\n // 3. The special case of exactly 0x80 is \"indefinite\" length (to end-of-file)\n if (len > 127) {\n lenlen += 1\n while (len > 255) {\n lenlen += 1\n len = len >> 8\n }\n }\n\n if (lenlen) {\n hex += numToHex(0x80 + lenlen)\n }\n return hex + numToHex(str.length / 2) + str\n}\n\n// The Integer type has some special rules\nfunction packUInt(...arr: string[]) {\n const str = arr.join('')\n const first = parseInt(str.slice(0, 2), 16)\n\n // If the first byte is 0x80 or greater, the number is considered negative\n // Therefore we add a '00' prefix if the 0x80 bit is set\n return 0x80 & first ? packOther('02', '00' + str) : packOther('02', str)\n}\n\n// The Bit String type also has a special rule\nfunction packBitStr(...arr: string[]) {\n var str = arr.join('')\n // '00' is a mask of how many bits of the next byte to ignore\n return packOther('03', '00' + str)\n}\n\nexport type Asn1Item = number | string | Asn1Item[]\n\nexport function pack(arr: Asn1Item[]) {\n var typ = numToHex(arr[0] as number)\n var str = ''\n if (arr[1]) {\n if (Array.isArray(arr[1])) {\n arr[1].forEach((a) => (str += pack(a as Asn1Item[])))\n } else if ('string' === typeof arr[1]) {\n str = arr[1]\n } else {\n throw new Error('unexpected item')\n }\n }\n const packed = '03' === typ ? packBitStr(str) : '02' === typ ? packUInt(str) : packOther(typ, str)\n\n return packed\n}\n","// Copyright 2018 AJ ONeal. All rights reserved\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n//\n// Parser\n//\n\n// Although I've only seen 9 max in https certificates themselves,\n// but each domain list could have up to 100\nconst ELOOPN = 102\nconst ELOOP = 'ujs Error: iterated over ' + ELOOPN + '+ elements (probably a malformed file)'\n// I've seen https certificates go 29 deep\nconst EDEEPN = 60\nconst EDEEP = 'ujs Error: element nested ' + EDEEPN + '+ layers deep (probably a malformed file)'\n// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)\n// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e Value Array? (0x82)\n// Bit String (0x03) and Octet String (0x04) may be values or containers\n// Sometimes Bit String is used as a container (RSA Pub Spki)\nconst CTYPES = [0x30, 0x31, 0xa0, 0xa1]\nconst VTYPES = [0x01, 0x02, 0x05, 0x06, 0x0c, 0x82]\n\nconst numToHex = (d: number) => {\n const dh = d.toString(16)\n if (dh.length % 2) {\n return '0' + dh\n }\n return dh\n}\n\nconst bufToHex = (u8: Uint8Array) => {\n var hex = []\n var i, h\n var len = u8.byteLength || u8.length\n\n for (i = 0; i < len; i += 1) {\n h = u8[i].toString(16)\n if (h.length % 2) {\n h = '0' + h\n }\n hex.push(h)\n }\n return hex.join('').toLowerCase()\n}\n\nconst _replacer = function (k: string, v: any) {\n if ('type' === k) {\n return '0x' + numToHex(v)\n }\n if (v && 'value' === k) {\n return '0x' + bufToHex(v.data || v)\n }\n return v\n}\n\nexport type Asn1 = { type: number; lengthSize: number; length: number; children?: Asn1[]; value?: Uint8Array }\n\nexport function parseAsn1(buf: Uint8Array, depth: number[] = [], eager: boolean = false): Asn1 {\n if (depth.length >= EDEEPN) {\n throw new Error(EDEEP)\n }\n\n var index = 2 // we know, at minimum, data starts after type (0) and lengthSize (1)\n var asn1: Asn1 = { type: buf[0], lengthSize: 0, length: buf[1] }\n var child\n var iters = 0\n var adjust = 0\n var adjustedLen: number\n\n // Determine how many bytes the length uses, and what it is\n if (0x80 & asn1.length) {\n asn1.lengthSize = 0x7f & asn1.length\n // I think that buf->hex->int solves the problem of Endianness... not sure\n asn1.length = parseInt(bufToHex(buf.slice(index, index + asn1.lengthSize)), 16)\n index += asn1.lengthSize\n }\n\n // High-order bit Integers have a leading 0x00 to signify that they are positive.\n // Bit Streams use the first byte to signify padding, which x.509 doesn't use.\n if (0x00 === buf[index] && (0x02 === asn1.type || 0x03 === asn1.type)) {\n // However, 0x00 on its own is a valid number\n if (asn1.length > 1) {\n index += 1\n adjust = -1\n }\n }\n adjustedLen = asn1.length + adjust\n\n function parseChildren(eager: boolean) {\n asn1.children = []\n //console.warn('1 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', 0);\n while (iters < ELOOPN && index < 2 + asn1.length + asn1.lengthSize) {\n iters += 1\n depth.length += 1\n child = parseAsn1(buf.slice(index, index + adjustedLen), depth, eager)\n depth.length -= 1\n // The numbers don't match up exactly and I don't remember why...\n // probably something with adjustedLen or some such, but the tests pass\n index += 2 + child.lengthSize + child.length\n //console.warn('2 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', (2 + child.lengthSize + child.length));\n if (index > 2 + asn1.lengthSize + asn1.length) {\n if (!eager) {\n console.error(JSON.stringify(asn1, _replacer, 2))\n }\n throw new Error(\n 'Parse error: child value length (' +\n child.length +\n ') is greater than remaining parent length (' +\n (asn1.length - index) +\n ' = ' +\n asn1.length +\n ' - ' +\n index +\n ')'\n )\n }\n asn1.children.push(child)\n //console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);\n }\n if (index !== 2 + asn1.lengthSize + asn1.length) {\n //console.warn('index:', index, 'length:', (2 + asn1.lengthSize + asn1.length));\n throw new Error('premature end-of-file')\n }\n if (iters >= ELOOPN) {\n throw new Error(ELOOP)\n }\n\n delete asn1.value\n return asn1\n }\n\n // Recurse into types that are _always_ containers\n if (-1 !== CTYPES.indexOf(asn1.type)) {\n return parseChildren(eager)\n }\n\n // Return types that are _always_ values\n asn1.value = buf.slice(index, index + adjustedLen)\n if (-1 !== VTYPES.indexOf(asn1.type)) {\n return asn1\n }\n\n // For ambigious / unknown types, recurse and return on failure\n // (and return child array size to zero)\n try {\n return parseChildren(true)\n } catch (e) {\n asn1.children && (asn1.children.length = 0)\n return asn1\n }\n}\n","import { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b } from '../../icc-api/model/ModelHelper'\nexport { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b }\n\nconst textDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null\nconst textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null\n\nexport function utf8_2ua(str: string): Uint8Array {\n if (textEncoder) {\n return textEncoder.encode(str)\n }\n\n const utf8 = new Uint8Array(4 * str.length)\n let j = 0\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i)\n if (charcode < 0x80) {\n utf8.set([charcode], j++)\n } else if (charcode < 0x800) {\n utf8.set([0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f)], j)\n j += 2\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.set([0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 3\n } else {\n i++\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff))\n utf8.set([0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 4\n }\n }\n return utf8.subarray(0, j)\n}\n\n/**\n * Uint8Array/ArrayBuffer to utf-8 strring\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} a UTF-8 encoded string\n */\nexport function ua2utf8(_ua: Uint8Array | ArrayBuffer): string {\n if (textDecoder) {\n // if _ua is undefined, imitate the JS implementation below which returns an empty string\n return _ua ? textDecoder.decode(_ua) : ''\n }\n\n let out, i, len, c, u\n let char2, char3, char4\n\n // avoid applying the Uint8Array constructor: on ArrayBuffer it creates a\n // view but on Uint8Array it creates a copy\n const array = ArrayBuffer.isView(_ua) ? _ua : new Uint8Array(_ua)\n\n out = ''\n len = array.length || array.byteLength\n i = 0\n while (i < len) {\n c = array[i++]\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c)\n break\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++]\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n case 15:\n // 1111 xxxx 10xx xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n char4 = array[i++]\n u = ((c & 0x07) << 18) | ((char2 & 0x3f) << 12) | ((char3 & 0x3f) << 6) | (((char4 & 0x3f) << 0) - 0x10000)\n out += String.fromCharCode(0xd800 + (u >> 10))\n out += String.fromCharCode(0xdc00 + (u & 1023))\n break\n }\n }\n\n return out\n}\n\nexport function hex2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length / 2)\n s = s.toLowerCase()\n for (let i = 0; i < s.length; i += 2) {\n ua[i / 2] =\n (s.charCodeAt(i) < 58 ? s.charCodeAt(i) - 48 : s.charCodeAt(i) - 87) * 16 +\n (s.charCodeAt(i + 1) < 58 ? s.charCodeAt(i + 1) - 48 : s.charCodeAt(i + 1) - 87)\n }\n return ua\n}\n\n/**\n * Uint8Array/ArrayBuffer to hex String\n *\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} Hex String\n */\nexport function ua2hex(_ua: Uint8Array | ArrayBuffer): string {\n let s = ''\n const ua = new Uint8Array(_ua)\n for (let i = 0; i < ua.length; i++) {\n const hhb = (ua[i] & 0xf0) >> 4\n const lhb = ua[i] & 0x0f\n s += String.fromCharCode(hhb > 9 ? hhb + 87 : hhb + 48)\n s += String.fromCharCode(lhb > 9 ? lhb + 87 : lhb + 48)\n }\n\n return s\n}\n\nexport function b64_2uas(s: string): Array {\n const sliceSize = 1024\n const byteCharacters = a2b(s)\n const bytesLength = byteCharacters.length\n const slicesCount = Math.ceil(bytesLength / sliceSize)\n const byteArrays = new Array(slicesCount)\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize\n const end = Math.min(begin + sliceSize, bytesLength)\n\n const bytes = new Array(end - begin)\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0)\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes)\n }\n return byteArrays\n}\n\nexport function ua2b64Url(ua: Uint8Array | ArrayBuffer): string {\n return ua2b64(ua).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n}\n\nexport function b64Url2ua(ua: string): ArrayBuffer {\n return b64_2ua(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''))\n}\n\nexport function hex2string(hexStr: string): string {\n return ua2string(hex2ua(hexStr))\n}\n\nexport function string2hex(text: string): string {\n return ua2hex(string2ua(text))\n}\n\nexport function concat_uas(ua1: Uint8Array, ua2: Uint8Array): Uint8Array {\n const newBuffer = new Uint8Array(ua1.length + ua2.length)\n newBuffer.set(ua1, 0)\n newBuffer.set(ua2, ua1.length)\n return newBuffer\n}\n","import * as _ from 'lodash'\n\nimport { Code } from '../../icc-api/model/Code'\n\n/**\n * Normalizes the code's four main fields (type, code, version and id). The first three are considered to be\n * authoritative, while the id is a pure function of them. The authoritative fields are filled in from the id if\n * missing, or the version is set to '1' if it is the only missing authoritative field. The id is then rederived from\n * the three fields.\n * @param code The code to normalize.\n * @returns A shallow copy of the input with its type, code, version and id normalized.\n */\nexport function normalizeCode(code: Code): Code {\n code = _.clone(code)\n\n if (code.type && code.code && code.version) {\n // do nothing, we all have the authoritative fields we need\n } else if (code.id) {\n // reconstruct the authoritative fields from the id\n const [idType, idCode, idVersion, ...idRest] = code.id.split('|')\n if (idType && idCode && idVersion && idRest.length === 0) {\n if (!code.type) code.type = idType\n if (!code.code) code.code = idCode\n if (!code.version) code.version = idVersion\n } else {\n throw new Error(`attempted to normalize from a malformed code id \"${code.id}\"`)\n }\n } else if (code.type && code.code && !code.version) {\n // we can provide a default value\n code.version = '1'\n } else {\n throw new Error('could not reconstruct the code')\n }\n\n // Recompute the id to ensure that it matches the reconstructed code.\n code.id = `${code.type}|${code.code}|${code.version}`\n\n return code\n}\n","/**\n * Check if two sets are equals (they contain the same elements). Will not work if the content can't be compared by `==`.\n */\nexport function setEquals(setA: Set, setB: Set): boolean {\n if (setA.size != setB.size) return false\n return Array.from(setA).every((x) => setB.has(x))\n}\n\n/**\n * Check if two arrays are equals (they contain the same elements).\n */\nexport function arrayEquals(arrayA: T[], arrayB: T[]): boolean {\n if (arrayA.length != arrayB.length) return false\n for (let i = 0; i < arrayA.length; ++i) {\n if (!anyEquals(arrayA[i], arrayB[i])) return false\n }\n return true\n}\n\n/**\n * Check if two elements are equals (they contain the same elements).\n */\nexport function anyEquals(anyA: any, anyB: any): boolean {\n //Test if object is array\n if (Array.isArray(anyA) && Array.isArray(anyB)) {\n return arrayEquals(anyA, anyB)\n } /*Test if objects are set */ else if (anyA instanceof Set && anyB instanceof Set) {\n return setEquals(anyA, anyB)\n } else if (typeof anyA === 'object' && typeof anyB === 'object') {\n return objectEquals(anyA, anyB)\n }\n return anyA === anyB\n}\n\n/**\n * Check if two objects are equals (by comparing the properties in a deep way).\n * @param objectA\n * @param objectB\n * @param ignoredProperties\n */\nexport function objectEquals(objectA: T, objectB: T, ignoredProperties?: string[]): boolean {\n const missingInA = Object.keys(objectB)\n .filter((key) => !ignoredProperties?.includes(key))\n .filter((key) => !Object.keys(objectA).includes(key))\n .filter((key) => objectB[key] !== undefined && objectB[key] !== null)\n\n if (missingInA.length > 0) return false\n\n const missingInB = Object.keys(objectA)\n .filter((key) => !ignoredProperties?.includes(key))\n .filter((key) => !Object.keys(objectB).includes(key))\n .filter((key) => objectA[key] !== undefined && objectA[key] !== null)\n\n if (missingInB.length > 0) return false\n\n for (let i = 0, keys = Object.keys(objectA); i < keys.length; i++) {\n const key = keys[i]\n if (ignoredProperties?.includes(key)) continue\n if (!anyEquals(objectA[key], objectB[key])) return false\n }\n\n return true\n}\n\n/**\n * Fully consumes an async generator and provides all results as an array.\n * @param generator an async generator.\n */\nexport async function asyncGeneratorToArray(generator: AsyncGenerator): Promise {\n const res = []\n let latest = await generator.next()\n while (!latest.done) {\n res.push(latest.value)\n latest = await generator.next()\n }\n return res\n}\n","import * as mm from 'moment'\nimport { Moment } from 'moment'\nimport * as _ from 'lodash'\nimport { a2b, b2a, b64Url2ua, hex2ua, string2ua, ua2b64Url, ua2hex, ua2string } from '../utils/binary-utils'\nimport { pack } from './asn1-packer'\nimport { parseAsn1 } from './asn1-parser'\nimport { KeyPair, ShaVersion } from '../crypto/RSA'\n\nexport function notConcurrent(concurrencyMap: { [key: string]: PromiseLike }, key: string, proc: () => PromiseLike): PromiseLike {\n const inFlight = concurrencyMap[key]\n if (!inFlight) {\n const newJob = (async () => {\n try {\n return await proc()\n } finally {\n delete concurrencyMap[key]\n }\n })()\n concurrencyMap[key] = newJob\n return newJob\n } else {\n return concurrencyMap[key].then(() => notConcurrent(concurrencyMap, key, proc))\n }\n}\n\nexport function jwk2pkcs8(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x02, '00'],\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]], // pragma: allowlist secret\n [\n 0x04,\n [\n [\n 0x30,\n [\n [0x02, '00'],\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n [0x02, ua2hex(b64Url2ua(jwk.d))],\n [0x02, ua2hex(b64Url2ua(jwk.p))],\n [0x02, ua2hex(b64Url2ua(jwk.q))],\n [0x02, ua2hex(b64Url2ua(jwk.dp))],\n [0x02, ua2hex(b64Url2ua(jwk.dq))],\n [0x02, ua2hex(b64Url2ua(jwk.qi))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function jwk2spki(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]], // pragma: allowlist secret\n [\n 0x03,\n [\n [\n 0x30,\n [\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function spkiToJwk(buf: Uint8Array, shaVersion: ShaVersion): { kty: string; alg: string; n: string; e: string; ext: boolean } {\n const asn1 = parseAsn1(new Uint8Array(buf))\n\n var modulus: Uint8Array | undefined = undefined\n var exponent: Uint8Array | undefined = undefined\n if (\n asn1.type === 0x30 &&\n asn1.children?.[0]?.type === 0x30 &&\n asn1.children?.[0]?.children?.[0]?.type === 0x06 &&\n ua2hex(asn1.children?.[0]?.children?.[0]?.value ?? new Uint8Array(0)) === '2a864886f70d010101' // pragma: allowlist secret\n ) {\n modulus = asn1.children?.[1]?.children?.[0]?.children?.[0]?.value\n exponent = asn1.children?.[1]?.children?.[0]?.children?.[1]?.value\n } else if (asn1.type === 0x30 && asn1.children?.[0]?.type === 0x02 && asn1.children?.[1]?.type === 0x02) {\n modulus = asn1.children?.[0]?.value\n exponent = asn1.children?.[1]?.value\n }\n\n if (!modulus || !exponent) {\n throw new Error('Invalid spki format')\n }\n return {\n kty: 'RSA',\n alg: shaVersion === 'sha-256' ? 'RSA-OAEP-256' : 'RSA-OAEP',\n ext: true,\n n: ua2b64Url(minimalRep(modulus)),\n e: ua2b64Url(minimalRep(exponent)),\n }\n}\n\nexport function pkcs8ToJwk(buf: Uint8Array | ArrayBuffer) {\n const parsed = parseAsn1(new Uint8Array(buf))\n const seq =\n parsed.children?.length === 3 && parsed.children[2].type === 0x04 && parsed.children[2].children?.length === 1\n ? parsed.children[2].children[0]\n : parsed\n return {\n kty: 'RSA',\n n: ua2b64Url(minimalRep(seq.children![1].value as Uint8Array)),\n e: ua2b64Url(minimalRep(seq.children![2].value as Uint8Array)),\n d: ua2b64Url(minimalRep(seq.children![3].value as Uint8Array)),\n p: ua2b64Url(minimalRep(seq.children![4].value as Uint8Array)),\n q: ua2b64Url(minimalRep(seq.children![5].value as Uint8Array)),\n dp: ua2b64Url(minimalRep(seq.children![6].value as Uint8Array)),\n dq: ua2b64Url(minimalRep(seq.children![7].value as Uint8Array)),\n qi: ua2b64Url(minimalRep(seq.children![8].value as Uint8Array)),\n }\n}\n\nfunction minimalRep(b: Uint8Array) {\n let i = 0\n while (b[i] === 0) {\n i++\n }\n return b.slice(i)\n}\n\n/**\n * Provide a view over the given Uint8Array where any trailing null bytes at\n * the end are truncated.\n *\n * This can be used to ignore null bytes at the end of a padded UTF-8 string\n * without needing to copy that string, assuming code point U+0000 is encoded\n * in one null byte according to standards rather than in a multi-byte\n * overlong form.\n */\nexport function truncateTrailingNulls(a: Uint8Array) {\n let end = a.byteLength - 1\n while (a[end] === 0 && end >= 0) {\n end--\n }\n // end is now either the last non-null position in a or -1; in the latter\n // case the returned array will have length 0.\n return a.subarray(0, end + 1)\n}\n\n/**\n *\n * @param buffer1 {Uint8Array}\n * @param buffer2{ Uint8Array}\n * @returns {ArrayBuffer}\n */\nexport function appendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer {\n const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength)\n tmp.set(new Uint8Array(buffer1), 0)\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength)\n return tmp.buffer as ArrayBuffer\n}\n\n//Convenience methods for dates management\nexport function after(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isAfter(moment(d2)!)\n}\n\nexport function before(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isBefore(moment(d2)!)\n}\n\nfunction moment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDDHHmmss')\n } else {\n return mm(epochOrLongCalendar)\n }\n}\n\n/**\n * Configuration for the encryption of an object.\n * @param topLevelFields the fields of the object to encrypt. All the fields will be encrypted in a single encryptedSelf field which is added to the\n * object.\n * @param nestedObjectsKeys the name of fields which are expected to contain a nested object (or undefined). Allows to specify\n */\nexport type EncryptedFieldsManifest = {\n topLevelFields: { fieldName: string; fieldPath: string }[]\n nestedObjectsKeys: {\n [objectFieldName: string]: EncryptedFieldsManifest\n }\n mapsValuesKeys: {\n [mapFieldName: string]: EncryptedFieldsManifest\n }\n arraysValuesKeys: {\n [arrayFieldName: string]: EncryptedFieldsManifest\n }\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n *\n * Parse the encrypted fields configuration for a specific entity type.\n *\n * ## Grammar\n *\n * The grammar for each encrypted field is the following:\n * ```\n * fieldName :=\n * regex([a-zA-Z_][a-zA-Z0-9_]+)\n * encryptedField :=\n * fieldName\n * | fieldName + (\".\" | \".*.\" | \"[].\") + encryptedField\n * ```\n *\n * This grammar allows you to specify the fields to encrypt for the object and recursively for nested objects.\n * - A string containing only a single `fieldName` will encrypt the field with the given name.\n * - A string starting with `fieldName.` allows to specify the encrypted fields of a nested object. The encrypted values of the\n * fields in the nested object will be saved in the nested object.\n * - A string starting with `fieldName.*.` treats `fieldName` as a map/dictionary data structure and allows to specify the encrypted fields of the\n * values of the map. Note that the values of the map must be objects as well. The encrypted content of each map value is stored in that value.\n * - A string starting with `fieldName[].` treats `fieldName` as an array and allows to specify the encrypted fields of the values of the array.\n * Note that the values of the array must be objects as well. The encrypted content of each array element is stored in that element.\n *\n * ## Example\n *\n * Consider the following object and encryption keys:\n * ```javascript\n * const obj = {\n * a: { x: 0, y: 1 },\n * b: \"hello\",\n * c: [ { public: \"a\", secret: \"b\" }, { public: \"c\", secret: \"d\" } ],\n * d: \"ok\",\n * e: {\n * info: \"something\",\n * private: \"secret\",\n * dataMap: {\n * \"en\": {\n * a: 1,\n * b: 2\n * },\n * \"fr\": {\n * a: 3,\n * b: 4\n * }\n * }\n * }\n * }\n * const encryptedFields = [\n * \"a\",\n * \"c[].secret\",\n * \"d\",\n * \"e.private\",\n * \"e.datamap.*.a\"\n * ]\n * ```\n * If you use them with the crypt method you will get the following result:\n * ```json\n * {\n * b: \"hello\",\n * c: [\n * { public: \"a\", encryptedSelf: \"...encrypted data of c[0]\" },\n * { public: \"c\", encryptedSelf: \"...encrypted data of c[1]\" }\n * ],\n * e: {\n * info: \"something\",\n * dataMap: {\n * \"en\": { b: 2, encryptedSelf: \"...encrypted data of e.dataMap['en']\" },\n * \"fr\": { b: 4, encryptedSelf: \"...encrypted data of e.dataMap['fr']\" }\n * },\n * encryptedSelf: \"...encrypted data of e\"\n * },\n * encryptedSelf: \"...encrypted data of obj\"\n * }\n * ```\n *\n * ## Shortened representation\n *\n * You can also group encrypted fields having the same prefix by concatenating to the prefix the JSON representation of an array of all the postfixes.\n * For example the following encrypted fields:\n * ```javascript\n * const encryptedFields = [\"a.b.c.d.e.f1\", \"a.b.c.d.e.f2\", \"a.b.c.d.e.f3\", \"a.b.c.d.e.f4\"]\n * ```\n * can be shortened to\n * ```javascript\n * const encryptedFields = ['a.b.c.d.e.[\"f1\",\"f2\",\"f3\",\"f4\"]'] // Note the use of single quotes to avoid escaping the double quotes\n * ```\n * If you use the shortened representation you may need to escape nested json representations. In that case the use of `JSON.stringify` is\n * recommended.\n *\n * @param encryptedFields\n * @param path\n */\nexport function parseEncryptedFields(encryptedFields: string[], path: string): EncryptedFieldsManifest {\n const groupedData = {\n topLevelFields: new Set(),\n nestedObjectsKeys: {} as { [objectFieldName: string]: string[] },\n mapsValuesKeys: {} as { [mapFieldName: string]: string[] },\n arraysValuesKeys: {} as { [arrayFieldName: string]: string[] },\n }\n const encryptedFieldRegex = /^([_a-zA-Z][_a-zA-Z0-9]*)(?:(\\.\\*\\.|\\[]\\.|\\.)(?:[_a-zA-Z].*|\\[.*]))?$/\n const addSubkeyToGroupedData = (\n currFieldName: string,\n currFieldSeparator: string,\n currEncryptedField: string,\n groupedDataKey: 'nestedObjectsKeys' | 'mapsValuesKeys' | 'arraysValuesKeys'\n ) => {\n const existingOrNew = groupedData[groupedDataKey][currFieldName] ?? (groupedData[groupedDataKey][currFieldName] = [])\n const subKey = currEncryptedField.slice(currFieldName.length + currFieldSeparator.length)\n if (subKey.startsWith('[')) {\n let parsedJson: any[]\n try {\n parsedJson = JSON.parse(subKey)\n } catch {\n throw new Error(`Invalid encrypted field ${path}${currEncryptedField} (not a valid JSON subkey)`)\n }\n if (Array.isArray(parsedJson) && parsedJson.every((x) => typeof x == 'string')) {\n parsedJson.forEach((x) => existingOrNew.push(x))\n } else throw new Error(`Invalid encrypted field ${path}${currEncryptedField} (not an array of strings)`)\n } else {\n existingOrNew.push(subKey)\n }\n }\n for (const currEncryptedField of encryptedFields) {\n const currFieldMatch = currEncryptedField.match(encryptedFieldRegex)\n if (!!currFieldMatch) {\n const currFieldName = currFieldMatch[1]\n const currFieldSeparator = currFieldMatch[2]\n if (!currFieldSeparator) {\n if (groupedData.topLevelFields.has(currFieldName)) throw new Error(`Duplicate encrypted field ${path}${currFieldName}`)\n if (\n !!groupedData.nestedObjectsKeys[currFieldName] ||\n !!groupedData.mapsValuesKeys[currFieldName] ||\n !!groupedData.arraysValuesKeys[currFieldName]\n )\n throw new Error(`Encrypted field appears multiple times as different nested types and or top-level-field: ${path}${currFieldName}`)\n groupedData.topLevelFields.add(currFieldName)\n } else if (currFieldSeparator == '.') {\n if (\n groupedData.topLevelFields.has(currFieldName) ||\n !!groupedData.mapsValuesKeys[currFieldName] ||\n !!groupedData.arraysValuesKeys[currFieldName]\n )\n throw new Error(`Encrypted field appears multiple times as different nested types and or top-level-field: ${path}${currFieldName}`)\n addSubkeyToGroupedData(currFieldName, currFieldSeparator, currEncryptedField, 'nestedObjectsKeys')\n } else if (currFieldSeparator == '.*.') {\n if (\n groupedData.topLevelFields.has(currFieldName) ||\n !!groupedData.nestedObjectsKeys[currFieldName] ||\n !!groupedData.arraysValuesKeys[currFieldName]\n )\n throw new Error(`Encrypted field appears multiple times as different nested types and or top-level-field: ${path}${currFieldName}`)\n addSubkeyToGroupedData(currFieldName, currFieldSeparator, currEncryptedField, 'mapsValuesKeys')\n } else if (currFieldSeparator == '[].') {\n if (\n groupedData.topLevelFields.has(currFieldName) ||\n !!groupedData.nestedObjectsKeys[currFieldName] ||\n !!groupedData.mapsValuesKeys[currFieldName]\n )\n throw new Error(`Encrypted field appears multiple times as different nested types and or top-level-field: ${path}${currFieldName}`)\n addSubkeyToGroupedData(currFieldName, currFieldSeparator, currEncryptedField, 'arraysValuesKeys')\n } else throw new Error(`Internal error: unknown separator ${currFieldSeparator} passed regex validation in ${path}${currEncryptedField}`)\n } else throw new Error(`Invalid encrypted field ${path}${currEncryptedField}`)\n }\n return {\n topLevelFields: Array.from(groupedData.topLevelFields).map((fieldName) => ({ fieldName, fieldPath: path + fieldName })),\n nestedObjectsKeys: Object.fromEntries(\n Object.entries(groupedData.nestedObjectsKeys).map(([fieldName, fieldNames]) => [\n fieldName,\n parseEncryptedFields(fieldNames, path + fieldName + '.'),\n ])\n ),\n mapsValuesKeys: Object.fromEntries(\n Object.entries(groupedData.mapsValuesKeys).map(([fieldName, fieldNames]) => [\n fieldName,\n parseEncryptedFields(fieldNames, path + fieldName + '.*.'),\n ])\n ),\n arraysValuesKeys: Object.fromEntries(\n Object.entries(groupedData.arraysValuesKeys).map(([fieldName, fieldNames]) => [\n fieldName,\n parseEncryptedFields(fieldNames, path + fieldName + '[].'),\n ])\n ),\n }\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n * Encrypt the object graph recursively. Generally return an updated SHALLOW copy, although some fields may be deep copied if they also needed to be\n * recursively encrypted.\n * @param obj the object to encrypt\n * @param cryptor takes in input an object consisting only of the fields to encrypt of obj, and returns the encrypted object.\n * @param keys the keys to encrypt for the\n * @param path path of the current object, used for error messages.\n * @return a shallow copy of the object with a new encryptedSelfField and without the encrypted fields.\n */\nexport async function encryptObject(\n obj: { [key: string]: any },\n cryptor: (obj: { [key: string]: any }) => Promise,\n keys: EncryptedFieldsManifest,\n path: string = 'obj'\n): Promise<{ [key: string]: any }> {\n const shallowClone = { ...obj }\n const currEncryptedFields: { [key: string]: any } = {}\n for (const { fieldName } of keys.topLevelFields) {\n const fieldValue = shallowClone[fieldName]\n if (fieldValue !== undefined) {\n // we keep null values\n currEncryptedFields[fieldName] = fieldValue\n delete shallowClone[fieldName]\n }\n }\n shallowClone['encryptedSelf'] = b2a(ua2string(await cryptor(currEncryptedFields)))\n for (const [fieldName, subKeys] of Object.entries(keys.nestedObjectsKeys)) {\n const fieldValue = shallowClone[fieldName]\n if (fieldValue !== undefined && fieldValue !== null) {\n if (!isPojo(fieldValue)) throw new Error(`Expected field ${path}.${fieldName} to be a non-array object`)\n shallowClone[fieldName] = await encryptObject(fieldValue, cryptor, subKeys, path + '.' + fieldName)\n }\n }\n for (const [mapFieldName, subKeys] of Object.entries(keys.mapsValuesKeys)) {\n const fieldValue = shallowClone[mapFieldName]\n if (fieldValue !== undefined && fieldValue !== null) {\n if (!isPojo(fieldValue)) throw new Error(`Expected field ${path}.${mapFieldName} to be a non-array object`)\n const newMap: { [key: string]: any } = {}\n for (const [key, value] of Object.entries(fieldValue as object)) {\n if (value === null || value === undefined) {\n newMap[key] = value\n } else {\n if (!isPojo(value)) throw new Error(`Expected field ${path}.${mapFieldName}.${key} to be a non-array object`)\n newMap[key] = await encryptObject(value, cryptor, subKeys, path + '.' + mapFieldName + '.' + key)\n }\n }\n shallowClone[mapFieldName] = newMap\n }\n }\n for (const [arrayFieldName, subKeys] of Object.entries(keys.arraysValuesKeys)) {\n const fieldValue = shallowClone[arrayFieldName]\n if (fieldValue !== undefined && fieldValue !== null) {\n if (!Array.isArray(fieldValue)) throw new Error(`Expected field ${path}.${arrayFieldName} to be an array`)\n const newArray: any[] = Array(fieldValue.length)\n for (let i = 0; i < fieldValue.length; i++) {\n const value = fieldValue[i]\n if (value === null || value === undefined) {\n newArray[i] = value\n } else {\n if (!isPojo(value)) throw new Error(`Expected field ${path}.${arrayFieldName}[${i}] to be a non-array object`)\n newArray[i] = await encryptObject(value, cryptor, subKeys, path + '.' + arrayFieldName + '[' + i + ']')\n }\n }\n shallowClone[arrayFieldName] = newArray\n }\n }\n return shallowClone\n}\n\n/**\n * Check if value is a non-null object that is not an array.\n */\nfunction isPojo(value: any): boolean {\n // This break if for some reason we have object versions of String/Number/Boolean\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof ArrayBuffer) && !ArrayBuffer.isView(value)\n}\n\n/**\n * @internal this function is for internal use only and may be changed without notice\n * Decrypt object graph recursively.\n *\n * @param obj the object to decrypt\n * @param decryptor the decryptor function (returns a promise); the decryptor returns the decrypted input or null if\n * the decryption fails\n * @return a deep copy of the object with the decrypted fields and removed encryptedSelf field, or null if the\n * decryption failed\n */\nexport async function decryptObject(\n obj: { [key: string]: any },\n decryptor: (obj: Uint8Array) => Promise<{ [key: string]: any } | null>\n): Promise<{ [key: string]: any } | null> {\n const copy: { [key: string]: any } = {}\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'encryptedSelf') {\n copy[key] = value\n } else if (typeof value === 'object' && value !== null) {\n if (Array.isArray(value)) {\n // Note: nested arrays (and primitives) are returned as is, and they aren't recursively decrypted.\n // This is because we currently don't support encryption of elements from arrays in arrays (we only support\n // arrays in objects in arrays).\n // In future this may change.\n const decryptedElements = []\n for (const element of value) {\n if (isPojo(element)) {\n const decrypted = await decryptObject(element, decryptor)\n if (decrypted == null) return null\n decryptedElements.push(decrypted)\n } else {\n decryptedElements.push(element)\n }\n }\n copy[key] = decryptedElements\n } else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\n copy[key] = value // No direct decryption of array buffer data. Array buffer should be converted to b64 string and encrypted as json data.\n } else {\n const decrypted = await decryptObject(value, decryptor)\n if (decrypted == null) return null\n copy[key] = decrypted\n }\n } else {\n copy[key] = value\n }\n }\n if (obj.encryptedSelf) {\n const decrypted = await decryptor(string2ua(a2b(obj.encryptedSelf)))\n if (decrypted == null) return null\n return { ...copy, ...decrypted }\n } else return copy\n}\n\n/**\n * Extracts the full jwk key pair from the jwk representation of the private key.\n * @param privateKeyJwk private key in jwk representation\n * @param shaVersion the SHA algorithm version\n * @throws if the key is missing the public modulus or public exponent.\n */\nexport function keyPairFromPrivateKeyJwk(privateKeyJwk: JsonWebKey, shaVersion: ShaVersion): KeyPair {\n if (!privateKeyJwk.n || !privateKeyJwk.e) throw new Error('Incomplete private JsonWebKey: missing public modulus and/or exponent')\n return {\n privateKey: privateKeyJwk,\n publicKey: spkiToJwk(hex2ua(jwk2spki(privateKeyJwk)), shaVersion),\n }\n}\n","import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport { Moment } from 'moment'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return isValidNumber(phoneNumber)\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (_.isEmpty(parsedPhoneNumber)) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'INTERNATIONAL')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = _.padStart(dateNumber.toString(), 8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD000000').toDate() : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD').toDate() : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? moment(timeNumber.toString(), 'YYYYMMDDHHmmss').toDate() : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = _.padStart(moment(date).format('YYYYMMDD'), 8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(moment(date).format('YYYYMMDDHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return _.filter(_.map(params, (value, key) => (value ? key + '=' + value : undefined))).join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDDhhmmss')\n } else {\n return moment(epochOrLongCalendar)\n }\n}\n","export function also(value: T, lambda: (it: T) => void) {\n lambda(value)\n return value\n}\n\nexport function fold(whereToFold: Array, initial: R, operation: (acc: R, element: T) => R): R {\n let accumulator = initial\n for (let i = 0; i < whereToFold.length; i++) accumulator = operation(accumulator, whereToFold[i])\n return accumulator\n}\n\nexport async function foldAsync(whereToFold: Array, initial: R, operation: (acc: R, element: T) => Promise): Promise {\n let accumulator = initial\n for (let i = 0; i < whereToFold.length; i++) accumulator = await operation(accumulator, whereToFold[i])\n return accumulator\n}\n","/**\n * @internal\n * Represents a graph. Each node is associated to a set of nodes that can be directly reached from it in a single step.\n */\nexport type Graph = { [node: string]: Set }\n\n/**\n * @internal\n * Represents from which all cycles have been removed using strongly connected components. Also holds information on all groups.\n */\nexport type StronglyConnectedGraph = {\n acyclicGraph: Graph\n originalLabelToAcyclicLabel: { [originalLabel: string]: string }\n acyclicLabelToGroup: { [newLabel: string]: string[] } // includes new label.\n}\n\n/**\n * @internal\n * Creates a graph from a series of edges and optionally additional nodes.\n * @param edges edges between nodes, [from, to].\n * @param additionalNodes nodes which do not appear in any edge.\n * @return a graph built using the provided parameters.\n */\nexport function graphFromEdges(edges: [string, string][], additionalNodes?: string[]): Graph {\n const nodes = edges.reduce>((acc, [edgeFrom, edgeTo]) => {\n acc.add(edgeFrom)\n acc.add(edgeTo)\n return acc\n }, new Set(additionalNodes ?? []))\n const res = Array.from(nodes).reduce((res, node) => {\n res[node] = new Set()\n return res\n }, {})\n edges.forEach(([edgeFrom, edgeTo]) => {\n if (edgeFrom != edgeTo) {\n res[edgeFrom].add(edgeTo)\n }\n })\n return res\n}\n\n/**\n * @internal\n * Get the nodes reachable from each node in an acyclic graph. Exclude the node itself.\n * @param graph an acyclic graph.\n * @return all nodes reachable from each node in the graph with 1 or more steps.\n */\nexport function reachSetsAcyclic(graph: Graph): { [node: string]: Set } {\n const res: { [node: string]: Set } = {}\n function calculateAndCacheReachSetRecursive(node: string): Set {\n if (res[node]) return res[node]\n const set = new Set(Array.from(graph[node]))\n graph[node].forEach((child) => {\n calculateAndCacheReachSetRecursive(child).forEach((x) => set.add(x))\n })\n res[node] = set\n return set\n }\n Object.keys(graph).forEach((n) => calculateAndCacheReachSetRecursive(n))\n return res\n}\n\n/**\n * @internal\n * Get a new graph where each cycle has been replaced by a single node, with label chosen from the labels of nodes in the cycle (the specific way\n * the label is chosen is implementation-dependant).\n * @param graph a graph.\n * @return the new graph and dictionaries to allow mapping between original labels and labels in the new graph\n */\nexport function acyclic(graph: Graph): StronglyConnectedGraph {\n const idToName = Object.keys(graph)\n const nameToId: { [name: string]: number } = {}\n idToName.forEach((name, id) => {\n nameToId[name] = id\n })\n const ogAdjacency: number[][] = idToName.map((name) => {\n return Array.from(graph[name]).map((adjacencyName) => nameToId[adjacencyName])\n })\n const { components, adjacencyList } = stronglyConnectedComponents(ogAdjacency)\n const namedGroups = components.map((group) => group.map((id) => idToName[id]))\n const originalLabelToAcyclicLabel: { [originalLabel: string]: string } = {}\n namedGroups.forEach((group) => {\n group.forEach((element) => {\n originalLabelToAcyclicLabel[element] = group[0]\n })\n })\n const acyclicLabelToGroup: { [newLabel: string]: string[] } = {}\n namedGroups.forEach((group) => {\n acyclicLabelToGroup[group[0]] = group\n })\n const remappedIdToName = components.map((group) => idToName[group[0]])\n const res: Graph = {}\n adjacencyList.forEach((adjacencyList, index) => {\n res[remappedIdToName[index]] = new Set(adjacencyList.filter((x) => x !== index).map((x) => remappedIdToName[x]))\n })\n return { acyclicGraph: res, originalLabelToAcyclicLabel, acyclicLabelToGroup }\n}\n\n// Implementation from https://github.com/mikolalysenko/strongly-connected-components\nfunction stronglyConnectedComponents(adjList: number[][]): { components: number[][]; adjacencyList: number[][] } {\n const numVertices = adjList.length\n const index = new Array(numVertices)\n const lowValue = new Array(numVertices)\n const active = new Array(numVertices)\n const child = new Array(numVertices)\n const scc = new Array(numVertices)\n const sccLinks = new Array(numVertices)\n\n //Initialize tables\n for (let i = 0; i < numVertices; ++i) {\n index[i] = -1\n lowValue[i] = 0\n active[i] = false\n child[i] = 0\n scc[i] = -1\n sccLinks[i] = []\n }\n\n // The strongConnect function\n let count = 0\n const components: number[][] = []\n const sccAdjList: number[][] = []\n\n function strongConnect(v: number) {\n // To avoid running out of stack space, this emulates the recursive behaviour of the normal algorithm, effectively using T as the call stack.\n const S = [v],\n T = [v]\n index[v] = lowValue[v] = count\n active[v] = true\n count += 1\n while (T.length > 0) {\n v = T[T.length - 1]\n const e = adjList[v]\n if (child[v] < e.length) {\n // If we're not done iterating over the children, first try finishing that.\n let i\n for (i = child[v]; i < e.length; ++i) {\n // Start where we left off.\n const u = e[i]\n if (index[u] < 0) {\n index[u] = lowValue[u] = count\n active[u] = true\n count += 1\n S.push(u)\n T.push(u)\n break // First recurse, then continue here (with the same child!).\n // There is a slight change to Tarjan's algorithm here.\n // Normally, after having recursed, we set lowValue like we do for an active child (although some variants of the algorithm do it slightly differently).\n // Here, we only do so if the child we recursed on is still active.\n // The reasoning is that if it is no longer active, it must have had a lowValue equal to its own index, which means that it is necessarily higher than our lowValue.\n } else if (active[u]) {\n lowValue[v] = Math.min(lowValue[v], lowValue[u]) | 0\n }\n if (scc[u] >= 0) {\n // Node v is not yet assigned an scc, but once it is that scc can apparently reach scc[u].\n sccLinks[v].push(scc[u])\n }\n }\n child[v] = i // Remember where we left off.\n } else {\n // If we're done iterating over the children, check whether we have an scc.\n if (lowValue[v] === index[v]) {\n // NOTTODO: It /might/ be true that T is always a prefix of S (at this point!!!), and if so, this could be used here.\n const component = []\n const links = []\n let linkCount = 0\n for (let i = S.length - 1; i >= 0; --i) {\n const w = S[i]\n active[w] = false\n component.push(w)\n links.push(sccLinks[w])\n linkCount += sccLinks[w].length\n scc[w] = components.length\n if (w === v) {\n S.length = i\n break\n }\n }\n components.push(component)\n const allLinks = new Array(linkCount)\n for (let i = 0; i < links.length; i++) {\n for (let j = 0; j < links[i].length; j++) {\n allLinks[--linkCount] = links[i][j]\n }\n }\n sccAdjList.push(allLinks)\n }\n T.pop() // Now we're finished exploring this particular node (normally corresponds to the return statement)\n }\n }\n }\n\n //Run strong connect starting from each vertex\n for (let i = 0; i < numVertices; ++i) {\n if (index[i] < 0) {\n strongConnect(i)\n }\n }\n\n // Compact sccAdjList\n let newE\n for (let i = 0; i < sccAdjList.length; i++) {\n const e = sccAdjList[i]\n if (e.length === 0) continue\n e.sort(function (a, b) {\n return a - b\n })\n newE = [e[0]]\n for (let j = 1; j < e.length; j++) {\n if (e[j] !== e[j - 1]) {\n newE.push(e[j])\n }\n }\n sccAdjList[i] = newE\n }\n\n return { components: components, adjacencyList: sccAdjList }\n}\n","import * as _ from 'lodash'\nimport { HealthcareParty, Telecom } from '../../icc-api/model/models'\n\nexport interface KendoDropdownSpeciality {\n text: string\n value: string\n}\n\nexport const SPECIALITIES: Array = [\n 'ADMINISTRATION',\n 'CARE_GIVER',\n 'ANATOMOPATHOLOGY',\n 'ANESTHESIOLOGY',\n 'SOCIAL_WORKER',\n 'PHARMA_ASSISTANT',\n 'AUDIOLOGIST',\n 'BACTERIOLOGY',\n 'TRUSS_ORTHOTIST',\n 'CLINICAL_BIOLOGY',\n 'CARDIOLOGY',\n 'GENERAL_SURGERY',\n 'MAXILLOFACIAL_SURGERY',\n 'PLASTIC_SURGERY',\n 'STOMATOLOGICAL_SURGERY',\n 'CARDIOVASCULAR_SURGERY',\n 'DENTISTRY',\n 'DERMATOLOGY',\n 'DIETETIC',\n 'ENDOCRINOLOGY',\n 'OCCUPATIONAL_THERAPIST',\n 'GASTROENTEROLOGY',\n 'GENETIC',\n 'GERIATRICS',\n 'GYNECOLOGY',\n 'HEMATOLOGY',\n 'NURSE',\n 'NURSE_EDUCATOR',\n 'PHYSIOTHERAPY',\n 'SPEECH',\n 'ACUTE_MEDICINE',\n 'GENERAL_MEDICINE',\n 'INTERNAL_MEDICINE',\n 'NUCLEAR_MEDICINE',\n 'PHYSICAL_MEDICINE',\n 'NEONATOLOGY',\n 'NEPHROLOGY',\n 'NEUROSURGERY',\n 'NEUROLOGY',\n 'NEUROPEDIATRICS',\n 'NEUROPSYCHIATRY',\n 'NUTRITIONIST',\n 'ONCOLOGY',\n 'OPHTHALMOLOGY',\n 'ORTHOPEDICS',\n 'ORTHOPTISTE',\n 'OTORHINOLARYNGOLOGY',\n 'PEDIATRICS',\n 'PHARMACOLOGY',\n 'RESPIRATORY',\n 'PODIATRIST',\n 'PUBLIC_HEALTH_PREVENTION',\n 'PROSTHETIST',\n 'PSYCHIATRY',\n 'MEDICAL_PSYCHOLOGY',\n 'RADIODIAGNOSTICS',\n 'RADIOTHERAPY',\n 'RESUSCITATION',\n 'RHEUMATOLOGY',\n 'MIDWIFE',\n 'STOMATOLOGY',\n 'EMERGENCY',\n 'UROLOGY',\n 'TOXICOLOGY',\n 'TRANSPORT',\n]\n\n/**\n * Translation keys for specialities.\n * @see SPECIALITIES\n */\nexport const SPECIALITIES_KEYS: { [spec: string]: string } = _.fromPairs(SPECIALITIES.map((spec) => [spec, 'hcp-form.SPECIALITIES.' + spec]))\n\nexport function isDoctor(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && !nihii.endsWith('005') && !nihii.endsWith('006')\n}\n\nexport function isDoctorAssistant(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && nihii.endsWith('005') && nihii.endsWith('006')\n}\n\nexport function getPhoneNumber(hcp: HealthcareParty, maxLength: number | undefined): number | null {\n const phoneNumbers = (hcp.addresses || []).map((a) => {\n const t = (a.telecoms || []).find(\n (t: Telecom) => t.telecomType === Telecom.TelecomTypeEnum.Phone.toString() || t.telecomType === Telecom.TelecomTypeEnum.Mobile.toString()\n )\n let res = t && t.telecomNumber\n if (res && maxLength) {\n while (res.length > maxLength) {\n if (res.startsWith('0032')) {\n res = '0' + res.substr(4)\n } else if (res.startsWith('+32')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('32')) {\n res = '0' + res.substr(2)\n } else if (res.startsWith('00')) {\n res = res.substr(2)\n } else if (res.startsWith('0')) {\n res = res.substr(1)\n } else if (res.startsWith('352')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('33')) {\n res = '0' + res.substr(2)\n } else {\n res = res.substr(1)\n }\n }\n }\n return res && Number(res)\n })\n\n return (!phoneNumbers.length || _.isNaN(phoneNumbers[0]) ? null : phoneNumbers[0]) || null\n}\n","export * from './code-util'\nexport * from './net-utils'\nexport * from './crypto-utils'\nexport * from './formatting-util'\nexport * from './binary-utils'\nexport * from './hcp-util'\nexport * from './functional-util'\nexport * from './websocket'\nexport * from './EntityWithDelegationTypeName'\n","export class LruTemporisedAsyncCache {\n private readonly maxCacheSize: number\n private readonly lifetimeForValue: (value: V) => number\n\n private readonly nodesMap: Map> = new Map()\n private firstNode: CacheNode | null = null\n private lastNode: CacheNode | null = null\n\n private sequentialJobId = 0\n\n /**\n * @param maxCacheSize Maximum size of the cache. Any value <= 0 is considered as no limit.\n * @param lifetimeForValue Get the maximum lifetime for an entry given its value, in milliseconds.\n */\n constructor(maxCacheSize: number, lifetimeForValue: (value: V) => number) {\n this.maxCacheSize = maxCacheSize\n this.lifetimeForValue = lifetimeForValue\n }\n\n /**\n * Get a value if there is an already cached value or job for the provided key.\n * - If the job is in progress this will return the job promise.\n * - If there is already a cached value returns the value, regardless of whether his lifetime is expired or not.\n * - If there is no job nor cached value this will return undefined.\n * @param key key of the entry\n * @return if there is a cached value or job in progress for the entry returns the item and if its lifetime has expired, otherwise returns\n * undefined.\n */\n getIfCachedJob(key: K): Promise<{ item: V; expired: boolean } | undefined> {\n const retrieved = this.nodesMap.get(key)\n if (retrieved !== undefined) {\n if (retrieved.expired((x) => this.lifetimeForValue(x))) {\n return retrieved.valuePromise().then((x) => ({ item: x, expired: true }))\n } else {\n this.markUsed(retrieved)\n return retrieved.valuePromise().then((x) => ({ item: x, expired: false }))\n }\n }\n return Promise.resolve(undefined)\n }\n\n /**\n * Gets a cached value or retrieves it and caches it if the value is not available or if it is available but expired. A value will never be expired\n * if it was not yet retrieved, even if the retrieved value would be expired according to the {@link additionalExpirationCondition}\n * @param key key of the entry\n * @param retrieve given the previous value (if available, expired but not yet removed) of the entry retrieves an updated value.\n * @param additionalExpirationCondition an expiration condition for already cached values to consider in addition to time-based expiration. Returns\n * always false by default, meaning the value is not expired if its lifetime didn't already surpass the maximum lifetime.\n * @return the cached value if present and not expired, else the retrieved value.\n */\n get(\n key: K,\n retrieve: (previousValue: V | undefined) => Promise<{ item: V; onEviction?: (isReplacement: boolean) => void }>,\n additionalExpirationCondition: (value: V) => boolean = () => false\n ): Promise {\n const retrieved = this.nodesMap.get(key)\n if (retrieved !== undefined) {\n this.markUsed(retrieved)\n const cachedValue = retrieved.cachedValue\n if (retrieved.expired((x) => this.lifetimeForValue(x)) || (cachedValue !== undefined && additionalExpirationCondition(cachedValue))) {\n const newId = this.nextJobId()\n retrieved.onEviction(true)\n retrieved.jobId = newId\n retrieved.value = this.registerJob(key, newId, () => retrieve(cachedValue))\n }\n return retrieved.valuePromise()\n } else {\n const jobId = this.nextJobId()\n const newNode = new CacheNode(\n key,\n jobId,\n this.lastNode,\n null,\n this.registerJob(key, jobId, () => retrieve(undefined))\n )\n this.addToTail(key, newNode)\n if (this.maxCacheSize > 0 && this.nodesMap.size > this.maxCacheSize) this.evict(this.firstNode!.key, this.firstNode!, true)\n return newNode.valuePromise()\n }\n }\n\n /**\n * Fully empties this cache.\n * @param doOnEvictionOfCleared if true the onEviction triggers for the retrieved and cached data will be executed, otherwise not. onEviction\n * triggers of data for which the retrieval jobs were not completed will automatically be called when the job completes.\n */\n clear(doOnEvictionOfCleared: boolean = true) {\n this.firstNode = null\n this.lastNode = null\n if (doOnEvictionOfCleared) {\n for (const node of this.nodesMap.values()) {\n node.onEviction(false)\n }\n }\n this.nodesMap.clear()\n }\n\n private addToTail(key: K | null, node: CacheNode) {\n node.previous = this.lastNode\n node.next = null\n if (this.lastNode) this.lastNode.next = node\n this.lastNode = node\n if (this.firstNode === null) this.firstNode = node\n if (key != null) this.nodesMap.set(key, node)\n }\n\n private evict(key: K | null, node: CacheNode, doEvictionTriggers: boolean) {\n if (node.previous) node.previous.next = node.next\n if (node.next) node.next.previous = node.previous\n if (this.firstNode === node) this.firstNode = node.next\n if (this.lastNode === node) this.lastNode = node.previous\n if (key !== null) {\n this.nodesMap.delete(key)\n }\n if (doEvictionTriggers) {\n node.onEviction(false)\n }\n }\n\n private markUsed(node: CacheNode) {\n if (node !== this.lastNode) {\n // No need to modify the nodes map\n this.evict(null, node, false)\n this.addToTail(null, node)\n }\n }\n\n private registerJob(key: K, jobId: number, retrieve: () => Promise<{ item: V; onEviction?: (isReplacement: boolean) => void }>): Promise {\n // The node may have already been evicted by the time the promise completed if the cached surpassed the maximum size.\n return retrieve()\n .then(({ item: v, onEviction }) => {\n const node = this.nodesMap.get(key)\n if (node && node.jobId == jobId) {\n node.value = { cached: v, timestamp: Date.now(), onEviction: (r) => onEviction?.(r) }\n } else {\n onEviction?.(!!node)\n }\n return v\n })\n .catch((e) => {\n const node = this.nodesMap.get(key)\n if (node && node.jobId == jobId) {\n this.evict(key, node, true)\n }\n throw e\n })\n }\n\n private nextJobId(): number {\n const res = this.sequentialJobId\n if (this.sequentialJobId < Number.MAX_SAFE_INTEGER) {\n this.sequentialJobId = res + 1\n } else {\n this.sequentialJobId = 0\n }\n return res\n }\n}\n\ntype Cached = { cached: V; timestamp: number; onEviction: (isReplacement: boolean) => void }\n\nclass CacheNode {\n readonly key: K\n previous: CacheNode | null\n next: CacheNode | null\n value: Promise | Cached\n jobId: number\n\n constructor(key: K, jobId: number, previous: CacheNode | null, next: CacheNode | null, value: Promise) {\n this.key = key\n this.jobId = jobId\n this.previous = previous\n this.next = next\n this.value = value\n }\n\n expired(lifetimeForValue: (value: V) => number): boolean {\n if ('timestamp' in this.value) {\n const maxLifetime = lifetimeForValue(this.value.cached)\n return maxLifetime > 0 && Date.now() - this.value.timestamp > maxLifetime\n } else return false\n }\n\n valuePromise(): Promise {\n return 'timestamp' in this.value ? Promise.resolve(this.value.cached) : this.value\n }\n\n onEviction(isReplacement: boolean): void {\n if ('timestamp' in this.value) {\n this.value.onEviction(isReplacement)\n }\n }\n\n get cachedValue(): V | undefined {\n return 'timestamp' in this.value ? this.value.cached : undefined\n }\n}\n","export type PaginatorFunction = (key: any, docId: string | null, limit: number | undefined) => Promise>\n\nexport type PaginatorExecutor = (\n latestPaginatorFunctionResult: PaginatorResponse,\n acc: any[],\n limit: number | undefined\n) => Promise>\n\nexport interface PaginatorResponse {\n rows: Array\n nextKey: any | null | undefined\n nextDocId: string | null | undefined\n done: boolean\n}\n\nexport interface RowsChunk {\n startIdx: number\n endIdx: number\n rows: Array\n nextKey: any | null\n nextDocId: string | null\n}\n\nexport interface MissingRowsChunk {\n missing: [number, number]\n lastEndIdx: number\n lastKey: any | null\n lastDocId: string | null\n rows?: Array // Is going to be filled when we go through all missing rows chunks\n}\n\nexport function sleep(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function retry

(fn: () => Promise

, retryCount = 3, sleepTime = 1000, exponentialFactor = 1): Promise

{\n let retry = 0\n const doFn: () => Promise

= () => {\n return fn().catch((e) =>\n retry++ < retryCount ? (sleepTime && sleep((sleepTime *= exponentialFactor)).then(() => doFn())) || doFn() : Promise.reject(e)\n )\n }\n return doFn()\n}\n\nexport async function getRowsUsingPagination(\n paginator: PaginatorFunction,\n filter?: (value: X, idx: number, array: Array) => boolean,\n startIdx?: number,\n endIdx?: number,\n cache?: Array>\n): Promise> {\n const executePaginator: PaginatorExecutor = async (latestResult: PaginatorResponse, acc: Array, limit: number | undefined) => {\n const newResult = await paginator(\n latestResult.nextKey || null,\n latestResult.nextDocId || null,\n endIdx && startIdx ? endIdx - startIdx : undefined\n )\n const rows = (filter ? newResult.rows && newResult.rows.filter(filter) : newResult.rows) || []\n acc.push(...rows)\n if (newResult.done || (limit && acc.length >= limit)) {\n return {\n rows: acc,\n nextKey: newResult.nextKey,\n nextDocId: newResult.nextDocId,\n done: false,\n }\n } else {\n return executePaginator(newResult, acc, limit)\n }\n }\n\n if (cache && startIdx && endIdx) {\n // Go through cache and build a list of existing rows (RowsChunks) and missing rows (MissingRowChunks)\n // The cache is a sparse structure sorted by index\n // At first, the cache is empty rows is going to be equal to [] and everything will be missing (see empty rows situation below)\n const [rows, lastKey, lastDocId, lastEndIdx] = cache.reduce(\n (\n [rows, lastKey, lastDocId, lastEndIdx, lastTreatedIdx]: [\n Array | MissingRowsChunk>,\n any | null,\n string | null,\n number,\n number\n ],\n chunk\n ) => {\n const startOfZoi = lastTreatedIdx\n const endOfZoi = endIdx\n\n if (chunk.endIdx <= startOfZoi) {\n // [--zoi--] // Zone of interest starts at startOfZoi, ends at endIdx\n // [-chunk-]\n // Doesn't look like anything to me\n } else if (chunk.startIdx >= endIdx) {\n // [--zoi--]\n // [-chunk-]\n if (startOfZoi < endIdx) {\n rows.push({\n missing: [startOfZoi, endIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n lastTreatedIdx = endOfZoi\n }\n } else {\n if (chunk.startIdx <= lastTreatedIdx) {\n if (chunk.endIdx <= endIdx) {\n // [--zoi--]\n // [-chunk-]\n rows.push({\n startIdx: startOfZoi,\n endIdx: chunk.endIdx,\n rows: chunk.rows.slice(startOfZoi - chunk.startIdx, chunk.endIdx - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = chunk.endIdx\n } else {\n // [--zoi--]\n // [------chunk------]\n rows.push({\n startIdx: startOfZoi,\n endIdx: endOfZoi,\n rows: chunk.rows.slice(startOfZoi - chunk.startIdx, endOfZoi - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = endOfZoi\n }\n } else {\n // [--zoi--]\n // [-chunk-]\n if (chunk.endIdx >= endOfZoi) {\n rows.push({\n missing: [startOfZoi, chunk.startIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n rows.push({\n startIdx: chunk.startIdx,\n endIdx: endOfZoi,\n rows: chunk.rows.slice(0, endOfZoi - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = endOfZoi\n } else {\n // [-------zoi-------]\n // [-chunk-]\n rows.push({\n missing: [startOfZoi, chunk.startIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n rows.push({\n startIdx: chunk.startIdx,\n endIdx: chunk.endIdx,\n rows: chunk.rows.slice(0, chunk.endIdx - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = chunk.endIdx\n }\n }\n }\n return [rows, chunk.nextKey, chunk.nextDocId, chunk.endIdx, lastTreatedIdx]\n },\n [[], null, null, 0, startIdx || 0]\n )\n if (!rows.length) {\n rows.push({\n missing: [startIdx, endIdx],\n lastKey: lastKey,\n lastDocId: lastDocId,\n lastEndIdx: lastEndIdx,\n })\n } else {\n const lastRow = rows.length ? rows[rows.length - 1] : undefined\n if (lastRow && lastRow.rows && (lastRow as RowsChunk).startIdx + lastRow.rows.length < endIdx) {\n rows.push({\n missing: [(lastRow as RowsChunk).startIdx + lastRow.rows.length, endIdx],\n lastKey: lastKey,\n lastDocId: lastDocId,\n lastEndIdx: lastEndIdx,\n })\n }\n }\n\n // Once we we have determined which where the missing chunks. Go fetch them based on the lastKey/lastDocId + the limit computed with the lastEndIndex\n await Promise.all(\n rows\n .filter((r: any) => r.missing)\n .map(async (r: any) => {\n const missing = r as MissingRowsChunk\n const { rows, nextKey, nextDocId } = await executePaginator(\n {\n nextKey: missing.lastKey,\n nextDocId: missing.lastDocId,\n rows: [],\n done: false,\n },\n [],\n missing.missing[1] - missing.lastEndIdx\n )\n\n missing.rows = rows.slice(missing.missing[0] - missing.lastEndIdx, missing.missing[1] - missing.lastEndIdx)\n cache[missing.lastEndIdx] = {\n rows,\n startIdx: missing.missing[0],\n endIdx: missing.missing[1],\n nextKey: nextKey || null,\n nextDocId: nextDocId || null,\n }\n })\n )\n return (rows || []).reduce(\n (acc: X[], r: MissingRowsChunk | RowsChunk) =>\n r.rows\n ? r.rows.reduce((acc, r) => {\n acc.push(r)\n return acc\n }, acc)\n : acc,\n []\n )\n } else {\n const { rows } = await executePaginator(\n {\n nextKey: null,\n nextDocId: null,\n rows: [],\n done: false,\n },\n [],\n undefined\n )\n return rows\n }\n}\n","import * as models from '../../icc-api/model/models'\n\nexport function hasName(person: models.Patient | models.HealthcareParty, nameUse: models.PersonName.UseEnum) {\n return person.names?.some((n) => n.use === nameUse)\n}\n\nexport function findName(person: models.Patient | models.HealthcareParty, nameUse: models.PersonName.UseEnum): models.PersonName | undefined {\n return person.names?.find((n) => n.use === nameUse)\n}\n\nexport function garnishPersonWithName

(\n person: P,\n nameUse: models.PersonName.UseEnum,\n lastName?: string,\n firstName?: string,\n fullName: string = `${lastName} ${firstName ?? ''}`\n): P {\n return {\n ...person,\n names: (person.names ?? []).concat([\n new models.PersonName({\n lastName: lastName,\n firstNames: firstName ? [firstName] : [],\n text: fullName,\n use: nameUse,\n }),\n ]),\n }\n}\n","export class SimpleLruCache {\n private readonly nodesMap: Map> = new Map()\n private firstNode: CacheNode | null = null\n private lastNode: CacheNode | null = null\n\n get size(): number {\n return this.nodesMap.size\n }\n\n /**\n * Get a value if is cached. Note: null values are indistinguishable from absent value\n */\n getCached(key: K): V | null {\n const retrieved = this.nodesMap.get(key)\n if (retrieved !== undefined) {\n this.markUsed(retrieved)\n return retrieved.value\n } else {\n return null\n }\n }\n\n set(key: K, value: V) {\n const retrieved = this.nodesMap.get(key)\n if (retrieved !== undefined) {\n this.markUsed(retrieved)\n retrieved.value = value\n } else {\n const newNode: CacheNode = {\n key: key,\n value: value,\n previous: null,\n next: null,\n }\n this.addToTail(key, newNode)\n }\n }\n\n /**\n * Fully empties this cache.\n */\n clear() {\n this.firstNode = null\n this.lastNode = null\n this.nodesMap.clear()\n }\n\n evictLeastRecentlyUsed(): V {\n const node = this.firstNode\n if (node == null) throw new Error('Internal error: no node left to evict')\n this.evict(node.key, node)\n return node.value\n }\n\n private addToTail(updateKey: K | null, node: CacheNode) {\n node.previous = this.lastNode\n node.next = null\n if (this.lastNode) this.lastNode.next = node\n this.lastNode = node\n if (this.firstNode === null) this.firstNode = node\n if (updateKey != null) this.nodesMap.set(updateKey, node)\n }\n\n private evict(updateKey: K | null, node: CacheNode) {\n if (node.previous) node.previous.next = node.next\n if (node.next) node.next.previous = node.previous\n if (this.firstNode === node) this.firstNode = node.next\n if (this.lastNode === node) this.lastNode = node.previous\n if (updateKey !== null) {\n this.nodesMap.delete(updateKey)\n }\n }\n\n private markUsed(node: CacheNode) {\n if (node !== this.lastNode) {\n // No need to modify the nodes map\n this.evict(null, node)\n this.addToTail(null, node)\n }\n }\n}\n\ntype CacheNode = {\n readonly key: K\n previous: CacheNode | null\n next: CacheNode | null\n value: V\n}\n","import * as WebSocketNode from 'ws'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilter } from '../filters/filters'\nimport { User } from '../../icc-api/model/User'\nimport { isNode } from 'browser-or-node'\nimport { IccAuthApi } from '../../icc-api'\nimport { Service } from '../../icc-api/model/Service'\nimport { HealthElement } from '../../icc-api/model/HealthElement'\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { Device } from '../../icc-api/model/Device'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { Message } from '../../icc-api/model/Message'\nimport { Topic } from '../../icc-api/model/Topic'\n\nexport type EventTypes = 'CREATE' | 'UPDATE' | 'DELETE'\ntype Subscribable =\n | 'Patient'\n | 'Service'\n | 'User'\n | 'HealthElement'\n | 'MaintenanceTask'\n | 'HealthcareParty'\n | 'Device'\n | 'Contact'\n | 'Message'\n | 'Topic'\ntype SubscribableEntity = Patient | Service | User | HealthElement | MaintenanceTask | HealthcareParty | Device | Contact | Message | Topic\nexport type SubscriptionOptions = {\n connectionMaxRetry?: number\n connectionRetryIntervalMs?: number\n debug?: boolean\n}\n\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Patient',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Patient) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: Patient) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Service',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Service) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: Service) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Contact',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Contact) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: Contact) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthElement',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: HealthElement) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: HealthElement) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Message',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Message) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: Message) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Topic',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Topic) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: Topic) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'User',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: User) => Promise,\n options: SubscriptionOptions\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'MaintenanceTask',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: MaintenanceTask) => Promise,\n options: SubscriptionOptions,\n decryptor: (encrypted: MaintenanceTask) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthcareParty',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: HealthcareParty) => Promise,\n options: SubscriptionOptions\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Device',\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: Device) => Promise,\n options: SubscriptionOptions\n): Promise\n\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: Subscribable,\n eventTypes: EventTypes[],\n filter: AbstractFilter | undefined,\n eventFired: (entity: T) => Promise,\n options: SubscriptionOptions = {},\n decryptor?: (encrypted: T) => Promise\n): Promise {\n const config = {\n User: {\n qualifiedName: 'org.taktik.icure.entities.User',\n decryptor: (data: User) => Promise.resolve(new User({ ...data }) as T),\n },\n Patient: {\n qualifiedName: 'org.taktik.icure.entities.Patient',\n decryptor: (data: Patient) => decryptor!(data as Patient as T),\n },\n Service: {\n qualifiedName: 'org.taktik.icure.entities.embed.Service',\n decryptor: (data: Service) => decryptor!(data as Service as T),\n },\n HealthElement: {\n qualifiedName: 'org.taktik.icure.entities.HealthElement',\n decryptor: (data: HealthElement) => decryptor!(data as HealthElement as T),\n },\n Message: {\n qualifiedName: 'org.taktik.icure.entities.Message',\n decryptor: (data: Message) => decryptor!(data as Message as T),\n },\n Topic: {\n qualifiedName: 'org.taktik.icure.entities.Topic',\n decryptor: (data: Topic) => decryptor!(data as Topic as T),\n },\n MaintenanceTask: {\n qualifiedName: 'org.taktik.icure.entities.MaintenanceTask',\n decryptor: (data: MaintenanceTask) => decryptor!(data as MaintenanceTask as T),\n },\n HealthcareParty: {\n qualifiedName: 'org.taktik.icure.entities.HealthcareParty',\n decryptor: (data: HealthcareParty) => Promise.resolve(new HealthcareParty({ ...data }) as HealthcareParty as T),\n },\n Device: {\n qualifiedName: 'org.taktik.icure.entities.Device',\n decryptor: (data: Device) => Promise.resolve(new Device({ ...data }) as Device as T),\n },\n Contact: {\n qualifiedName: 'org.taktik.icure.entities.Contact',\n decryptor: (data: Contact) => decryptor!(data as Contact as T),\n },\n }\n\n return WebSocketWrapper.create(\n basePath.replace('http', 'ws').replace('rest', 'ws') + '/notification/subscribe',\n new WebSocketAuthProviderImpl(authApi),\n options.connectionMaxRetry ?? 5,\n options.connectionRetryIntervalMs ?? 1_000,\n {\n CONNECTED: [\n async (ws: WebSocketWrapper) => {\n const subscription = {\n eventTypes,\n entityClass: config[entityClass].qualifiedName,\n filter: { filter },\n }\n\n ws.send(JSON.stringify(subscription))\n },\n ],\n },\n async (data: any) => {\n try {\n await config[entityClass].decryptor(data).then((o) => eventFired(o))\n } catch (e) {\n console.error(e)\n }\n },\n options.debug\n )\n}\n\nexport type ConnectionStatus = 'NOT_CONNECTED' | 'CONNECTED' | 'CLOSED' | 'ERROR'\nexport type StatusCallback = (ws: WebSocketWrapper) => void\nexport type ErrorStatusCallback = (ws: WebSocketWrapper, error?: Error) => void\nexport type ConnectionStatusFunction = {\n [K in ConnectionStatus]: K extends 'ERROR' ? ErrorStatusCallback : StatusCallback\n}\nexport type ConnectionStatusFunctions = {\n [K in ConnectionStatus]?: K extends 'ERROR' ? Array : Array\n}\nexport type WebSocketWrapperMessageCallback = (data: any) => void\n\nexport class WebSocketWrapper {\n private readonly pingLifetime: number = 20_000\n private socket: WebsocketAdapter | null = null\n private retries = 0\n private closed = false\n private lastPingReceived = Date.now()\n private intervalIds: (NodeJS.Timeout | number)[] = []\n private readonly methodPath: string\n\n private constructor(\n private readonly url: string,\n private readonly authProvider: WebSocketAuthProvider,\n private readonly maxRetries = 3,\n private readonly retryDelay = 1000,\n private readonly statusCallbacks: ConnectionStatusFunctions = {},\n private readonly messageCallback: WebSocketWrapperMessageCallback = () => {},\n private readonly debug: boolean = false\n ) {\n this.methodPath = new URL(url).pathname\n }\n\n public static async create(\n url: string,\n authProvider: WebSocketAuthProvider,\n maxRetries?: number,\n retryDelay?: number,\n statusCallbacks?: ConnectionStatusFunctions,\n messageCallback?: WebSocketWrapperMessageCallback,\n debug?: boolean\n ): Promise {\n const ws = new WebSocketWrapper(url, authProvider, maxRetries, retryDelay, statusCallbacks, messageCallback, debug)\n await ws.connect()\n return ws\n }\n\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.socket && this.socket.readyState === ReadyState.OPEN) {\n this.socket.send(data)\n }\n }\n\n public close() {\n if (this.socket) {\n this.closed = true\n this.socket.close(1000, 'Client closed connection')\n }\n }\n\n public addStatusCallback(status: ConnectionStatus, callback: ConnectionStatusFunction[ConnectionStatus]) {\n switch (status) {\n case 'CONNECTED':\n case 'CLOSED':\n if (!this.statusCallbacks[status]) this.statusCallbacks[status] = []\n this.statusCallbacks?.[status]?.push(callback)\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.push(callback)\n break\n }\n }\n\n private async connect() {\n if (this.retries >= this.maxRetries) {\n throw new Error('WebSocket connection failed after ' + this.maxRetries + ' retries')\n }\n\n const bearerToken = await this.authProvider.getBearerToken()\n\n if (!bearerToken) {\n throw new Error('Cannot obtain JWT for the user')\n }\n\n const socket = isNode\n ? new WebSocketNode(this.url, {\n headers: {\n Authorization: bearerToken,\n },\n })\n : new WebSocket(`${this.url}?jwt=${bearerToken.slice(7) /* \"Bearer \".length */}`)\n\n this.socket = new WebsocketAdapter(socket)\n\n this.socket.on('open', async () => {\n if (this.debug) console.debug('WebSocket connection opened')\n\n this.intervalIds.push(\n setTimeout(() => {\n this.retries = 0\n }, (this.maxRetries + 1) * this.retryDelay)\n )\n\n this.callStatusCallbacks('CONNECTED')\n })\n\n this.socket.on('message', (event: string) => {\n if (this.debug) console.debug('WebSocket message received', event)\n\n // Handle ping messages\n if (event === 'ping') {\n if (this.debug) console.debug('Received ping, sending pong')\n\n this.send('pong')\n this.lastPingReceived = Date.now()\n\n this.intervalIds.push(\n setTimeout(() => {\n if (Date.now() - this.lastPingReceived > this.pingLifetime) {\n console.error(`No ping received in the last ${this.pingLifetime} ms`)\n this.socket?.close()\n }\n }, this.pingLifetime)\n )\n\n return\n }\n\n // Call the message callback for other messages\n try {\n const data = JSON.parse(event)\n this.messageCallback(data)\n } catch (error) {\n console.error('Failed to parse WebSocket message', error)\n }\n })\n\n this.socket.on('close', ({ code, reason }) => {\n if (this.debug) console.debug('WebSocket connection closed', code, reason?.toString())\n\n this.callStatusCallbacks('CLOSED')\n\n this.intervalIds.forEach((id) => clearTimeout(id as number))\n this.intervalIds = []\n\n if (this.closed) {\n return\n }\n\n setTimeout(async () => {\n ++this.retries\n return await this.connect()\n }, this.retryDelay)\n })\n\n this.socket.on('error', async (err) => {\n console.error('WebSocket error', err)\n\n this.callStatusCallbacks('ERROR', err)\n\n if (this.socket) {\n this.socket.close()\n }\n })\n }\n\n private callStatusCallbacks(event: ConnectionStatus, error?: Error) {\n switch (event) {\n case 'CONNECTED':\n case 'CLOSED':\n this.statusCallbacks?.[event]?.forEach((callback) => callback(this))\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.forEach((callback) => callback(this, error))\n break\n }\n }\n}\n\ninterface WebSocketAuthProvider {\n getBearerToken(): Promise\n}\n\nclass WebSocketAuthProviderImpl {\n constructor(private readonly authApi: IccAuthApi) {}\n\n async getBearerToken(): Promise {\n const headers = await this.authApi.authenticationProvider.getAuthService().getAuthHeaders()\n return headers.find((header) => header.header === 'Authorization' && header.data.startsWith('Bearer '))?.data\n }\n}\n\ntype EventCallback = {\n open: (event: any) => void\n message: (event: string) => void\n close: (event: { code: number; reason: string }) => void\n error: (error: any) => void\n}\n\nenum ReadyState {\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3,\n}\n\nclass WebsocketAdapter {\n constructor(private readonly websocket: WebSocketNode | WebSocket) {}\n\n public get readyState(): number {\n if (this.websocket) {\n if (isNode) {\n switch ((this.websocket as WebSocketNode).readyState) {\n case WebSocketNode.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocketNode.OPEN:\n return ReadyState.OPEN\n case WebSocketNode.CLOSING:\n return ReadyState.CLOSING\n case WebSocketNode.CLOSED:\n return ReadyState.CLOSED\n }\n } else {\n switch ((this.websocket as WebSocket).readyState) {\n case WebSocket.CONNECTING:\n return ReadyState.CONNECTING\n case WebSocket.OPEN:\n return ReadyState.OPEN\n case WebSocket.CLOSING:\n return ReadyState.CLOSING\n case WebSocket.CLOSED:\n return ReadyState.CLOSED\n }\n }\n }\n return ReadyState.CLOSED\n }\n\n /**\n * This is not throwing an error if the websocket is not open, because the purpose of the websocket wrapper is custom to notifications needs (subscribe and ping pong only)\n * If in the future we need to use it for other purposes, we will have to throw an error and update the implementation of ping pong in the notification\n * @param data the data to send\n */\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.websocket && this.readyState === ReadyState.OPEN) {\n this.websocket.send(data)\n }\n }\n\n public close(code?: number, reason?: string) {\n if (this.websocket) {\n this.websocket.close(code, reason)\n }\n }\n\n private onMessage(callback: (event: string) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('message', (x) => callback(x.toString('utf8')))\n } else {\n ;(this.websocket as WebSocket).addEventListener('message', async (event) => {\n let dataAsString: string | undefined\n if (event.type === 'message') {\n dataAsString = event.data\n } else console.error('Unexpected event type: ' + event.type)\n if (!dataAsString) {\n console.error('Failed to parse WebSocket message')\n return\n }\n\n callback(dataAsString)\n })\n }\n } else {\n console.error('Websocket is not defined')\n throw new Error('Websocket is not defined')\n }\n }\n\n private onOpen(callback: (event: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('open', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('open', callback)\n }\n }\n }\n\n private onClose(callback: (event: { code: number; reason: string }) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('close', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('close', callback)\n }\n }\n }\n\n private onError(callback: (error: any) => void) {\n if (this.websocket) {\n if (isNode) {\n ;(this.websocket as WebSocketNode).on('error', callback)\n } else {\n ;(this.websocket as WebSocket).addEventListener('error', callback)\n }\n }\n }\n\n public on(event: K, callback: EventCallback[K]) {\n if (this.websocket) {\n switch (event) {\n case 'message':\n return this.onMessage(callback as EventCallback['message'])\n case 'open':\n return this.onOpen(callback as EventCallback['open'])\n case 'close':\n return this.onClose(callback as EventCallback['close'])\n case 'error':\n return this.onError(callback as EventCallback['error'])\n }\n }\n }\n}\n","export * from './icc-x-api'\nexport * from './icc-api'\nexport * from './icc-api/model/models'\n\nexport * from './icc-x-api/utils'\nexport * from './icc-x-api/filters/filters'\n\nexport { XHR } from './icc-api/api/XHR'\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AccessLog } from '../model/AccessLog'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { PaginatedListAccessLog } from '../model/PaginatedListAccessLog'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccAccesslogApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create an access log\n * @param body\n */\n createAccessLog(body?: AccessLog): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/accesslog` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete access logs by batch\n * @param accessLogIds\n */\n deleteAccessLog(accessLogIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/accesslog/${encodeURIComponent(String(accessLogIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.\n * @param body\n * @param hcPartyId\n */\n findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/accesslog/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AccessLog(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List access logs found by Healthcare Party and secret foreign keyelementIds.\n * @param hcPartyId\n * @param secretFKeys\n */\n findAccessLogsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AccessLog(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs\n * @param userId A User ID\n * @param accessType The type of access (COMPUTER or USER)\n * @param startDate The start search epoch\n * @param startKey The start key for pagination\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param descending Descending order\n */\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog/byUser` +\n '?ts=' +\n new Date().getTime() +\n (userId ? '&userId=' + encodeURIComponent(String(userId)) : '') +\n (accessType ? '&accessType=' + encodeURIComponent(String(accessType)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (descending ? '&descending=' + encodeURIComponent(String(descending)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get an access log\n * @param accessLogId\n */\n getAccessLog(accessLogId: string): Promise {\n let _body = null\n\n const _url = this.host + `/accesslog/${encodeURIComponent(String(accessLogId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get paginated list of Access Logs\n * @param fromEpoch\n * @param toEpoch\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param descending\n */\n listAccessLogs(\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/accesslog` +\n '?ts=' +\n new Date().getTime() +\n (fromEpoch ? '&fromEpoch=' + encodeURIComponent(String(fromEpoch)) : '') +\n (toEpoch ? '&toEpoch=' + encodeURIComponent(String(toEpoch)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (descending ? '&descending=' + encodeURIComponent(String(descending)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an access log\n * @param body\n */\n modifyAccessLog(body?: AccessLog): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/accesslog` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new AccessLog(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Agenda } from '../model/Agenda'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccAgendaApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a agenda\n * @param body\n */\n createAgenda(body?: Agenda): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete agendas by id\n * @param agendaIds\n */\n deleteAgenda(agendaIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/agenda/${encodeURIComponent(String(agendaIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an agenda\n * @param agendaId\n */\n getAgenda(agendaId: string): Promise {\n let _body = null\n\n const _url = this.host + `/agenda/${encodeURIComponent(String(agendaId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all agendas\n */\n getAgendas(): Promise> {\n let _body = null\n\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Agenda(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all agendas for user\n * @param userId\n */\n getAgendasForUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/agenda/byUser` + '?ts=' + new Date().getTime() + (userId ? '&userId=' + encodeURIComponent(String(userId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets readable agendas for user\n * @param userId\n */\n getReadableAgendasForUser(userId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/agenda/readableForUser` + '?ts=' + new Date().getTime() + (userId ? '&userId=' + encodeURIComponent(String(userId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Agenda(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an agenda\n * @param body\n */\n modifyAgenda(body?: Agenda): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/agenda` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Agenda(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AppointmentTypeAndPlace } from '../model/AppointmentTypeAndPlace'\nimport { UserAndHealthcareParty } from '../model/UserAndHealthcareParty'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccAnonymousAccessApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * The start of the slot is returned in YYYYDDMMHHmmss format and only slots belonging to public time tables are returned.\n * @summary Get Availabilities for HCP and appointmentType\n * @param groupId\n * @param userId\n * @param calendarItemTypeId\n * @param isNewPatient\n * @param startDate\n * @param endDate\n * @param hcpId\n * @param placeId\n * @param limit\n */\n getAvailabilitiesByPeriodAndCalendarItemTypeId(\n groupId: string,\n userId: string,\n calendarItemTypeId: string,\n isNewPatient: boolean,\n startDate: number,\n endDate: number,\n hcpId: string,\n placeId?: string,\n limit?: number\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/aa/available/inGroup/${encodeURIComponent(String(groupId))}/forUser/${encodeURIComponent(String(userId))}/type/${encodeURIComponent(\n String(calendarItemTypeId)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (isNewPatient !== null && isNewPatient !== undefined ? '&isNewPatient=' + encodeURIComponent(String(isNewPatient)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '') +\n (placeId ? '&placeId=' + encodeURIComponent(String(placeId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of Calendar Item types. In order to be returned, the Calendar Item Type must be linked to a time table enclosed in an Agenda for which an anonymous right has been set (a Right with read permission and null user)\n * @summary List Calendar Item types for a provided group id and user id\n * @param groupId Healthcare parties group id\n * @param userId Healthcare party user id\n * @param startDate\n * @param endDate\n */\n listAppointmentTypesForUser(groupId: string, userId: string, startDate: number, endDate: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/aa/appointmentType/inGroup/${encodeURIComponent(String(groupId))}/forUser/${encodeURIComponent(String(userId))}` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new AppointmentTypeAndPlace(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of Users/healthcare parties contained in the group owning the providing id. In order to be returned, a healthcare party needs to be linked to a user an this user must have a property 'org.taktik.icure.public' set to a boolean true.\n * @summary List healthcare parties for a provided group id\n * @param groupId Healthcare parties group id\n */\n listHealthcarePartiesInGroup(groupId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/aa/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new UserAndHealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ApplicationSettings } from '../model/ApplicationSettings'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccApplicationsettingsApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create new application settings\n * @param body\n */\n createApplicationSettings(body?: ApplicationSettings): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ApplicationSettings(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all application settings\n */\n getApplicationSettings(): Promise> {\n let _body = null\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ApplicationSettings(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Update application settings\n * @param body\n */\n updateApplicationSettings(body?: ApplicationSettings): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/appsettings` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ApplicationSettings(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Article } from '../model/Article'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccArticleApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a article\n * @param body\n */\n createArticle(body?: Article): Promise

{\n let _body = null\n _body = body\n\n const _url = this.host + `/article` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Article(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an article\n * @param articleIds\n */\n deleteArticle(articleIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/article/${encodeURIComponent(String(articleIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an article\n * @param articleId\n */\n getArticle(articleId: string): Promise
{\n let _body = null\n\n const _url = this.host + `/article/${encodeURIComponent(String(articleId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Article(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all articles\n */\n getArticles(): Promise> {\n let _body = null\n\n const _url = this.host + `/article` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Article(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an article\n * @param body\n */\n modifyArticle(body?: Article): Promise
{\n let _body = null\n _body = body\n\n const _url = this.host + `/article` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Article(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationResponse } from '../model/AuthenticationResponse'\nimport { LoginCredentials } from '../model/LoginCredentials'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport enum OAuthThirdParty {\n GOOGLE = 'google',\n MICROSOFT = 'microsoft',\n APPLE = 'apple',\n LINKEDIN = 'linkedin',\n GITHUB = 'github',\n}\n\nexport class IccAuthApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Check login using groupId/userId and password\n * @summary check\n * @param body\n */\n check(body?: LoginCredentials): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/auth/check` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using username and password\n * @summary login\n * @param body\n */\n login(body?: LoginCredentials): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/auth/login` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Login using third party OAuth provider token\n * @summary login\n * @param thirdParty The third party OAuth service used to authenticate the user\n * @param token The token returned by the third party OAuth service\n */\n loginWithThirdPartyToken(thirdParty: string, token: string): Promise {\n let _body = null\n _body = token\n\n const _url = this.host + `/auth/login/${thirdParty}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers\n .filter((h) => h.header !== 'Content-Type' && h.header?.toLowerCase() !== 'authorization')\n .concat(new XHR.Header('Content-Type', 'application/json'))\n .concat(new XHR.Header('token', token))\n return XHR.sendCommand('POST', _url, headers, null, this.fetchImpl, undefined)\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logout(): Promise {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'GET',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Logout\n * @summary logout\n */\n logoutPost(): Promise {\n let _body = null\n\n const _url = this.host + `/auth/logout` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl,\n undefined,\n this.authenticationProvider.getAuthService()\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get token for subsequent operation\n * @summary token\n * @param method\n * @param path\n */\n token(method: string, path: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/token/${encodeURIComponent(String(method))}/${encodeURIComponent(String(path))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)) as string)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication and refresh JWT for a different group\n */\n switchGroup(refreshJWT: string, groupId: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a new authentication JWT using the refresh JWT\n * @summary refresh\n */\n refreshAuthenticationJWT(refreshJWT: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/refresh` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Switch groups using the refresh JWT\n * @summary switch groups\n */\n switchGroupUsingRefreshJWT(groupId: string): Promise {\n return this.authenticationProvider.getIcureTokens().then((tokens) => {\n let _body = null\n const _url = this.host + `/auth/switch/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n\n const refreshToken = tokens?.refreshToken\n if (!refreshToken) {\n throw new Error('No refresh token found')\n }\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshToken)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n })\n }\n\n /**\n * Invalidates a refresh JWT\n * @summary invalidate\n */\n invalidateRefreshJWT(refreshJWT: string): Promise {\n let _body = null\n\n const _url = this.host + `/auth/invalidate` + '?ts=' + new Date().getTime()\n let headers = [...this.headers, new XHR.Header('Refresh-Token', refreshJWT)]\n return XHR.sendCommand(\n 'POST',\n _url,\n headers.filter((h) => h.header?.toLowerCase() !== 'authorization'),\n _body,\n this.fetchImpl\n )\n .then((doc) => new AuthenticationResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { MapOfIds } from '../model/MapOfIds'\nimport { MessageWithBatch } from '../model/MessageWithBatch'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeefactApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary create batch and message\n * @param body\n * @param insuranceId\n * @param newMessageId\n * @param numericalRef\n */\n createBatchAndMessage(insuranceId: string, newMessageId: string, numericalRef: number, body?: MapOfIds): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_efact/${encodeURIComponent(String(insuranceId))}/${encodeURIComponent(String(newMessageId))}/${encodeURIComponent(String(numericalRef))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MessageWithBatch(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CheckSMFPatientResult } from '../model/CheckSMFPatientResult'\nimport { Content } from '../model/Content'\nimport { DiaryNoteExportInfo } from '../model/DiaryNoteExportInfo'\nimport { ImportMapping } from '../model/ImportMapping'\nimport { ImportResult } from '../model/ImportResult'\nimport { IncapacityExportInfo } from '../model/IncapacityExportInfo'\nimport { MedicationSchemeExportInfo } from '../model/MedicationSchemeExportInfo'\nimport { SoftwareMedicalFileExport } from '../model/SoftwareMedicalFileExport'\nimport { SumehrContent } from '../model/SumehrContent'\nimport { SumehrExportInfo } from '../model/SumehrExportInfo'\nimport { SumehrValidity } from '../model/SumehrValidity'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBekmehrApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Check whether patients in SMF already exists in DB\n * @param body\n * @param documentId\n * @param documentKey\n * @param patientId\n * @param language\n */\n checkIfSMFPatientsExists(\n documentId: string,\n documentKey?: string,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(documentId))}/checkIfSMFPatientsExists` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CheckSMFPatientResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr contactreport\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateContactreportExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/contactreport/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate diarynote\n * @param body\n * @param patientId\n * @param language\n */\n generateDiaryNote(patientId: string, language: string, body?: DiaryNoteExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/diarynote/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Incapacity export\n * @param patientId\n * @param language\n * @param body\n * @param xTimezoneOffset\n */\n generateIncapacityExport(patientId: string, language: string, body?: IncapacityExportInfo, xTimezoneOffset?: string): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/incapacity/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n xTimezoneOffset && (headers = headers.concat(new XHR.Header('X-Timezone-Offset', xTimezoneOffset)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr labresult\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateLabresultExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/labresult/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Medicationscheme export\n * @param body\n * @param xTimezoneOffset\n * @param patientId\n * @param language\n * @param recipientSafe\n * @param xTimezoneOffset\n * @param version\n */\n generateMedicationSchemeExport(\n patientId: string,\n language: string,\n recipientSafe: string,\n xTimezoneOffset?: string,\n version?: number,\n body?: MedicationSchemeExportInfo\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/medicationscheme/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientSafe ? '&recipientSafe=' + encodeURIComponent(String(recipientSafe)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n xTimezoneOffset && (headers = headers.concat(new XHR.Header('X-Timezone-Offset', xTimezoneOffset)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr note\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateNoteExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/note/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get KMEHR Patient Info export\n * @param patientId\n * @param language\n */\n generatePatientInfoExport(patientId: string, language?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_kmehr/patientinfo/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr prescription\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generatePrescriptionExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/prescription/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr report\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateReportExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/report/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr request\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateRequestExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/request/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Kmehr result\n * @param body\n * @param patientId\n * @param id\n * @param date\n * @param language\n * @param recipientNihii\n * @param recipientSsin\n * @param recipientFirstName\n * @param recipientLastName\n * @param mimeType\n */\n generateResultExport(\n patientId: string,\n id: string,\n date: number,\n language: string,\n recipientNihii: string,\n recipientSsin: string,\n recipientFirstName: string,\n recipientLastName: string,\n mimeType: string,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/result/${encodeURIComponent(String(patientId))}/export/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (date ? '&date=' + encodeURIComponent(String(date)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (recipientNihii ? '&recipientNihii=' + encodeURIComponent(String(recipientNihii)) : '') +\n (recipientSsin ? '&recipientSsin=' + encodeURIComponent(String(recipientSsin)) : '') +\n (recipientFirstName ? '&recipientFirstName=' + encodeURIComponent(String(recipientFirstName)) : '') +\n (recipientLastName ? '&recipientLastName=' + encodeURIComponent(String(recipientLastName)) : '') +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get SMF (Software Medical File) export\n * @param body\n * @param patientId\n * @param language\n */\n generateSmfExport(patientId: string, language: string, body?: SoftwareMedicalFileExport): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n generateSumehr(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Generate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n generateSumehrV2(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/export` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr elements\n * @param body\n * @param patientId\n */\n getSumehrContent(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/content` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrContent(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check sumehr signature\n * @param body\n * @param patientId\n */\n getSumehrMd5(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/md5` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr elements\n * @param body\n * @param patientId\n */\n getSumehrV2Content(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/content` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrContent(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check sumehr signature\n * @param body\n * @param patientId\n */\n getSumehrV2Md5(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/md5` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import MedicationScheme into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importMedicationScheme(\n documentId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/medicationscheme/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import SMF into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param patientId\n * @param language\n * @param dryRun\n */\n importSmf(\n documentId: string,\n documentKey?: string,\n patientId?: string,\n language?: string,\n dryRun?: boolean,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/smf/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import sumehr into patient(s) using existing document\n * @param body\n * @param documentId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importSumehr(\n documentId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(documentId))}/import` +\n '?ts=' +\n new Date().getTime() +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Import sumehr into patient(s) using existing document\n * @param body\n * @param documentId\n * @param itemId\n * @param documentKey\n * @param dryRun Dry run: do not save in database\n * @param patientId\n * @param language\n */\n importSumehrByItemId(\n documentId: string,\n itemId: string,\n documentKey?: string,\n dryRun?: boolean,\n patientId?: string,\n language?: string,\n body?: { [key: string]: Array }\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(documentId))}/importbyitemid` +\n '?ts=' +\n new Date().getTime() +\n (itemId ? '&itemId=' + encodeURIComponent(String(itemId)) : '') +\n (documentKey ? '&documentKey=' + encodeURIComponent(String(documentKey)) : '') +\n (dryRun ? '&dryRun=' + encodeURIComponent(String(dryRun)) : '') +\n (patientId ? '&patientId=' + encodeURIComponent(String(patientId)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ImportResult(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr validity\n * @param body\n * @param patientId\n */\n isSumehrV2Valid(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/valid` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrValidity(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get sumehr validity\n * @param body\n * @param patientId\n */\n isSumehrValid(patientId: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/valid` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SumehrValidity(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Validate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n validateSumehr(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehr/${encodeURIComponent(String(patientId))}/validate` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Validate sumehr\n * @param body\n * @param patientId\n * @param language\n */\n validateSumehrV2(patientId: string, language: string, body?: SumehrExportInfo): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_kmehr/sumehrv2/${encodeURIComponent(String(patientId))}/validate` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeresultexportApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n */\n exportHealthOne(fromHcpId: string, toHcpId: string, patId: string, date: number, ref: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/hl1/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n * @param mimeType\n */\n exportKmehrReport(\n fromHcpId: string,\n toHcpId: string,\n patId: string,\n date: number,\n ref: string,\n mimeType?: boolean,\n body?: ArrayBuffer\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/kmehrreport/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime() +\n (mimeType ? '&mimeType=' + encodeURIComponent(String(mimeType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Export data\n * @param body\n * @param fromHcpId\n * @param toHcpId\n * @param patId\n * @param date\n * @param ref\n */\n exportMedidoc(fromHcpId: string, toHcpId: string, patId: string, date: number, ref: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/be_result_export/medidoc/${encodeURIComponent(String(fromHcpId))}/${encodeURIComponent(String(toHcpId))}/${encodeURIComponent(\n String(patId)\n )}/${encodeURIComponent(String(date))}/${encodeURIComponent(String(ref))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Contact } from '../model/Contact'\nimport { ResultInfo } from '../model/ResultInfo'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBeresultimportApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Can we handle this document\n * @param id\n * @param enckeys\n */\n canHandle(id: string, enckeys: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_result_import/canhandle/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary import document\n * @param documentId\n * @param hcpId\n * @param language\n * @param protocolIds\n * @param formIds\n * @param planOfActionId\n * @param enckeys\n * @param ctc\n */\n doImport(\n documentId: string,\n hcpId: string,\n language: string,\n protocolIds: string,\n formIds: string,\n planOfActionId: string,\n enckeys: string,\n ctc: Contact\n ): Promise {\n let _body = null\n _body = ctc\n\n const _url =\n this.host +\n `/be_result_import/import/${encodeURIComponent(String(documentId))}/${encodeURIComponent(String(hcpId))}/${encodeURIComponent(\n String(language)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (protocolIds ? '&protocolIds=' + encodeURIComponent(String(protocolIds)) : '') +\n (formIds ? '&formIds=' + encodeURIComponent(String(formIds)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Extract general infos from document\n * @param id\n * @param language\n * @param enckeys\n * @param full\n */\n getInfos(id: string, language: string, enckeys: string, full?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_result_import/infos/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '') +\n (full ? '&full=' + encodeURIComponent(String(full)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ResultInfo(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Amp } from '../model/Amp'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { Nmp } from '../model/Nmp'\nimport { PaginatedListAmp } from '../model/PaginatedListAmp'\nimport { PaginatedListNmp } from '../model/PaginatedListNmp'\nimport { PaginatedListVmp } from '../model/PaginatedListVmp'\nimport { PaginatedListVmpGroup } from '../model/PaginatedListVmpGroup'\nimport { Paragraph } from '../model/Paragraph'\nimport { PharmaceuticalForm } from '../model/PharmaceuticalForm'\nimport { SamVersion } from '../model/SamVersion'\nimport { Substance } from '../model/Substance'\nimport { Verse } from '../model/Verse'\nimport { Vmp } from '../model/Vmp'\nimport { VmpGroup } from '../model/VmpGroup'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccBesamv2Api {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by dmpp code\n * @param dmppCode dmppCode\n */\n findAmpsByDmppCode(dmppCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/amp/byDmppCode/${encodeURIComponent(String(dmppCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, pagination is not supported\n * @summary Finding AMPs by amp code\n * @param ampCode ampCode\n */\n findAmpsByAmpCode(ampCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/amp/byAmpCode/${encodeURIComponent(String(ampCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by atc code with pagination.\n * @param atcCode atcCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByAtc(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byAtc/${encodeURIComponent(String(atcCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by atc code with pagination.\n * @param atcCode atcCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByAtc1(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byAtc/${encodeURIComponent(String(atcCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group with pagination.\n * @param vmpgId vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byGroupId/${encodeURIComponent(String(vmpgId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId An amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp code with pagination.\n * @param vmpCode vmpCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byVmpCode/${encodeURIComponent(String(vmpCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp id with pagination.\n * @param vmpId vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A amp document ID\n * @param limit Number of rows\n */\n findPaginatedAmpsByVmpId(vmpId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/amp/byVmpId/${encodeURIComponent(String(vmpId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListAmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a paginated list of NMPs by matching label. Matches occur per word\n * @summary Finding NMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedNmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/nmp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListNmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMP groups by language label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmpgroup document ID\n * @param limit Number of rows\n */\n findPaginatedVmpGroupsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmpgroup` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmpGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMP groups by cmpgCode with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmpgroup document ID\n * @param limit Number of rows\n */\n findPaginatedVmpGroupsByVmpGroupCode(\n vmpgCode: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmpgroup/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmpGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpgCode vmpgCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byGroupCode/${encodeURIComponent(String(vmpgCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpgId vmpgId\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byGroupId/${encodeURIComponent(String(vmpgId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a paginated list of VMPs by matching label. Matches occur per word\n * @summary Finding VMPs by label with pagination.\n * @param language language\n * @param label label\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByLabel(\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp` +\n '?ts=' +\n new Date().getTime() +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group with pagination.\n * @param vmpCode vmpCode\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A vmp document ID\n * @param limit Number of rows\n */\n findPaginatedVmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/vmp/byVmpCode/${encodeURIComponent(String(vmpCode))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListVmp(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param searchString\n * @param language\n */\n findParagraphs(searchString: string, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/search/${encodeURIComponent(String(searchString))}/${encodeURIComponent(String(language))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Paragraph(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param cnk\n * @param language\n */\n findParagraphsWithCnk(cnk: number, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/be_samv2/chap/bycnk/${encodeURIComponent(String(cnk))}/${encodeURIComponent(String(language))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Paragraph(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n * @param verseSeq\n * @param docSeq\n * @param language\n * @param response\n */\n getAddedDocument(chapterName: string, paragraphName: string, verseSeq: number, docSeq: number, language: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}/${encodeURIComponent(\n String(verseSeq)\n )}/addeddoc/${encodeURIComponent(String(docSeq))}/${encodeURIComponent(String(language))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n */\n getAmpsForParagraph(chapterName: string, paragraphName: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/amps/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Get Samv2 version.\n */\n getSamVersion(): Promise {\n let _body = null\n\n const _url = this.host + `/be_samv2/v` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new SamVersion(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n */\n getVersesHierarchy(chapterName: string, paragraphName: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/verse/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Verse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param chapterName\n * @param paragraphName\n * @param language\n */\n getVtmNamesForParagraph(chapterName: string, paragraphName: string, language: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/be_samv2/chap/vtms/${encodeURIComponent(String(chapterName))}/${encodeURIComponent(String(paragraphName))}/${encodeURIComponent(\n String(language)\n )}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by dmpp code\n * @param body\n */\n listAmpsByDmppCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byDmppCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listAmpsByGroupCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byGroupCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listAmpsByGroupIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byGroupIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp code.\n * @param body\n */\n listAmpsByVmpCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byVmpCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by vmp id.\n * @param body\n */\n listAmpsByVmpIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/amp/byVmpIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Amp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding NMPs by cnk id.\n * @param body\n */\n listNmpsByCnks(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/nmp/byCnks` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Nmp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List all pharmaceutical forms.\n */\n listPharmaceuticalForms(): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/pharmaform` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new PharmaceuticalForm(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List all substances.\n */\n listSubstances(): Promise> {\n let _body = null\n\n const _url = this.host + `/be_samv2/substance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Substance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of group codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding AMPs by group.\n * @param body\n */\n listVmpGroupsByVmpGroupCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmpgroup/byGroupCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new VmpGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group.\n * @param body\n */\n listVmpsByGroupIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmp/byGroupIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Vmp(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported\n * @summary Finding VMPs by group.\n * @param body\n */\n listVmpsByVmpCodes(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/be_samv2/vmp/byVmpCodes` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Vmp(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CalendarItem } from '../model/CalendarItem'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccCalendarItemApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a calendarItem\n * @param body\n */\n createCalendarItem(body?: CalendarItem): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItem` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an calendarItem\n * @param calendarItemIds\n */\n deleteCalendarItem(calendarItemIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/calendarItem/${encodeURIComponent(String(calendarItemIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes calendarItems\n * @param body\n */\n deleteCalendarItems(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItem/delete/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find CalendarItems by hcparty and patient\n * @param body\n * @param hcPartyId\n */\n findCalendarItemsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/calendarItem/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find CalendarItems by hcparty and patient\n * @param hcPartyId\n * @param secretFKeys\n */\n findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find CalendarItems by recurrenceId\n * @param recurrenceId\n */\n findCalendarItemsByRecurrenceId(recurrenceId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byRecurrenceId` +\n '?ts=' +\n new Date().getTime() +\n (recurrenceId ? '&recurrenceId=' + encodeURIComponent(String(recurrenceId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an calendarItem\n * @param calendarItemId\n */\n getCalendarItem(calendarItemId: string): Promise {\n let _body = null\n\n const _url = this.host + `/calendarItem/${encodeURIComponent(String(calendarItemId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all calendarItems\n */\n getCalendarItems(): Promise> {\n let _body = null\n\n const _url = this.host + `/calendarItem` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get CalendarItems by Period and HcPartyId\n * @param startDate\n * @param endDate\n * @param hcPartyId\n */\n getCalendarItemsByPeriodAndHcPartyId(startDate: number, endDate: number, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byPeriodAndHcPartyId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get calendarItems by id\n * @param body\n */\n getCalendarItemsWithIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItem/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get CalendarItems by Period and AgendaId\n * @param startDate\n * @param endDate\n * @param agendaId\n */\n getCalendarsByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/calendarItem/byPeriodAndAgendaId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an calendarItem\n * @param body\n */\n modifyCalendarItem(body?: CalendarItem): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItem` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItem(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Update delegations in calendarItems\n * @param body\n */\n setCalendarItemsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItem/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItem(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { CalendarItemType } from '../model/CalendarItemType'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccCalendarItemTypeApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a calendarItemType\n * @param body\n */\n createCalendarItemType(body?: CalendarItemType): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItemType` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an calendarItemType\n * @param calendarItemTypeIds\n */\n deleteCalendarItemType(calendarItemTypeIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/calendarItemType/${encodeURIComponent(String(calendarItemTypeIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an calendarItemType\n * @param calendarItemTypeId\n */\n getCalendarItemType(calendarItemTypeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/calendarItemType/${encodeURIComponent(String(calendarItemTypeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all calendarItemTypes\n */\n getCalendarItemTypes(): Promise> {\n let _body = null\n\n const _url = this.host + `/calendarItemType` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItemType(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all calendarItemTypes include deleted\n */\n getCalendarItemTypesIncludeDeleted(): Promise> {\n let _body = null\n\n const _url = this.host + `/calendarItemType/includeDeleted` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new CalendarItemType(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an calendarItemType\n * @param body\n */\n modifyCalendarItemType(body?: CalendarItemType): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/calendarItemType` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CalendarItemType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Classification } from '../model/Classification'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccClassificationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification Template.\n * @summary Create a classification with the current user\n * @param body\n */\n createClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted classification Templates.\n * @summary Delete classification Templates.\n * @param classificationIds\n */\n deleteClassifications(classificationIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/classification/${encodeURIComponent(String(classificationIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys hast to delimited by coma\n * @summary List classification Templates found By Healthcare Party and secret foreign keyelementIds.\n * @param hcPartyId\n * @param secretFKeys\n */\n findClassificationsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/classification/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a classification Template\n * @param classificationId\n */\n getClassification(classificationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/classification/${encodeURIComponent(String(classificationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Ids are seperated by a coma\n * @summary Get a list of classifications\n * @param ids\n */\n getClassificationByHcPartyId(ids: string): Promise> {\n let _body = null\n\n const _url = this.host + `/classification/byIds/${encodeURIComponent(String(ids))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification Template.\n * @summary Modify a classification Template\n * @param body\n */\n modifyClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a classification to a healthcare party (By current healthcare party). Returns the element with new delegations.\n * @summary Delegates a classification to a healthcare party\n * @param body\n * @param classificationId\n */\n newClassificationDelegations(classificationId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classification/${encodeURIComponent(String(classificationId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in classification\n * @param body\n */\n setClassificationsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/classification/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ClassificationTemplate } from '../model/ClassificationTemplate'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { PaginatedListClassificationTemplate } from '../model/PaginatedListClassificationTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccClassificationTemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification Template.\n * @summary Create a classification Template with the current user\n * @param body\n */\n createClassificationTemplate(body?: ClassificationTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classificationTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted classification Templates.\n * @summary Delete classification Templates.\n * @param classificationTemplateIds\n */\n deleteClassificationTemplates(classificationTemplateIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/classificationTemplate/${encodeURIComponent(String(classificationTemplateIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys hast to delimited by coma\n * @summary List classification Templates found By Healthcare Party and secret foreign keyelementIds.\n * @param hcPartyId\n * @param secretFKeys\n */\n findClassificationTemplatesByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/classificationTemplate/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ClassificationTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a classification Template\n * @param classificationTemplateId\n */\n getClassificationTemplate(classificationTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/classificationTemplate/${encodeURIComponent(String(classificationTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Ids are seperated by a coma\n * @summary Get a list of classifications Templates\n * @param ids\n */\n getClassificationTemplateByIds(ids: string): Promise> {\n let _body = null\n\n const _url = this.host + `/classificationTemplate/byIds/${encodeURIComponent(String(ids))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ClassificationTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of classification templates.\n * @summary List all classification templates with pagination\n * @param startKey A label\n * @param startDocumentId An classification template document ID\n * @param limit Number of rows\n */\n listClassificationTemplates(startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/classificationTemplate` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification Template.\n * @summary Modify a classification Template\n * @param body\n */\n modifyClassificationTemplate(body?: ClassificationTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/classificationTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a classification Template to a healthcare party (By current healthcare party). Returns the element with new delegations.\n * @summary Delegates a classification Template to a healthcare party\n * @param body\n * @param classificationTemplateId\n */\n newClassificationTemplateDelegations(classificationTemplateId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host + `/classificationTemplate/${encodeURIComponent(String(classificationTemplateId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ClassificationTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterCode } from '../model/AbstractFilterCode'\nimport { Code } from '../model/Code'\nimport { FilterChainCode } from '../model/FilterChainCode'\nimport { PaginatedListCode } from '../model/PaginatedListCode'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccCodeApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Create a code entity. Fields Type, Code and Version are required.\n * @summary Create a code\n * @param body\n */\n createCode(body?: Code): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/code` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a batch of code entities. Fields Type, Code and Version are required for each code.\n * @summary Create a batch of codes\n * @param body\n */\n createCodes(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter codes\n * @param body\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param skip Skip rows\n * @param sort Sort key\n * @param desc Descending\n */\n filterCodesBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: FilterChainCode\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/code/filter` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skip ? '&skip=' + encodeURIComponent(String(skip)) : '') +\n (sort ? '&sort=' + encodeURIComponent(String(sort)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of code types matched with given input.\n * @summary Get list of code types by region and type.\n * @param region Code region\n * @param type Code type\n */\n findCodeTypes(region?: string, type?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/codetype/byRegionType` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets list of codes by code, type and version\n * @param region Code region\n * @param type Code type\n * @param code Code code\n * @param version Code version\n */\n findCodes(region?: string, type?: string, code?: string, version?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/byRegionTypeCode` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (code ? '&code=' + encodeURIComponent(String(code)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets paginated list of codes by code, type and version.\n * @param region\n * @param type\n * @param code\n * @param version\n * @param startKey The start key for pagination\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodes(\n region?: string,\n type?: string,\n code?: string,\n version?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (code ? '&code=' + encodeURIComponent(String(code)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input. If several types are provided, pagination is not supported\n * @summary Get paginated list of codes by code, type and version.\n * @param region\n * @param types\n * @param language\n * @param label\n * @param version\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodesByLabel(\n region?: string,\n types?: string,\n language?: string,\n label?: string,\n version?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/byLabel` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (types ? '&types=' + encodeURIComponent(String(types)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of codes matched with given input.\n * @summary Gets paginated list of codes by link and link type.\n * @param linkType\n * @param linkedId\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A code document ID\n * @param limit Number of rows\n */\n findPaginatedCodesWithLink(\n linkType: string,\n linkedId?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/link/${encodeURIComponent(String(linkType))}` +\n '?ts=' +\n new Date().getTime() +\n (linkedId ? '&linkedId=' + encodeURIComponent(String(linkedId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListCode(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tag types matched with given input.\n * @summary Gets list of tag types by region and type.\n * @param region Code region\n * @param type Code type\n */\n findTagTypes(region?: string, type?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/code/tagtype/byRegionType` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a code based on its id\n * @summary Get a code by id\n * @param codeId Code id\n */\n getCode(codeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/code/${encodeURIComponent(String(codeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a code based on (type, code, version) as query strings. (type, code, version) is unique.\n * @summary Get a code\n * @param type Code type\n * @param code Code code\n * @param version Code version\n */\n getCodeWithParts(type: string, code: string, version: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/code/${encodeURIComponent(String(type))}/${encodeURIComponent(String(code))}/${encodeURIComponent(String(version))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of codes by ids/keys. Keys must be delimited by coma\n * @summary Gets a list of codes by ids\n * @param codeIds\n */\n getCodes(codeIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/code/byIds/${encodeURIComponent(String(codeIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Import codes from the resources XML file depending on the passed pathVariable\n * @summary Import codes\n * @param codeType\n */\n importCodes(codeType: string): Promise {\n let _body = null\n\n const _url = this.host + `/code/${encodeURIComponent(String(codeType))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of code matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchCodesBy(body?: AbstractFilterCode): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, code, version) is not allowed.\n * @summary Modify a code\n * @param body\n */\n modifyCode(body?: Code): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/code` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Code(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, code, version) is not allowed.\n * @summary Modify a batch of codes\n * @param body\n */\n modifyCodes(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/code/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Code(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterContact } from '../model/AbstractFilterContact'\nimport { AbstractFilterService } from '../model/AbstractFilterService'\nimport { Contact } from '../model/Contact'\nimport { Content } from '../model/Content'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainContact } from '../model/FilterChainContact'\nimport { FilterChainService } from '../model/FilterChainService'\nimport { IcureStub } from '../model/IcureStub'\nimport { LabelledOccurence } from '../model/LabelledOccurence'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListContact } from '../model/PaginatedListContact'\nimport { PaginatedListService } from '../model/PaginatedListService'\nimport { Service } from '../model/Service'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccContactApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Close contacts for Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n closeForHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/close` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a contact with the current user and returns an instance of created contact afterward.\n * @summary Create a contact with the current user\n * @param body\n */\n createContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contacts.\n * @summary Create a batch of contacts\n * @param body\n */\n createContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted contacts.\n * @summary Delete contacts.\n * @param contactIds\n */\n deleteContacts(contactIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/contact/${encodeURIComponent(String(contactIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List contacts for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Contact document ID\n * @param limit Number of rows\n */\n filterContactsBy(startDocumentId?: string, limit?: number, body?: FilterChainContact): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListContact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List services for the current user (HcParty) or the given hcparty in the filter\n * @param body\n * @param startDocumentId A Contact document ID\n * @param limit Number of rows\n */\n filterServicesBy(startDocumentId?: string, limit?: number, body?: FilterChainService): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/service/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListService(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a list of contacts found by Healthcare Party and form's id.\n * @param hcPartyId\n * @param formId\n */\n findByHCPartyFormId(hcPartyId: string, formId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartyFormId` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (formId ? '&formId=' + encodeURIComponent(String(formId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a list of contacts found by Healthcare Party and form's ids.\n * @param body\n * @param hcPartyId\n */\n findByHCPartyFormIds(hcPartyId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartyFormIds` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of contacts found by Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param planOfActionsIds\n * @param skipClosedContacts\n @param body\n */\n findByHCPartyPatientSecretFKeysUsingPost(\n hcPartyId: string,\n planOfActionsIds?: string,\n skipClosedContacts?: boolean,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (planOfActionsIds ? '&planOfActionsIds=' + encodeURIComponent(String(planOfActionsIds)) : '') +\n (skipClosedContacts ? '&skipClosedContacts=' + encodeURIComponent(String(skipClosedContacts)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of contacts found by Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n * @param planOfActionsIds\n * @param skipClosedContacts\n */\n findByHCPartyPatientSecretFKeys(\n hcPartyId: string,\n secretFKeys: string,\n planOfActionsIds?: string,\n skipClosedContacts?: boolean\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (planOfActionsIds ? '&planOfActionsIds=' + encodeURIComponent(String(planOfActionsIds)) : '') +\n (skipClosedContacts ? '&skipClosedContacts=' + encodeURIComponent(String(skipClosedContacts)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List contacts found By Healthcare Party and service Id.\n * @param hcPartyId\n * @param serviceId\n */\n findByHCPartyServiceId(hcPartyId: string, serviceId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartyServiceId` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (serviceId ? '&serviceId=' + encodeURIComponent(String(serviceId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List contacts found By externalId.\n * @param externalId\n */\n findContactsByExternalId(externalId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byExternalId` +\n '?ts=' +\n new Date().getTime() +\n (externalId ? '&externalId=' + encodeURIComponent(String(externalId)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a list of contacts found by Healthcare Party and Patient foreign keys.\n * @param body\n * @param hcPartyId\n */\n findContactsByHCPartyPatientForeignKeys(hcPartyId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartyPatientForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List contacts found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n findContactsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List contacts found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findContactsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a contact based on its id\n * @summary Get a contact\n * @param contactId\n */\n getContact(contactId: string): Promise {\n let _body = null\n\n const _url = this.host + `/contact/${encodeURIComponent(String(contactId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Gets a service based on its id\n * @summary Get a service\n * @param serviceId\n */\n async getService(serviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/contact/service/${encodeURIComponent(String(serviceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Service(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of contact by ids/keys.\n * @summary Get contacts by batch\n * @param body\n */\n getContacts(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get an empty content\n */\n getEmptyContent(): Promise {\n let _body = null\n\n const _url = this.host + `/contact/service/content/empty` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of all used codes frequencies in services\n * @param codeType\n * @param minOccurences\n */\n getServiceCodesOccurences(codeType: string, minOccurences: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/codes/${encodeURIComponent(String(codeType))}/${encodeURIComponent(String(minOccurences))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new LabelledOccurence(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of contacts.\n * @summary List contacts bu opening date parties with(out) pagination\n * @param startKey The contact openingDate\n * @param endKey The contact max openingDate\n * @param hcpartyid hcpartyid\n * @param startDocumentId A contact party document ID\n * @param limit Number of rows\n */\n listContactsByOpeningDate(\n startKey: number,\n endKey: number,\n hcpartyid: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/contact/byOpeningDate` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (endKey ? '&endKey=' + encodeURIComponent(String(endKey)) : '') +\n (hcpartyid ? '&hcpartyid=' + encodeURIComponent(String(hcpartyid)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListContact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services with provided ids\n * @param body\n */\n listServices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/service/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services by related association id\n * @param associationId\n */\n listServicesByAssociationId(associationId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/associationId` +\n '?ts=' +\n new Date().getTime() +\n (associationId ? '&associationId=' + encodeURIComponent(String(associationId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the list of services linked to the provided health element id\n * @summary List services linked to a health element\n * @param healthElementId\n * @param hcPartyId hcPartyId\n */\n listServicesByHealthElementId(healthElementId: string, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/contact/service/healthElementId/${encodeURIComponent(String(healthElementId))}` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of services\n * @summary List services linked to provided ids\n * @param body\n * @param linkType The type of the link\n */\n listServicesLinkedTo(linkType?: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host + `/contact/service/linkedTo` + '?ts=' + new Date().getTime() + (linkType ? '&linkType=' + encodeURIComponent(String(linkType)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Service(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of contacts matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchContactsBy(body?: AbstractFilterContact): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of services matching the provided filter for the current user\n * @param body\n */\n matchServicesBy(body?: AbstractFilterService): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/service/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contact.\n * @summary Modify a contact\n * @param body\n */\n modifyContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contacts.\n * @summary Modify a batch of contacts\n * @param body\n */\n modifyContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a contact to a healthcare party (By current healthcare party). Returns the contact with new delegations.\n * @summary Delegates a contact to a healthcare party\n * @param body\n * @param contactId\n */\n newContactDelegations(contactId: string, body?: Delegation): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/${encodeURIComponent(String(contactId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in healthElements.\n * @param body\n */\n setContactsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/contact/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DataOwnerWithType } from '../model/DataOwnerWithType'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../model/CryptoActorStub'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDataownerApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * General information about the current data owner. Note that this does not decrpyt patient data owners.\n * @summary Get the data owner corresponding to the current user\n */\n getCurrentDataOwner(): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => DataOwnerWithType.fromJson(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Full data owner information\n * @summary Get a data owner by his ID\n * @param dataOwnerId\n */\n getDataOwner(dataOwnerId: string): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/${encodeURIComponent(String(dataOwnerId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => DataOwnerWithType.fromJson(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the keys of a data owner\n * @summary Get a data owner by his ID\n * @param dataOwnerId\n */\n getCryptoActorStub(dataOwnerId: string): Promise {\n let _body = null\n\n const _url = this.host + `/dataowner/stub/${encodeURIComponent(String(dataOwnerId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CryptoActorStubWithType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Updates the keys of a data owner\n */\n modifyCryptoActorStub(stub: CryptoActorStubWithType): Promise {\n let _body = stub\n\n const _url = this.host + `/dataowner/stub` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new CryptoActorStubWithType(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterDevice } from '../model/AbstractFilterDevice'\nimport { Device } from '../model/Device'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainDevice } from '../model/FilterChainDevice'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListDevice } from '../model/PaginatedListDevice'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDeviceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Name, last name, date of birth, and gender are required. After creation of the device and obtaining the ID, you need to create an initial delegation.\n * @summary Create a device\n * @param body\n */\n createDevice(body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a device\n * @param body\n * @param groupId\n */\n createDeviceInGroup(groupId: string, body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of created devices\n * @summary Create devices in bulk\n * @param body\n */\n createDevices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of created devices\n * @summary Create devices in bulk\n * @param body\n */\n createDevices1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response contains the id/rev of deleted device.\n * @summary Delete device.\n * @param deviceId\n */\n deleteDevice(deviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is an array containing the id/rev of deleted devices.\n * @summary Delete devices.\n * @param body\n */\n deleteDevices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/delete/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deleting a device. Response is an array containing the id of deleted device.\n * @summary Delete a device\n * @param groupId\n * @param deviceIds\n */\n deleteDevicesInGroup(groupId: string, deviceIds: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}/${encodeURIComponent(String(deviceIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of devices along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter devices for the current user (HcParty)\n * @param body\n * @param startDocumentId A device document ID\n * @param limit Number of rows\n */\n filterDevicesBy(startDocumentId?: string, limit?: number, body?: FilterChainDevice): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/device/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDevice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets device administrative data.\n * @summary Get Device\n * @param deviceId\n */\n getDevice(deviceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param deviceId\n */\n getDeviceAesExchangeKeysForDelegate(\n deviceId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES key)\n * @summary Get the HcParty encrypted AES keys indexed by owner\n * @param deviceId The deviceId Id for which information is shared\n */\n getDeviceHcPartyKeysForDelegate(deviceId: string): Promise<{ [key: string]: string }> {\n let _body = null\n\n const _url = this.host + `/device/${encodeURIComponent(String(deviceId))}/keys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets device administrative data.\n * @summary Get devices by id\n * @param body\n */\n getDevices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Device(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the device\n * @summary Get devices by their IDs\n * @param body\n * @param groupId\n */\n getDevicesInGroup(groupId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Device(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of devices matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchDevicesBy(body?: AbstractFilterDevice): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Device.\n * @param body\n * @param groupId\n */\n modifyDeviceInGroup(groupId: string, body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the updated device\n * @summary Modify a device\n * @param body\n */\n updateDevice(body?: Device): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/device` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Device(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified devices\n * @summary Modify devices in bulk\n * @param body\n */\n updateDevices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified devices\n * @summary Modify devices in bulk\n * @param body\n */\n updateDevices1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/device/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { DocumentTemplate } from '../model/DocumentTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDoctemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created document template.\n * @summary Create a document template with the current user\n * @param body\n */\n createDocumentTemplate(body?: DocumentTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/doctemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a document template\n * @param documentTemplateIds\n */\n deleteDocumentTemplate(documentTemplateIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates for all users\n */\n findAllDocumentTemplates(): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate/find/all` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates for current user\n */\n findDocumentTemplates(): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates by Type\n * @param documentTypeCode\n */\n findDocumentTemplatesByDocumentType(documentTypeCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate/byDocumentType/${encodeURIComponent(String(documentTypeCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates by Type For currentUser\n * @param documentTypeCode\n */\n findDocumentTemplatesByDocumentTypeForCurrentUser(documentTypeCode: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/doctemplate/byDocumentTypeForCurrentUser/${encodeURIComponent(String(documentTypeCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all document templates\n * @param specialityCode\n */\n findDocumentTemplatesBySpeciality(specialityCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/doctemplate/bySpecialty/${encodeURIComponent(String(specialityCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocumentTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Download a the document template attachment\n * @param documentTemplateId\n * @param attachmentId\n */\n getAttachmentText(documentTemplateId: string, attachmentId: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachmentText/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a document template\n * @param documentTemplateId\n */\n getDocumentTemplate(documentTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Download a the document template attachment\n * @param documentTemplateId\n * @param attachmentId\n */\n getDocumentTemplateAttachment(documentTemplateId: string, attachmentId: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a document's attachment\n * @param body\n * @param documentTemplateId\n */\n setDocumentTemplateAttachment(documentTemplateId: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a document's attachment\n * @param body\n * @param documentTemplateId\n */\n setDocumentTemplateAttachmentJson(documentTemplateId: string, body?: string): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}/attachmentJson` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document template.\n * @summary Modify a document template with the current user\n * @param body\n * @param documentTemplateId\n */\n updateDocumentTemplate(documentTemplateId: string, body?: DocumentTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/doctemplate/${encodeURIComponent(String(documentTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocumentTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Document } from '../model/Document'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccDocumentApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Creates a document and returns an instance of created document afterward\n * @summary Create a document\n * @param body\n */\n createDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId\n */\n deleteAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a batch of documents and returns the list of deleted document ids\n * @summary Delete a document\n * @param documentIds\n */\n deleteDocument(documentIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List documents found By type, By Healthcare Party and secret foreign keys.\n * @param documentTypeCode\n * @param hcPartyId\n * @param secretFKeys\n */\n findByTypeHCPartyMessageSecretFKeys(documentTypeCode: string, hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/document/byTypeHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (documentTypeCode ? '&documentTypeCode=' + encodeURIComponent(String(documentTypeCode)) : '') +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List documents found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findDocumentsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/document/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List documents with no delegation\n * @param limit\n */\n findWithoutDelegation(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/document/woDelegation` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the document corresponding to the identifier passed in the request\n * @summary Get a document\n * @param documentId\n */\n getDocument(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/${encodeURIComponent(String(documentId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Load document's attachment\n * @param documentId\n * @param attachmentId\n * @param enckeys\n * @param fileName\n */\n getDocumentAttachment(documentId: string, attachmentId: string, enckeys?: string, fileName?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '') +\n (fileName ? '&fileName=' + encodeURIComponent(String(fileName)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the first document corresponding to the externalUuid passed in the request\n * @summary Get a document\n * @param externalUuid\n */\n getDocumentByExternalUuid(externalUuid: string): Promise {\n let _body = null\n\n const _url = this.host + `/document/externaluuid/${encodeURIComponent(String(externalUuid))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of document corresponding to the identifiers passed in the body\n * @summary Get a batch of document\n * @param body\n */\n getDocuments(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of document corresponding to the externalUuid passed in the request\n * @summary Get all documents with externalUuid\n * @param externalUuid\n */\n getDocumentsByExternalUuid(externalUuid: string): Promise> {\n let _body = null\n\n const _url = this.host + `/document/externaluuid/${encodeURIComponent(String(externalUuid))}/all` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Updates the document and returns an instance of the modified document afterward\n * @summary Update a document\n * @param body\n */\n modifyDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified documents.\n * @summary Update a batch of documents\n * @param body\n */\n modifyDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a document's attachment and returns the modified document instance afterward\n * @summary Create a document's attachment\n * @param body\n * @param documentId\n * @param enckeys\n */\n setDocumentAttachment(documentId: string, enckeys?: string, body?: Object): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/attachment` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a document attachment and returns the modified document instance afterward\n * @summary Create a document's attachment\n * @param body\n * @param documentId\n * @param enckeys\n */\n setDocumentAttachmentBody(documentId: string, enckeys?: string, body?: Object): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/document/attachment` +\n '?ts=' +\n new Date().getTime() +\n (documentId ? '&documentId=' + encodeURIComponent(String(documentId)) : '') +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a document's attachment\n * @param attachment\n * @param documentId\n * @param enckeys\n */\n setDocumentAttachmentMulti(attachment: ArrayBuffer, documentId: string, enckeys?: string): Promise {\n let _body = null\n if (attachment && !_body) {\n const parts = Array.isArray(attachment) ? (attachment as any[]) : [attachment as ArrayBuffer]\n const _blob = new Blob(parts, { type: 'application/octet-stream' })\n _body = new FormData()\n _body.append('attachment', _blob)\n }\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/attachment/multipart` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'multipart/form-data'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in healthElements.\n * @param body\n */\n setDocumentsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/document/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a secondary attachment for a document and returns the modified document instance afterward\n * @summary Creates or modifies a secondary attachment for a document\n * @param documentId id of the document to update\n * @param key Key of the secondary attachment to update\n * @param rev Revision of the latest known version of the document. If the revision does not match the current version of the document the method\n * will fail with CONFLICT status\n * @param attachment\n * @param utis Utis for the attachment\n * @return the updated document\n */\n setSecondaryAttachment(documentId: string, key: string, rev: string, attachment: Object, utis?: Array): Promise {\n const _url =\n this.host +\n `/document/` +\n encodeURIComponent(String(documentId)) +\n '/secondaryAttachments/' +\n encodeURIComponent(String(key)) +\n '?ts=' +\n new Date().getTime() +\n (rev ? '&rev=' + encodeURIComponent(String(rev)) : '') +\n (utis ? utis.map((x) => '&utis=' + encodeURIComponent(String(x))).join('') : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, attachment, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get the secondary attachment with the provided key for a document\n * @summary Retrieve a secondary attachment of a document\n * @param documentId id of the document\n * @param key Key of the secondary attachment to retrieve\n * @param fileName\n * @return the content of the attachment\n */\n getSecondaryAttachment(documentId: string, key: string, fileName?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/secondaryAttachments/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (fileName ? '&fileName=' + encodeURIComponent(String(fileName)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId id of the document\n * @param key Key of the secondary attachment to delete\n * @param rev Revision of the latest known version of the document. If the revision does not match the current version of the document the method will fail with CONFLICT status\n * @return the updated document\n */\n deleteSecondaryAttachment(documentId: string, key: string, rev: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/document/${encodeURIComponent(String(documentId))}/secondaryAttachments/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (rev ? '&rev=' + encodeURIComponent(String(rev)) : '')\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n // TODO single request multi-attachment update\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { EntityReference } from '../model/EntityReference'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccEntityrefApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Create an entity reference\n * @param body\n */\n createEntityReference(body?: EntityReference): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/entityref` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityReference(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Find latest reference for a prefix\n * @param prefix\n */\n getLatest(prefix: string): Promise {\n let _body = null\n\n const _url = this.host + `/entityref/latest/${encodeURIComponent(String(prefix))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityReference(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { EntityTemplate } from '../model/EntityTemplate'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccEntitytemplateApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Type, EntityTemplate and Version are required.\n * @summary Create a EntityTemplate\n * @param body\n */\n createEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/entitytemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplates.\n * @summary Create a batch of entityTemplates\n * @param body\n */\n createEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/entitytemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete entity templates\n * @param entityTemplateIds\n */\n deleteEntityTemplate(entityTemplateIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/entitytemplate/${encodeURIComponent(String(entityTemplateIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by entityTemplate, type and version with pagination.\n * @param type\n * @param searchString\n * @param includeEntities\n */\n findAllEntityTemplates(type: string, searchString?: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/findAll/${encodeURIComponent(String(type))}` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by entityTemplate, type and version with pagination.\n * @param type\n * @param keyword\n * @param includeEntities\n */\n findAllEntityTemplatesByKeyword(type: string, keyword: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/findAll/${encodeURIComponent(String(type))}/keyword/${encodeURIComponent(String(keyword))}` +\n '?ts=' +\n new Date().getTime() +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by userId, entityTemplate, type and version with pagination.\n * @param userId\n * @param type\n * @param searchString\n * @param includeEntities\n */\n findEntityTemplates(userId: string, type: string, searchString?: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/find/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(type))}` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of entityTemplates matched with given input.\n * @summary Finding entityTemplates by userId, type and keyword.\n * @param userId\n * @param type\n * @param keyword\n * @param includeEntities\n */\n findEntityTemplatesByKeyword(userId: string, type: string, keyword: string, includeEntities?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/entitytemplate/find/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(type))}/keyword/${encodeURIComponent(\n String(keyword)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (includeEntities ? '&includeEntities=' + encodeURIComponent(String(includeEntities)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a entityTemplate based on ID or (entityTemplate,type,version) as query strings. (entityTemplate,type,version) is unique.\n * @summary Get a entityTemplate\n * @param entityTemplateId EntityTemplate id\n */\n getEntityTemplate(entityTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/entitytemplate/${encodeURIComponent(String(entityTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of entityTemplates by ids\n * @param entityTemplateIds\n */\n getEntityTemplates(entityTemplateIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/entitytemplate/byIds/${encodeURIComponent(String(entityTemplateIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, entityTemplate, version) is not allowed.\n * @summary Modify a entityTemplate\n * @param body\n */\n modifyEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/entitytemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplates.\n * @summary Modify a batch of entityTemplates\n * @param body\n */\n modifyEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/entitytemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Form } from '../model/Form'\nimport { FormTemplate } from '../model/FormTemplate'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccFormApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n createForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form template.\n * @summary Create a form template with the current user\n * @param body\n */\n createFormTemplate(body?: FormTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/template` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created forms.\n * @summary Create a batch of forms\n * @param body\n */\n createForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete a form template\n * @param formTemplateId\n */\n deleteFormTemplate(formTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted forms.\n * @summary Delete forms.\n * @param formIds\n */\n deleteForms(formIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/form/${encodeURIComponent(String(formIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all form templates for current user\n * @param loadLayout\n */\n findFormTemplates(loadLayout?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host + `/form/template` + '?ts=' + new Date().getTime() + (loadLayout ? '&loadLayout=' + encodeURIComponent(String(loadLayout)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all form templates\n * @param specialityCode\n * @param loadLayout\n */\n findFormTemplatesBySpeciality(specialityCode: string, loadLayout?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/template/bySpecialty/${encodeURIComponent(String(specialityCode))}` +\n '?ts=' +\n new Date().getTime() +\n (loadLayout ? '&loadLayout=' + encodeURIComponent(String(loadLayout)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List forms found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param healthElementId\n * @param planOfActionId\n * @param formTemplateId\n * @param body\n */\n findFormsByHCPartyPatientForeignKeysUsingPost(\n hcPartyId: string,\n healthElementId?: string,\n planOfActionId?: string,\n formTemplateId?: string,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (healthElementId ? '&healthElementId=' + encodeURIComponent(String(healthElementId)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (formTemplateId ? '&formTemplateId=' + encodeURIComponent(String(formTemplateId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List forms found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n * @param healthElementId\n * @param planOfActionId\n * @param formTemplateId\n */\n findFormsByHCPartyPatientForeignKeys(\n hcPartyId: string,\n secretFKeys: string,\n healthElementId?: string,\n planOfActionId?: string,\n formTemplateId?: string\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (healthElementId ? '&healthElementId=' + encodeURIComponent(String(healthElementId)) : '') +\n (planOfActionId ? '&planOfActionId=' + encodeURIComponent(String(planOfActionId)) : '') +\n (formTemplateId ? '&formTemplateId=' + encodeURIComponent(String(formTemplateId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List form stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List form stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findFormsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of forms by ids\n * @param formId\n * @param hcPartyId\n */\n getChildrenForms(formId: string, hcPartyId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/form/childrenOf/${encodeURIComponent(String(formId))}/${encodeURIComponent(String(hcPartyId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form\n * @param formId\n */\n getForm(formId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/${encodeURIComponent(String(formId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets the most recent form with the given logicalUuid\n * @param logicalUuid\n */\n getFormByLogicalUuid(logicalUuid: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/logicalUuid/${encodeURIComponent(String(logicalUuid))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets the most recent form with the given uniqueId\n * @param uniqueId\n */\n getFormByUniqueId(uniqueId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/uniqueId/${encodeURIComponent(String(uniqueId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form template by guid\n * @param formTemplateId\n */\n getFormTemplate(formTemplateId: string): Promise {\n let _body = null\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a form template\n * @param formTemplateGuid\n * @param specialityCode\n */\n getFormTemplatesByGuid(formTemplateGuid: string, specialityCode: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/form/template/${encodeURIComponent(String(specialityCode))}/guid/${encodeURIComponent(String(formTemplateGuid))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FormTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of forms by ids\n * @param body\n */\n getForms(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all forms with given logicalUuid\n * @param logicalUuid\n */\n getFormsByLogicalUuid(logicalUuid: string): Promise> {\n let _body = null\n\n const _url = this.host + `/form/all/logicalUuid/${encodeURIComponent(String(logicalUuid))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all forms by uniqueId\n * @param uniqueId\n */\n getFormsByUniqueId(uniqueId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/form/all/uniqueId/${encodeURIComponent(String(uniqueId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified form.\n * @summary Modify a form\n * @param body\n */\n modifyForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified forms.\n * @summary Modify a batch of forms\n * @param body\n */\n modifyForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a form to a healthcare party. Returns the form with the new delegations.\n * @summary Delegates a form to a healthcare party\n * @param body\n * @param formId\n */\n newFormDelegations(formId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/delegate/${encodeURIComponent(String(formId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in form.\n * @param body\n */\n setFormsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Update a form template's layout\n * @param attachment\n * @param formTemplateId\n */\n setTemplateAttachmentMulti(attachment: ArrayBuffer, formTemplateId: string): Promise {\n let _body = null\n if (attachment && !_body) {\n const parts = Array.isArray(attachment) ? (attachment as any[]) : [attachment as ArrayBuffer]\n const _blob = new Blob(parts, { type: 'application/octet-stream' })\n _body = new FormData()\n _body.append('attachment', _blob)\n }\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}/attachment/multipart` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'multipart/form-data'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form template.\n * @summary Modify a form template with the current user\n * @param body\n * @param formTemplateId\n */\n updateFormTemplate(formTemplateId: string, body?: FormTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/form/template/${encodeURIComponent(String(formTemplateId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FormTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FrontEndMigration } from '../model/FrontEndMigration'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccFrontendmigrationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a front end migration\n * @param body\n */\n createFrontEndMigration(body?: FrontEndMigration): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a front end migration\n * @param frontEndMigrationId\n */\n deleteFrontEndMigration(frontEndMigrationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/frontendmigration/${encodeURIComponent(String(frontEndMigrationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a front end migration\n * @param frontEndMigrationId\n */\n getFrontEndMigration(frontEndMigrationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/frontendmigration/${encodeURIComponent(String(frontEndMigrationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an front end migration\n * @param frontEndMigrationName\n */\n getFrontEndMigrationByName(frontEndMigrationName: string): Promise> {\n let _body = null\n\n const _url = this.host + `/frontendmigration/byName/${encodeURIComponent(String(frontEndMigrationName))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FrontEndMigration(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a front end migration\n */\n getFrontEndMigrations(): Promise> {\n let _body = null\n\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new FrontEndMigration(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies a front end migration\n * @param body\n */\n modifyFrontEndMigration(body?: FrontEndMigration): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/frontendmigration` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new FrontEndMigration(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DatabaseInitialisation } from '../model/DatabaseInitialisation'\nimport { Group } from '../model/Group'\nimport { GroupDatabasesInfo } from '../model/GroupDatabasesInfo'\nimport { GroupDeletionReport } from '../model/GroupDeletionReport'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { ListOfProperties } from '../model/ListOfProperties'\nimport { PaginatedListGroup } from '../model/PaginatedListGroup'\nimport { RegistrationInformation } from '../model/RegistrationInformation'\nimport { RegistrationSuccess } from '../model/RegistrationSuccess'\nimport { ReplicationInfo } from '../model/ReplicationInfo'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccGroupApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Create a new group and associated dbs. The created group will be manageable by the users that belong to the same group as the one that called createGroup. Several tasks can be executed during the group creation like DB replications towards the created DBs, users creation and healthcare parties creation\n * @summary Create a group\n * @param body\n * @param id The id of the group, also used for subsequent authentication against the db (can only contain digits, letters, - and _)\n * @param name The name of the group\n * @param type The type of the group.\n * @param password The password of the group (can only contain digits, letters, - and _)\n * @param server The server on which the group dbs will be created\n * @param q The number of shards for patient and healthdata dbs : 3-8 is a recommended range of value\n * @param n The number of replications for dbs : 3 is a recommended value\n * @param superGroup Group parent\n */\n createGroup(\n id: string,\n name: string,\n password: string,\n server?: string,\n q?: number,\n n?: number,\n superGroup?: string,\n type?: string,\n body?: DatabaseInitialisation\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (name ? '&name=' + encodeURIComponent(String(name)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (server ? '&server=' + encodeURIComponent(String(server)) : '') +\n (q ? '&q=' + encodeURIComponent(String(q)) : '') +\n (n ? '&n=' + encodeURIComponent(String(n)) : '') +\n (superGroup ? '&superGroup=' + encodeURIComponent(String(superGroup)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete group without reset or deleteing storage\n * @summary Delete group\n * @param id The id of group to delete\n */\n deleteGroup(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List groups that are the children of the group with the provided parent id\n * @summary Find groups by parent\n * @param id The id of the group\n * @param startDocumentId A group document ID used as a cursor for pagination\n * @param limit Number of rows\n */\n findGroups(id: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/children` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List groups that are the children of the group with the provided parent id and that match the provided search string\n * @summary Find groups by parent and content\n * @param id The id of the group\n * @param searchString The string to search for in the group. Properties, name and id are scanned for the provided search string.\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A group document ID used as a cursor for pagination\n * @param limit Number of rows\n */\n findGroupsWithContent(id: string, searchString: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/children/search` +\n '?ts=' +\n new Date().getTime() +\n (searchString ? '&searchString=' + encodeURIComponent(String(searchString)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListGroup(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get the name of the parent of the group identified by id\n * @summary Get a parent group name by id of the child\n * @param id The id of the child group\n */\n getNameOfParentGroup(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/parent/name` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body as string)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a group by id\n * @summary Get a group by id\n * @param id The id of the group\n */\n getGroup(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Reset storage\n * @summary Reset storage for group\n * @param body\n */\n getGroupsStorageInfos(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/group/storage/info` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new GroupDatabasesInfo(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get index info\n * @param id The id of the group\n */\n getReplicationInfo1(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/r` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicationInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Hard deletes the provided group from CouchDB. This operation can only be done by an admin user\n * @summary Hard delete group\n * @param id The id of group to delete\n */\n hardDeleteGroup(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/group/hard/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new GroupDeletionReport(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Init design docs for provided group\n * @summary Init design docs\n * @param id The id of the group\n * @param clazz The class of the design doc\n * @param warmup Warmup the design doc\n */\n initDesignDocs(id: string, clazz?: string, warmup?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/dd` +\n '?ts=' +\n new Date().getTime() +\n (clazz ? '&clazz=' + encodeURIComponent(String(clazz)) : '') +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '')\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List available apps for user\n * @summary List apps\n */\n listApps(): Promise> {\n let _body = null\n\n const _url = this.host + `/group/apps` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Group(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * List existing groups\n * @summary List groups\n */\n listGroups(): Promise> {\n let _body = null\n\n const _url = this.host + `/group` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Group(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update existing group name\n * @summary Update group name\n * @param id The id of the group\n * @param name The new name for the group\n */\n modifyGroupName(id: string, name: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/name/${encodeURIComponent(String(name))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update existing group properties\n * @summary Update group properties\n * @param body\n * @param id The id of the group\n */\n modifyGroupProperties(id: string, body?: ListOfProperties): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/properties` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a new group and associated dbs. The created group will be manageable by the users that belong to the same group as the one that called createGroup. Several tasks can be executed during the group creation like DB replications towards the created DBs, users creation and healthcare parties creation\n * @summary Create a group\n * @param body\n * @param type The tyoe of the group (default: root)\n * @param role The role of the user (default: admin)\n */\n registerNewGroupAdministrator(type?: string, role?: string, body?: RegistrationInformation): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/register/trial` +\n '?ts=' +\n new Date().getTime() +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (role ? '&role=' + encodeURIComponent(String(role)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new RegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Reset storage\n * @summary Reset storage for group\n * @param body\n * @param id The id of the group\n * @param q The number of shards for patient and healthdata dbs : 3-8 is a recommended range of value\n * @param n The number of replications for dbs : 3 is a recommended value\n */\n resetStorage(id: string, q?: number, n?: number, body?: ListOfIds): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/reset/storage` +\n '?ts=' +\n new Date().getTime() +\n (q ? '&q=' + encodeURIComponent(String(q)) : '') +\n (n ? '&n=' + encodeURIComponent(String(n)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Update password for provided group\n * @summary Set group password\n * @param id The id of the group\n * @param password The new password for the group (can only contain digits, letters, - and _)\n */\n setGroupPassword(id: string, password: string): Promise {\n let _body = null\n\n const _url = this.host + `/group/${encodeURIComponent(String(id))}/password` + '?ts=' + new Date().getTime()\n let headers = this.headers\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Group(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Solve conflicts for group\n * @summary Solve conflicts for group\n * @param id The id of the group\n * @param limit Solve at most limit conflicts\n * @param warmup Warmup the design doc\n */\n solveConflicts(id: string, limit?: number, warmup?: boolean): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/group/${encodeURIComponent(String(id))}/conflicts` +\n '?ts=' +\n new Date().getTime() +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterHealthcareParty } from '../model/AbstractFilterHealthcareParty'\nimport { DataOwnerRegistrationSuccess } from '../model/DataOwnerRegistrationSuccess'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainHealthcareParty } from '../model/FilterChainHealthcareParty'\nimport { HealthcareParty } from '../model/HealthcareParty'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListHealthcareParty } from '../model/PaginatedListHealthcareParty'\nimport { PublicKey } from '../model/PublicKey'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccHcpartyApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a healthcare party\n * @param body\n */\n createHealthcareParty(body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * One of Name or Last name+First name, Nihii, and Public key are required.\n * @summary Create a healthcare party\n * @param body\n * @param groupId\n */\n createHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deleting a healthcareParty. Response is an array containing the id of deleted healthcare party.\n * @summary Delete a healthcare party\n * @param healthcarePartyIds\n */\n deleteHealthcareParties(healthcarePartyIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deleting a healthcareParty. Response is an array containing the id of deleted healthcare party.\n * @summary Delete a healthcare party\n * @param groupId\n * @param healthcarePartyIds\n */\n deleteHealthcarePartiesInGroup(groupId: string, healthcarePartyIds: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/inGroup/${encodeURIComponent(String(groupId))}/${encodeURIComponent(String(healthcarePartyIds))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare party along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter healthcare parties for the current user (HcParty)\n * @param body\n * @param startDocumentId A HealthcareParty document ID\n * @param limit Number of rows\n */\n filterHealthPartiesBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/hcparty/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param name The Last name search value\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n findByName(name?: string, startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/byName` +\n '?ts=' +\n new Date().getTime() +\n (name ? '&name=' + encodeURIComponent(String(name)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param type The type of the HCP (persphysician)\n * @param spec The speciality of the HCP\n * @param firstCode The first postCode for the HCP\n * @param lastCode The last postCode for the HCP\n * @param limit Number of rows\n */\n findBySpecialityAndPostCode(\n type: string,\n spec: string,\n firstCode: string,\n lastCode: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/bySpecialityAndPostCode/${encodeURIComponent(String(type))}/${encodeURIComponent(String(spec))}/${encodeURIComponent(\n String(firstCode)\n )}/to/${encodeURIComponent(String(lastCode))}` +\n '?ts=' +\n new Date().getTime() +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by nihii or ssin with(out) pagination\n * @param searchValue\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n findBySsinOrNihii(\n searchValue: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n desc?: boolean\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty/byNihiiOrSsin/${encodeURIComponent(String(searchValue))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param healthcarePartyId\n */\n getAesExchangeKeysForDelegate(\n healthcarePartyId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the current healthcare Party\n * @summary Get the current healthcare party if logged in.\n */\n getCurrentHealthcareParty(): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES key)\n * @summary Get the HcParty encrypted AES keys indexed by owner. As a HCp may now have multiple AES keys, this service is deprecated. Use /{healthcarePartyId}/aesExchangeKeys\n * @param healthcarePartyId\n */\n getHcPartyKeysForDelegate(healthcarePartyId: string): Promise<{ [key: string]: string }> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}/keys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get healthcareParties by their IDs\n * @param healthcarePartyIds\n */\n getHealthcareParties(healthcarePartyIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/byIds/${encodeURIComponent(String(healthcarePartyIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Return a list of children hcp.\n * @summary Find children of an healthcare parties\n * @param parentId\n */\n getHealthcarePartiesByParentId(parentId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(parentId))}/children` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get healthcareParties by their IDs\n * @param body\n * @param groupId\n */\n getHealthcarePartiesInGroup(groupId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the healthcare Party\n * @summary Get a healthcareParty by his ID\n * @param healthcarePartyId\n */\n getHealthcareParty(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the public key of a healthcare party in Hex\n * @summary Get public key of a healthcare party\n * @param healthcarePartyId\n */\n getPublicKey(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/hcparty/${encodeURIComponent(String(healthcarePartyId))}/publicKey` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PublicKey(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary Find healthcare parties by name with(out) pagination\n * @param name The Last name search value\n */\n listByName(name: string): Promise> {\n let _body = null\n\n const _url = this.host + `/hcparty/byNameStrict/${encodeURIComponent(String(name))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthcareParty(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of healthcare parties.\n * @summary List healthcare parties with(out) pagination\n * @param startKey A healthcare party Last name\n * @param startDocumentId A healthcare party document ID\n * @param limit Number of rows\n * @param desc Descending\n */\n listHealthcareParties(startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/hcparty` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of healthcare party matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchHealthcarePartiesBy(body?: AbstractFilterHealthcareParty): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Healthcare Party.\n * @param body\n */\n modifyHealthcareParty(body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a Healthcare Party.\n * @param body\n * @param groupId\n */\n modifyHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/hcparty/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthcareParty(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Register a new hcp into the system\n * @summary Register a hcp\n * @param body\n * @param groupId\n * @param parentHcPartyId\n * @param token\n * @param useShortToken\n */\n registerHealthcareParty(\n groupId: string,\n parentHcPartyId?: string,\n token?: string,\n useShortToken?: boolean,\n body?: HealthcareParty\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/hcparty/register/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (parentHcPartyId ? '&parentHcPartyId=' + encodeURIComponent(String(parentHcPartyId)) : '') +\n (token ? '&token=' + encodeURIComponent(String(token)) : '') +\n (useShortToken ? '&useShortToken=' + encodeURIComponent(String(useShortToken)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DataOwnerRegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterHealthElement } from '../model/AbstractFilterHealthElement'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainHealthElement } from '../model/FilterChainHealthElement'\nimport { HealthElement } from '../model/HealthElement'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListHealthElement } from '../model/PaginatedListHealthElement'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccHelementApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created healthcare element.\n * @summary Create a healthcare element with the current user\n * @param body\n */\n createHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created healthcare elements.\n * @summary Create a batch of healthcare elements\n * @param body\n */\n createHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted healthcare elements.\n * @summary Delete healthcare elements.\n * @param healthElementIds\n */\n deleteHealthElements(healthElementIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/helement/${encodeURIComponent(String(healthElementIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of health elements along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter health elements for the current user (HcParty)\n * @param body\n * @param startDocumentId A HealthElement document ID\n * @param limit Number of rows\n */\n filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/helement/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys hast to delimited by coma\n * @summary List healthcare elements found By Healthcare Party and secret foreign keyelementIds.\n * @param body\n * @param hcPartyId\n */\n findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys hast to delimited by coma\n * @summary List healthcare elements found By Healthcare Party and secret foreign keyelementIds.\n * @param hcPartyId\n * @param secretFKeys\n */\n findHealthElementsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/helement/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a healthcare element\n * @param healthElementId\n */\n getHealthElement(healthElementId: string): Promise {\n let _body = null\n\n const _url = this.host + `/helement/${encodeURIComponent(String(healthElementId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a list of healthElement by ids/keys.\n * @summary Get healthElements by batch\n * @param body\n */\n getHealthElements(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of health element matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchHealthElementsBy(body?: AbstractFilterHealthElement): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare element.\n * @summary Modify a healthcare element\n * @param body\n */\n modifyHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a healthcare element to a healthcare party (By current healthcare party). Returns the element with new delegations.\n * @summary Delegates a healthcare element to a healthcare party\n * @param body\n * @param healthElementId\n */\n newHealthElementDelegations(healthElementId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/${encodeURIComponent(String(healthElementId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in healthElements.\n * @param body\n */\n setHealthElementsDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/helement/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Contact } from '../model/Contact'\nimport { Document } from '../model/Document'\nimport { Form } from '../model/Form'\nimport { HealthElement } from '../model/HealthElement'\nimport { IndexingInfo } from '../model/IndexingInfo'\nimport { Invoice } from '../model/Invoice'\nimport { Message } from '../model/Message'\nimport { Patient } from '../model/Patient'\nimport { ReplicationInfo } from '../model/ReplicationInfo'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccIcureApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Get index info\n */\n getIndexingInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/i` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new IndexingInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get process info\n */\n getProcessInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/p` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get replication info\n */\n getReplicationInfo(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/r` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicationInfo(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get replication info\n * @param id\n */\n getReplicatorInfo(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/icure/r/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get user sync info\n */\n getUserSyncInfo(): Promise<{ [key: string]: { [key: string]: any } }> {\n let _body = null\n\n const _url = this.host + `/icure/sync/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get version\n */\n getVersion(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/v` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check if a user exists\n */\n isReady(): Promise {\n let _body = null\n\n const _url = this.host + `/icure/ok` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param loglevel\n * @param _package\n */\n loglevel(loglevel: string, _package: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/icure/loglevel/${encodeURIComponent(String(loglevel))}` +\n '?ts=' +\n new Date().getTime() +\n (_package ? '&_package=' + encodeURIComponent(String(_package)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Resolve contacts conflicts\n * @param limit\n */\n resolveContactsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/contact` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve documents conflicts\n * @param ids\n * @param limit\n */\n resolveDocumentsConflicts(ids?: string, limit?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/icure/conflicts/document` +\n '?ts=' +\n new Date().getTime() +\n (ids ? '&ids=' + encodeURIComponent(String(ids)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve forms conflicts\n * @param limit\n */\n resolveFormsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/form` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve healthcare elements conflicts\n * @param limit\n */\n resolveHealthElementsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url =\n this.host + `/icure/conflicts/healthelement` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve invoices conflicts\n * @param limit\n */\n resolveInvoicesConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/invoice` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary resolve messages conflicts\n * @param limit\n */\n resolveMessagesConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/message` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Resolve patients conflicts\n * @param limit\n */\n resolvePatientsConflicts(limit?: number): Promise> {\n let _body = null\n\n const _url = this.host + `/icure/conflicts/patient` + '?ts=' + new Date().getTime() + (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Force update design doc\n * @param entityName\n * @param warmup\n */\n updateDesignDoc(entityName: string, warmup?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/icure/dd/${encodeURIComponent(String(entityName))}` +\n '?ts=' +\n new Date().getTime() +\n (warmup ? '&warmup=' + encodeURIComponent(String(warmup)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Insurance } from '../model/Insurance'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccInsuranceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates an insurance\n * @param body\n */\n createInsurance(body?: Insurance): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/insurance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an insurance\n * @param insuranceId\n */\n deleteInsurance(insuranceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/insurance/${encodeURIComponent(String(insuranceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceId\n */\n getInsurance(insuranceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/insurance/${encodeURIComponent(String(insuranceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets insurances by id\n * @param body\n */\n getInsurances(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/insurance/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceCode\n */\n listInsurancesByCode(insuranceCode: string): Promise> {\n let _body = null\n\n const _url = this.host + `/insurance/byCode/${encodeURIComponent(String(insuranceCode))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an insurance\n * @param insuranceName\n */\n listInsurancesByName(insuranceName: string): Promise> {\n let _body = null\n\n const _url = this.host + `/insurance/byName/${encodeURIComponent(String(insuranceName))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Insurance(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an insurance\n * @param body\n */\n modifyInsurance(body?: Insurance): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/insurance` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Insurance(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainInvoice } from '../model/FilterChainInvoice'\nimport { IcureStub } from '../model/IcureStub'\nimport { Invoice } from '../model/Invoice'\nimport { InvoicingCode } from '../model/InvoicingCode'\nimport { LabelledOccurence } from '../model/LabelledOccurence'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListInvoice } from '../model/PaginatedListInvoice'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccInvoiceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Append codes to new or existing invoice\n * @param body\n * @param userId\n * @param type\n * @param sentMediumType\n * @param secretFKeys\n * @param insuranceId\n * @param invoiceId\n * @param gracePeriod\n */\n appendCodes(\n userId: string,\n type: string,\n sentMediumType: string,\n secretFKeys: string,\n insuranceId?: string,\n invoiceId?: string,\n gracePeriod?: number,\n body?: Array\n ): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(userId))}/append/${encodeURIComponent(String(type))}/${encodeURIComponent(\n String(sentMediumType)\n )}` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '') +\n (insuranceId ? '&insuranceId=' + encodeURIComponent(String(insuranceId)) : '') +\n (invoiceId ? '&invoiceId=' + encodeURIComponent(String(invoiceId)) : '') +\n (gracePeriod ? '&gracePeriod=' + encodeURIComponent(String(gracePeriod)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates an invoice\n * @param body\n */\n createInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the created invoices.\n * @summary Create a batch of invoices\n * @param body\n */\n createInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an invoice\n * @param invoiceId\n */\n deleteInvoice(invoiceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/invoice/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of invoices along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter invoices for the current user (HcParty)\n * @param body\n */\n filterInvoicesBy(body?: FilterChainInvoice): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/filter` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n * @param fromDate\n * @param toDate\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n findByAuthor(\n hcPartyId: string,\n fromDate?: number,\n toDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (fromDate ? '&fromDate=' + encodeURIComponent(String(fromDate)) : '') +\n (toDate ? '&toDate=' + encodeURIComponent(String(toDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices found By Healthcare Party and secret foreign patient keys.\n * @param body\n * @param hcPartyId\n */\n findInvoicesByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices found By Healthcare Party and secret foreign patient keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findInvoicesByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param body\n * @param hcPartyId\n */\n findInvoicesDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List helement stubs found By Healthcare Party and secret foreign keys.\n * @param hcPartyId\n * @param secretFKeys\n */\n findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartySecretForeignKeys/delegations` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an invoice\n * @param invoiceId\n */\n getInvoice(invoiceId: string): Promise {\n let _body = null\n\n const _url = this.host + `/invoice/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an invoice\n * @param body\n */\n getInvoices(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of all used tarifications frequencies in invoices\n * @param minOccurences\n */\n getTarificationsCodesOccurences(minOccurences: number): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/codes/${encodeURIComponent(String(minOccurences))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new LabelledOccurence(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices per status\n * @param body\n * @param status\n * @param from\n * @param to\n */\n listAllHcpsByStatus(status: string, from?: number, to?: number, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/allHcpsByStatus/${encodeURIComponent(String(status))}` +\n '?ts=' +\n new Date().getTime() +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param body\n */\n listByContactIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/byCtcts` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices by groupId\n * @param hcPartyId\n * @param groupId\n */\n listByHcPartyGroupId(hcPartyId: string, groupId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcPartyGroupId/${encodeURIComponent(String(hcPartyId))}/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys have to delimited by coma\n * @summary List invoices by type, sent or unsent\n * @param hcPartyId\n * @param sentMediumType\n * @param invoiceType\n * @param sent\n * @param from\n * @param to\n */\n listByHcPartySentMediumTypeInvoiceTypeSentDate(\n hcPartyId: string,\n sentMediumType: string,\n invoiceType: string,\n sent: boolean,\n from?: number,\n to?: number\n ): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcParty/${encodeURIComponent(String(hcPartyId))}/mediumType/${encodeURIComponent(\n String(sentMediumType)\n )}/invoiceType/${encodeURIComponent(String(invoiceType))}/sent/${encodeURIComponent(String(sent))}` +\n '?ts=' +\n new Date().getTime() +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all invoices by author, by sending mode, by status and by date\n * @param hcPartyId\n * @param sendingMode\n * @param status\n * @param from\n * @param to\n */\n listByHcpartySendingModeStatusDate(hcPartyId: string, sendingMode?: string, status?: string, from?: number, to?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/byHcpartySendingModeStatusDate/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sendingMode ? '&sendingMode=' + encodeURIComponent(String(sendingMode)) : '') +\n (status ? '&status=' + encodeURIComponent(String(status)) : '') +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param invoiceIds\n */\n listByIds(invoiceIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/byIds/${encodeURIComponent(String(invoiceIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param recipientIds\n */\n listByRecipientsIds(recipientIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/to/${encodeURIComponent(String(recipientIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param serviceIds\n */\n listByServiceIds(serviceIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/invoice/byServiceIds/${encodeURIComponent(String(serviceIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param userIds\n */\n listToInsurances(userIds?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toInsurances` + '?ts=' + new Date().getTime() + (userIds ? '&userIds=' + encodeURIComponent(String(userIds)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param userIds\n */\n listToInsurancesUnsent(userIds?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toInsurances/unsent` + '?ts=' + new Date().getTime() + (userIds ? '&userIds=' + encodeURIComponent(String(userIds)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n */\n listToPatients(hcPartyId?: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/invoice/toPatients` + '?ts=' + new Date().getTime() + (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param hcPartyId\n */\n listToPatientsUnsent(hcPartyId?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/toPatients/unsent` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param body\n * @param invoiceId\n */\n mergeTo(invoiceId: string, body?: ListOfIds): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/mergeTo/${encodeURIComponent(String(invoiceId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an invoice\n * @param body\n */\n modifyInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified invoices.\n * @summary Modify a batch of invoices\n * @param body\n */\n modifyInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Adds a delegation to a invoice\n * @param body\n * @param invoiceId\n */\n newInvoiceDelegations(invoiceId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/${encodeURIComponent(String(invoiceId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an invoice\n * @param body\n */\n reassignInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/reassign` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary removeCodes for linked serviceId\n * @param body\n * @param userId\n * @param serviceId\n * @param secretFKeys\n */\n removeCodes(userId: string, serviceId: string, secretFKeys: string, body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/invoice/byauthor/${encodeURIComponent(String(userId))}/service/${encodeURIComponent(String(serviceId))}` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Update delegations in healthElements.\n * @param body\n */\n setInvoicesDelegations(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/invoice/delegations` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IcureStub(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all invoices for author at date\n * @param invoiceId\n * @param scheme\n * @param forcedValue\n */\n validate(invoiceId: string, scheme: string, forcedValue: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/invoice/validate/${encodeURIComponent(String(invoiceId))}` +\n '?ts=' +\n new Date().getTime() +\n (scheme ? '&scheme=' + encodeURIComponent(String(scheme)) : '') +\n (forcedValue ? '&forcedValue=' + encodeURIComponent(String(forcedValue)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Keyword } from '../model/Keyword'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccKeywordApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created keyword.\n * @summary Create a keyword with the current user\n * @param body\n */\n createKeyword(body?: Keyword): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/keyword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted keywords.\n * @summary Delete keywords.\n * @param keywordIds\n */\n deleteKeywords(keywordIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/keyword/${encodeURIComponent(String(keywordIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get a keyword\n * @param keywordId\n */\n getKeyword(keywordId: string): Promise {\n let _body = null\n\n const _url = this.host + `/keyword/${encodeURIComponent(String(keywordId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all keywords\n */\n getKeywords(): Promise> {\n let _body = null\n\n const _url = this.host + `/keyword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Keyword(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get keywords by user\n * @param userId\n */\n getKeywordsByUser(userId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/keyword/byUser/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Keyword(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified keyword.\n * @summary Modify a keyword\n * @param body\n */\n modifyKeyword(body?: Keyword): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/keyword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Keyword(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainMaintenanceTask } from '../model/FilterChainMaintenanceTask'\nimport { MaintenanceTask } from '../model/MaintenanceTask'\nimport { PaginatedListMaintenanceTask } from '../model/PaginatedListMaintenanceTask'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccMaintenanceTaskApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a maintenanceTask\n * @param body\n */\n createMaintenanceTask(body?: MaintenanceTask): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/maintenancetask` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Delete maintenanceTasks\n * @param maintenanceTaskIds\n */\n deleteMaintenanceTask(maintenanceTaskIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/maintenancetask/${encodeURIComponent(String(maintenanceTaskIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of maintenanceTasks along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter maintenanceTasks for the current user (HcParty)\n * @param body\n * @param startDocumentId A maintenanceTask document ID\n * @param limit Number of rows\n */\n filterMaintenanceTasksBy(startDocumentId?: string, limit?: number, body?: FilterChainMaintenanceTask): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/maintenancetask/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a maintenanceTask\n * @param maintenanceTaskId\n */\n getMaintenanceTask(maintenanceTaskId: string): Promise {\n let _body = null\n\n const _url = this.host + `/maintenancetask/${encodeURIComponent(String(maintenanceTaskId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a maintenanceTask\n * @param body\n */\n modifyMaintenanceTask(body?: MaintenanceTask): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/maintenancetask` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MaintenanceTask(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { MedexInfo } from '../model/MedexInfo'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccMedexApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Generate a Medex XML String\n * @param body\n */\n generateMedex(body?: MedexInfo): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/medex/generate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { MedicalLocation } from '../model/MedicalLocation'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccMedicallocationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a medical location\n * @param body\n */\n createMedicalLocation(body?: MedicalLocation): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/medicallocation` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a medical location\n * @param locationIds\n */\n deleteMedicalLocation(locationIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/medicallocation/${encodeURIComponent(String(locationIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a medical location\n * @param locationId\n */\n getMedicalLocation(locationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/medicallocation/${encodeURIComponent(String(locationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all medical locations\n */\n getMedicalLocations(): Promise> {\n let _body = null\n\n const _url = this.host + `/medicallocation` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new MedicalLocation(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies a medical location\n * @param body\n */\n modifyMedicalLocation(body?: MedicalLocation): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/medicallocation` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new MedicalLocation(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { IcureStub } from '../model/IcureStub'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { Message } from '../model/Message'\nimport { MessagesReadStatusUpdate } from '../model/MessagesReadStatusUpdate'\nimport { PaginatedListMessage } from '../model/PaginatedListMessage'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccMessageApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a message\n * @param body\n */\n createMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a message delegation\n * @param messageId\n * @param delegateId\n */\n deleteDelegation(messageId: string, delegateId: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/${encodeURIComponent(String(messageId))}/delegate/${encodeURIComponent(String(delegateId))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes multiple messages\n * @param messageIds\n */\n deleteMessages(messageIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes multiple messages\n * @param body\n */\n deleteMessagesBatch(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/delete/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party\n * @param startKey\n * @param startDocumentId\n * @param limit\n */\n findMessages(startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided from address\n * @param fromAddress\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n findMessagesByFromAddress(\n fromAddress?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byFromAddress` +\n '?ts=' +\n new Date().getTime() +\n (fromAddress ? '&fromAddress=' + encodeURIComponent(String(fromAddress)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary List messages found By Healthcare Party and secret foreign keys.\n * @param body\n */\n findMessagesByHCPartyPatientForeignKeysUsingPost(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/byHcPartySecretForeignKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl)\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary List messages found By Healthcare Party and secret foreign keys.\n * @param secretFKeys\n */\n findMessagesByHCPartyPatientForeignKeys(secretFKeys: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/message/byHcPartySecretForeignKeys` +\n '?ts=' +\n new Date().getTime() +\n (secretFKeys ? '&secretFKeys=' + encodeURIComponent(String(secretFKeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided to address\n * @param toAddress\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param reverse\n * @param hcpId\n */\n findMessagesByToAddress(\n toAddress?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n reverse?: boolean,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byToAddress` +\n '?ts=' +\n new Date().getTime() +\n (toAddress ? '&toAddress=' + encodeURIComponent(String(toAddress)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (reverse ? '&reverse=' + encodeURIComponent(String(reverse)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages (paginated) for current HC Party and provided transportGuid\n * @param transportGuid\n * @param received\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n findMessagesByTransportGuid(\n transportGuid?: string,\n received?: boolean,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byTransportGuid` +\n '?ts=' +\n new Date().getTime() +\n (transportGuid ? '&transportGuid=' + encodeURIComponent(String(transportGuid)) : '') +\n (received ? '&received=' + encodeURIComponent(String(received)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages starting by a prefix between two date\n * @param transportGuid\n * @param from\n * @param to\n * @param startKey\n * @param startDocumentId\n * @param limit\n * @param hcpId\n */\n findMessagesByTransportGuidSentDate(\n transportGuid?: string,\n from?: number,\n to?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n hcpId?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/message/byTransportGuidSentDate` +\n '?ts=' +\n new Date().getTime() +\n (transportGuid ? '&transportGuid=' + encodeURIComponent(String(transportGuid)) : '') +\n (from ? '&from=' + encodeURIComponent(String(from)) : '') +\n (to ? '&to=' + encodeURIComponent(String(to)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListMessage(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param messageId\n */\n getChildrenMessages(messageId: string): Promise> {\n let _body = null\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageId))}/children` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param body\n */\n getChildrenMessagesOfList(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/children/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a message\n * @param messageId\n */\n getMessage(messageId: string): Promise {\n let _body = null\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get children messages of provided message\n * @param body\n */\n listMessagesByInvoiceIds(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/byInvoiceId` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get all messages for current HC Party and provided transportGuids\n * @param body\n * @param hcpId\n */\n listMessagesByTransportGuids(hcpId: string, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url =\n this.host + `/message/byTransportGuid/list` + '?ts=' + new Date().getTime() + (hcpId ? '&hcpId=' + encodeURIComponent(String(hcpId)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a message\n * @param body\n */\n modifyMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Adds a delegation to a message\n * @param body\n * @param messageId\n */\n newMessageDelegations(messageId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/${encodeURIComponent(String(messageId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new IcureStub(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set read status for given list of messages\n * @param body\n */\n setMessagesReadStatus(body?: MessagesReadStatusUpdate): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/readstatus` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set status bits for given list of messages\n * @param body\n * @param status\n */\n setMessagesStatusBits(status: number, body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/message/status/${encodeURIComponent(String(status))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterPatient } from '../model/AbstractFilterPatient'\nimport { Content } from '../model/Content'\nimport { DataOwnerRegistrationSuccess } from '../model/DataOwnerRegistrationSuccess'\nimport { Delegation } from '../model/Delegation'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainPatient } from '../model/FilterChainPatient'\nimport { IdWithRev } from '../model/IdWithRev'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListPatient } from '../model/PaginatedListPatient'\nimport { PaginatedListString } from '../model/PaginatedListString'\nimport { Patient } from '../model/Patient'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPatientApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns the id and _rev of created patients\n * @summary Create patients in bulk\n * @param body\n */\n bulkCreatePatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of created patients\n * @summary Create patients in bulk\n * @param body\n */\n bulkCreatePatients1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified patients\n * @summary Modify patients in bulk\n * @param body\n */\n bulkUpdatePatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the id and _rev of modified patients\n * @summary Modify patients in bulk\n * @param body\n */\n bulkUpdatePatients1(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/bulk` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new IdWithRev(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the count of patients\n * @summary Get count of patients for a specific HcParty or for the current HcParty\n * @param hcPartyId Healthcare party id\n */\n countOfPatients(hcPartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/hcParty/${encodeURIComponent(String(hcPartyId))}/count` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Content(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Name, last name, date of birth, and gender are required. After creation of the patient and obtaining the ID, you need to create an initial delegation.\n * @summary Create a patient\n * @param body\n */\n createPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is an array containing the ID of deleted patient..\n * @summary Delete patients.\n * @param patientIds\n */\n deletePatient(patientIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter patients for the current user (HcParty)\n * @param body\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param skip Skip rows\n * @param sort Sort key\n * @param desc Descending\n */\n filterPatientsBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: FilterChainPatient\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/patient/filter` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skip ? '&skip=' + encodeURIComponent(String(skip)) : '') +\n (sort ? '&sort=' + encodeURIComponent(String(sort)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get Paginated List of Patients sorted by Access logs descending\n * @param userId A User ID\n * @param accessType The type of access (COMPUTER or USER)\n * @param startDate The start search epoch\n * @param startKey The start key for pagination\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n findByAccessLogUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/byAccess/${encodeURIComponent(String(userId))}` +\n '?ts=' +\n new Date().getTime() +\n (accessType ? '&accessType=' + encodeURIComponent(String(accessType)) : '') +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the patient having the provided externalId\n * @param externalId A external ID\n */\n findByExternalId(externalId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/byExternalId/${encodeURIComponent(String(externalId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Find patients for the current user (HcParty)\n * @param healthcarePartyId HealthcareParty Id. If not set, will use user's hcpId\n * @param filterValue Optional value for filtering results\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n findByNameBirthSsinAuto(\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/byNameBirthSsinAuto` +\n '?ts=' +\n new Date().getTime() +\n (healthcarePartyId ? '&healthcarePartyId=' + encodeURIComponent(String(healthcarePartyId)) : '') +\n (filterValue ? '&filterValue=' + encodeURIComponent(String(filterValue)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Provides a paginated list of patients with duplicate name for an hecparty\n * @param hcPartyId Healthcare party id\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n findDuplicatesByName(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/duplicates/name` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Provides a paginated list of patients with duplicate ssin for an hecparty\n * @param hcPartyId Healthcare party id\n * @param startKey The start key for pagination, depends on the filters used\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n findDuplicatesBySsin(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/duplicates/ssin` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients\n * @summary Filter patients for the current user (HcParty)\n * @param firstName The first name\n * @param lastName The last name\n * @param dateOfBirth The date of birth\n */\n fuzzySearch(firstName?: string, lastName?: string, dateOfBirth?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/patient/fuzzy` +\n '?ts=' +\n new Date().getTime() +\n (firstName ? '&firstName=' + encodeURIComponent(String(firstName)) : '') +\n (lastName ? '&lastName=' + encodeURIComponent(String(lastName)) : '') +\n (dateOfBirth ? '&dateOfBirth=' + encodeURIComponent(String(dateOfBirth)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data.\n * @summary Get patient\n * @param patientId\n */\n getPatient(patientId: string): Promise {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)\n * @summary Get the HcParty encrypted AES keys indexed by owner.\n * @param patientId\n */\n getPatientAesExchangeKeysForDelegate(\n patientId: string\n ): Promise<{ [delegatorId: string]: { [delegatorPubKeyFingerprint: string]: { [delegatePubKeyFingerprint: string]: string } } }> {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}/aesExchangeKeys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data based on the identifier (root & extension) parameters.\n * @summary Get patient by identifier\n * @param hcPartyId\n * @param id\n * @param system\n */\n getPatientByHealthcarepartyAndIdentifier(hcPartyId: string, id: string, system?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/${encodeURIComponent(String(hcPartyId))}/${encodeURIComponent(String(id))}` +\n '?ts=' +\n new Date().getTime() +\n (system ? '&system=' + encodeURIComponent(String(system)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * This endpoint is used to recover all keys that have already been created and that can be used to share information with this patient. It returns a map with the following structure: ID of the owner of the encrypted AES key -> encrypted AES key. The returned encrypted AES keys will have to be decrypted using the patient's private key. { \\\"hcparty 1 delegator ID\\\": \\\"AES hcparty key (encrypted using patient public RSA key)\\\" \\\"hcparty 2 delegator ID\\\": \\\"other AES hcparty key (encrypted using patient public RSA key)\\\" }\n * @summary Get the patient (identified by patientId) hcparty keys. Those keys are AES keys (encrypted) used to share information between HCPs and a patient.\n * @param patientId The patient Id for which information is shared\n */\n getPatientHcPartyKeysForDelegate(patientId: string): Promise<{ [key: string]: string }> {\n let _body = null\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}/keys` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It gets patient administrative data.\n * @summary Get patients by id\n * @param body\n */\n getPatients(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of deleted patients, within the specified time period, if any.\n * @summary Find deleted patients\n * @param startDate Filter deletions after this date (unix epoch), included\n * @param endDate Filter deletions before this date (unix epoch), included\n * @param desc Descending\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n listDeletedPatients(startDate?: number, endDate?: number, desc?: boolean, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/deleted/by_date` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (desc ? '&desc=' + encodeURIComponent(String(desc)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of deleted patients, by name and/or firstname prefix, if any.\n * @summary Find deleted patients\n * @param firstName First name prefix\n * @param lastName Last name prefix\n */\n listDeletedPatientsByName(firstName?: string, lastName?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/patient/deleted/by_name` +\n '?ts=' +\n new Date().getTime() +\n (firstName ? '&firstName=' + encodeURIComponent(String(firstName)) : '') +\n (lastName ? '&lastName=' + encodeURIComponent(String(lastName)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients that have been merged after the provided date\n * @summary List patients that have been merged towards another patient\n * @param date\n */\n listOfMergesAfter(date: number): Promise> {\n let _body = null\n\n const _url = this.host + `/patient/merges/${encodeURIComponent(String(date))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients that have been modified after the provided date\n * @summary List patients that have been modified after the provided date\n * @param date\n * @param startKey The start key for pagination the date of the first element of the new page\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n */\n listOfPatientsModifiedAfter(date: number, startKey?: number, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/modifiedAfter/${encodeURIComponent(String(date))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients for a specific HcParty\n * @param hcPartyId Healthcare party id\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n listPatients(\n hcPartyId?: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients for a specific HcParty or for the current HcParty\n * @param hcPartyId\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n listPatientsByHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/hcParty/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients by pages for a specific HcParty\n * @param hcPartyId Healthcare party id\n * @param startKey The page first id\n * @param startDocumentId A patient document ID\n * @param limit Page size\n */\n listPatientsIds(hcPartyId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/idsPages` +\n '?ts=' +\n new Date().getTime() +\n (hcPartyId ? '&hcPartyId=' + encodeURIComponent(String(hcPartyId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListString(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of patients along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary List patients of a specific HcParty or of the current HcParty\n * @param hcPartyId\n * @param sortField Optional value for sorting results by a given field ('name', 'ssin', 'dateOfBirth'). Specifying this deactivates filtering\n * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key's startKey\n * @param startDocumentId A patient document ID\n * @param limit Number of rows\n * @param sortDirection Optional value for providing a sorting direction ('asc', 'desc'). Set to 'asc' by default.\n */\n listPatientsOfHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/ofHcParty/${encodeURIComponent(String(hcPartyId))}` +\n '?ts=' +\n new Date().getTime() +\n (sortField ? '&sortField=' + encodeURIComponent(String(sortField)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (sortDirection ? '&sortDirection=' + encodeURIComponent(String(sortDirection)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of patients matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchPatientsBy(body?: AbstractFilterPatient): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Merge a series of patients into another patient\n * @param toId\n * @param fromIds\n */\n mergeInto(toId: string, fromIds: string): Promise {\n let _body = null\n\n const _url =\n this.host + `/patient/mergeInto/${encodeURIComponent(String(toId))}/from/${encodeURIComponent(String(fromIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a patient\n * @param body\n */\n modifyPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Set a patient referral doctor\n * @param patientId\n * @param referralId The referal id. Accepts 'none' for referral removal.\n * @param start Optional value for start of referral\n * @param end Optional value for end of referral\n */\n modifyPatientReferral(patientId: string, referralId: string, start?: number, end?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/patient/${encodeURIComponent(String(patientId))}/referral/${encodeURIComponent(String(referralId))}` +\n '?ts=' +\n new Date().getTime() +\n (start ? '&start=' + encodeURIComponent(String(start)) : '') +\n (end ? '&end=' + encodeURIComponent(String(end)) : '')\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * It delegates a patient to a healthcare party (By current healthcare party). A modified patient with new delegation gets returned.\n * @summary Delegates a patients to a healthcare party\n * @param body\n * @param patientId\n */\n newPatientDelegations(patientId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/patient/${encodeURIComponent(String(patientId))}/delegate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Register a new patient into the system\n * @summary Register a patient\n * @param body\n * @param hcPartyId\n * @param groupId\n * @param token\n * @param useShortToken\n */\n registerPatient(\n hcPartyId: string,\n groupId: string,\n token?: string,\n useShortToken?: boolean,\n body?: Patient\n ): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/patient/register/forHcp/${encodeURIComponent(String(hcPartyId))}/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (token ? '&token=' + encodeURIComponent(String(token)) : '') +\n (useShortToken ? '&useShortToken=' + encodeURIComponent(String(useShortToken)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DataOwnerRegistrationSuccess(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is an array containing the ID of undeleted patient..\n * @summary undelete previously deleted patients\n * @param patientIds\n */\n undeletePatient(patientIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/patient/undelete/${encodeURIComponent(String(patientIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * @internal use mergePatients from the extended api instead\n */\n baseMergePatients(fromId: string, expectedFromRev: string, updatedInto: Patient) {\n let _body = updatedInto\n\n const _url =\n this.host +\n `/patient/mergeInto/${encodeURIComponent(String(updatedInto.id))}/from/${encodeURIComponent(String(fromId))}` +\n '?ts=' +\n new Date().getTime() +\n '&expectedFromRev=' +\n encodeURIComponent(String(expectedFromRev))\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Permission } from '../model/Permission'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPermissionApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Add a list of granted and revoked permissions to user.\n * @summary Add / Revoke permissions to user\n * @param body\n * @param userId\n */\n modifyUserPermissions(userId: string, body?: Permission): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/permissions/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Permission(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Place } from '../model/Place'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPlaceApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a place\n * @param body\n */\n createPlace(body?: Place): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/place` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an place\n * @param placeIds\n */\n deletePlace(placeIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/place/${encodeURIComponent(String(placeIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets an place\n * @param placeId\n */\n getPlace(placeId: string): Promise {\n let _body = null\n\n const _url = this.host + `/place/${encodeURIComponent(String(placeId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets all places\n */\n getPlaces(): Promise> {\n let _body = null\n\n const _url = this.host + `/place` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Place(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an place\n * @param body\n */\n modifyPlace(body?: Place): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/place` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Place(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccPubsubApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Offer auth data on previously agreed on secret bucket, data should be encrypted\n * @summary Offer auth data on secret bucket\n * @param body\n * @param bucket\n */\n offerAuth(bucket: string, body?: ArrayBuffer): Promise<{ [key: string]: boolean }> {\n let _body = null\n _body = body\n\n const _url = this.host + `/pubsub/auth/${encodeURIComponent(String(bucket))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Publish value with key\n * @summary publish data\n * @param body\n * @param key\n */\n pub(key: string, body?: ArrayBuffer): Promise<{ [key: string]: boolean }> {\n let _body = null\n _body = body\n\n const _url = this.host + `/pubsub/pub/${encodeURIComponent(String(key))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Recover auth data from bucket, data should be encrypted\n * @summary Recover auth data from secret bucket\n * @param bucket\n */\n recoverAuth(bucket: string): Promise {\n let _body = null\n\n const _url = this.host + `/pubsub/auth/recover/${encodeURIComponent(String(bucket))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Try to get published data\n * @summary subscribe to data\n * @param key\n */\n sub(key: string): Promise {\n let _body = null\n\n const _url = this.host + `/pubsub/sub/${encodeURIComponent(String(key))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Receipt } from '../model/Receipt'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccReceiptApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a receipt\n * @param body\n */\n createReceipt(body?: Receipt): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/receipt` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes a receipt\n * @param receiptIds\n */\n deleteReceipt(receiptIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/receipt/${encodeURIComponent(String(receiptIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a receipt\n * @param receiptId\n */\n getReceipt(receiptId: string): Promise {\n let _body = null\n\n const _url = this.host + `/receipt/${encodeURIComponent(String(receiptId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get an attachment\n * @param receiptId\n * @param attachmentId\n * @param enckeys\n */\n getReceiptAttachment(receiptId: string, attachmentId: string, enckeys: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/receipt/${encodeURIComponent(String(receiptId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a receipt\n * @param ref\n */\n listByReference(ref: string): Promise> {\n let _body = null\n\n const _url = this.host + `/receipt/byref/${encodeURIComponent(String(ref))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Receipt(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Updates a receipt\n * @param body\n */\n modifyReceipt(body?: Receipt): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/receipt` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Creates a receipt's attachment\n * @param body\n * @param receiptId\n * @param blobType\n * @param enckeys\n */\n setReceiptAttachment(receiptId: string, blobType: string, enckeys?: string, body?: ArrayBuffer): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/receipt/${encodeURIComponent(String(receiptId))}/attachment/${encodeURIComponent(String(blobType))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Receipt(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ReplicateCommand } from '../model/ReplicateCommand'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { ReplicatorResponse } from '../model/ReplicatorResponse'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccReplicationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Create a document to start a continuous replication\n * @summary Create continuous replication document\n * @param body\n */\n createContinuousReplicationDoc(body?: ReplicateCommand): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/replication/continuous` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a document to start a one time replication\n * @summary Create one time replication document\n * @param body\n */\n createOneTimeReplicationDoc(body?: ReplicateCommand): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/replication/onetime` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * DocId is the id provided by a replicator document from replication/docs\n * @summary Delete replication document to stop it\n * @param docId\n */\n deleteReplicationDoc(docId: string): Promise {\n let _body = null\n\n const _url = this.host + `/replication/stop/${encodeURIComponent(String(docId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorResponse(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get all replication infos and states\n * @summary Get replication documents\n */\n getReplicationDocs(): Promise> {\n let _body = null\n\n const _url = this.host + `/replication/docs` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new ReplicatorDocument(it)))\n .catch((err) => this.handleError(err))\n }\n}\n","export function iccRestApiPath(host: string): string {\n if (host.includes('rest/v')) throw new Error('Host should not include api path')\n return host + '/rest/v1'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { ListOfIds } from '../model/ListOfIds'\nimport { PaginatedListTarification } from '../model/PaginatedListTarification'\nimport { Tarification } from '../model/Tarification'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccTarificationApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Type, Tarification and Version are required.\n * @summary Create a Tarification\n * @param body\n */\n createTarification(body?: Tarification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tarification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version with pagination.\n * @param region\n * @param type\n * @param tarification\n * @param version\n * @param startDocumentId A tarification document ID\n * @param startKey\n * @param limit Number of rows\n */\n findPaginatedTarifications(\n region?: string,\n type?: string,\n tarification?: string,\n version?: string,\n startDocumentId?: string,\n startKey?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (tarification ? '&tarification=' + encodeURIComponent(String(tarification)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListTarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version with pagination.\n * @param region\n * @param types\n * @param language\n * @param label\n * @param startKey\n * @param startDocumentId A tarification document ID\n * @param limit Number of rows\n */\n findPaginatedTarificationsByLabel(\n region?: string,\n types?: string,\n language?: string,\n label?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/byLabel` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (types ? '&types=' + encodeURIComponent(String(types)) : '') +\n (language ? '&language=' + encodeURIComponent(String(language)) : '') +\n (label ? '&label=' + encodeURIComponent(String(label)) : '') +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListTarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of tarifications matched with given input.\n * @summary Finding tarifications by tarification, type and version\n * @param region Tarification region\n * @param type Tarification type\n * @param tarification Tarification tarification\n * @param version Tarification version\n */\n findTarifications(region?: string, type?: string, tarification?: string, version?: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/byRegionTypeTarification` +\n '?ts=' +\n new Date().getTime() +\n (region ? '®ion=' + encodeURIComponent(String(region)) : '') +\n (type ? '&type=' + encodeURIComponent(String(type)) : '') +\n (tarification ? '&tarification=' + encodeURIComponent(String(tarification)) : '') +\n (version ? '&version=' + encodeURIComponent(String(version)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Tarification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a tarification based on ID or (tarification,type,version) as query strings. (tarification,type,version) is unique.\n * @summary Get a tarification\n * @param tarificationId Tarification id\n */\n getTarification(tarificationId: string): Promise {\n let _body = null\n\n const _url = this.host + `/tarification/${encodeURIComponent(String(tarificationId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get a tarification based on ID or (tarification,type,version) as query strings. (tarification,type,version) is unique.\n * @summary Get a tarification\n * @param type Tarification type\n * @param tarification Tarification tarification\n * @param version Tarification version\n */\n getTarificationWithParts(type: string, tarification: string, version: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tarification/${encodeURIComponent(String(type))}/${encodeURIComponent(String(tarification))}/${encodeURIComponent(String(version))}` +\n '?ts=' +\n new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Keys must be delimited by coma\n * @summary Get a list of tarifications by ids\n * @param body\n */\n getTarifications(body?: ListOfIds): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tarification/byIds` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Tarification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modification of (type, tarification, version) is not allowed.\n * @summary Modify a tarification\n * @param body\n */\n modifyTarification(body?: Tarification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tarification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Tarification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { TimeTable } from '../model/TimeTable'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccTimeTableApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n *\n * @summary Creates a timeTable\n * @param body\n */\n createTimeTable(body?: TimeTable): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/timeTable` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Deletes an timeTable\n * @param timeTableIds\n */\n deleteTimeTable(timeTableIds: string): Promise> {\n let _body = null\n\n const _url = this.host + `/timeTable/${encodeURIComponent(String(timeTableIds))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Gets a timeTable\n * @param timeTableId\n */\n getTimeTable(timeTableId: string): Promise {\n let _body = null\n\n const _url = this.host + `/timeTable/${encodeURIComponent(String(timeTableId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get TimeTables by AgendaId\n * @param agendaId\n */\n getTimeTablesByAgendaId(agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host + `/timeTable/byAgendaId` + '?ts=' + new Date().getTime() + (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TimeTable(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get TimeTables by Period and AgendaId\n * @param startDate\n * @param endDate\n * @param agendaId\n */\n getTimeTablesByPeriodAndAgendaId(startDate: number, endDate: number, agendaId: string): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/timeTable/byPeriodAndAgendaId` +\n '?ts=' +\n new Date().getTime() +\n (startDate ? '&startDate=' + encodeURIComponent(String(startDate)) : '') +\n (endDate ? '&endDate=' + encodeURIComponent(String(endDate)) : '') +\n (agendaId ? '&agendaId=' + encodeURIComponent(String(agendaId)) : '')\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TimeTable(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Modifies an timeTable\n * @param body\n */\n modifyTimeTable(body?: TimeTable): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/timeTable` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new TimeTable(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { Classification } from '../model/Classification'\nimport { Contact } from '../model/Contact'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { Document } from '../model/Document'\nimport { EntityTemplate } from '../model/EntityTemplate'\nimport { Form } from '../model/Form'\nimport { HealthElement } from '../model/HealthElement'\nimport { Invoice } from '../model/Invoice'\nimport { Message } from '../model/Message'\nimport { PaginatedListClassification } from '../model/PaginatedListClassification'\nimport { PaginatedListDocument } from '../model/PaginatedListDocument'\nimport { PaginatedListEntityTemplate } from '../model/PaginatedListEntityTemplate'\nimport { PaginatedListForm } from '../model/PaginatedListForm'\nimport { PaginatedListHealthElement } from '../model/PaginatedListHealthElement'\nimport { PaginatedListInvoice } from '../model/PaginatedListInvoice'\nimport { PaginatedListPatient } from '../model/PaginatedListPatient'\nimport { Patient } from '../model/Patient'\nimport { ReplicatorDocument } from '../model/ReplicatorDocument'\nimport { Unit } from '../model/Unit'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccTmpApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Create a classification with the current user\n * @param body\n */\n createTmpClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Create a classification with the current user\n * @param body\n */\n createTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Create a contact with the current user\n * @param body\n */\n createTmpContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Create a contact with the current user\n * @param body\n */\n createTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Nothing happens if the database already exists\n * @summary Create tmp database for current user\n */\n createTmpDatabase(): Promise {\n let _body = null\n\n const _url = this.host + `/tmp` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Create a document with the current user\n * @param body\n */\n createTmpDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Create a document with the current user\n * @param body\n */\n createTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Create a entityTemplate with the current user\n * @param body\n */\n createTmpEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Create a entityTemplate with the current user\n * @param body\n */\n createTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n createTmpForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Create a form with the current user\n * @param body\n */\n createTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Create a healthElement with the current user\n * @param body\n */\n createTmpHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Create a healthElement with the current user\n * @param body\n */\n createTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Create a invoice with the current user\n * @param body\n */\n createTmpInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Create a invoice with the current user\n * @param body\n */\n createTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Create a message with the current user\n * @param body\n */\n createTmpMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Create a message with the current user\n * @param body\n */\n createTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Create a patient with the current user\n * @param body\n */\n createTmpPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Create a patient with the current user\n * @param body\n */\n createTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Deletes a document's attachment and returns the modified document instance afterward\n * @summary Delete a document's attachment\n * @param documentId\n */\n deleteTmpDocumentAttachment(documentId: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/document/${encodeURIComponent(String(documentId))}/attachment` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted items.\n * @summary Soft delete items.\n * @param body\n */\n deleteTmpItems(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/batch/delete` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Nothing happens if the database does not exists\n * @summary Destroy tmp database for current user\n */\n destroyTmpDatabase(): Promise {\n let _body = null\n\n const _url = this.host + `/tmp` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of classification.\n * @summary Get a classification by id\n * @param id\n */\n getTmpClassification(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/classification/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created classification.\n * @summary Get classifications by ids with the current user\n * @param body\n */\n getTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of contact.\n * @summary Get a contact by id\n * @param id\n */\n getTmpContact(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/contact/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created contact.\n * @summary Get contacts by ids with the current user\n * @param body\n */\n getTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of document.\n * @summary Get a document by id\n * @param id\n */\n getTmpDocument(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/document/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param documentId\n * @param attachmentId\n * @param enckeys\n * @param fileName\n */\n getTmpDocumentAttachment(documentId: string, attachmentId: string, enckeys?: string, fileName?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/document/${encodeURIComponent(String(documentId))}/attachment/${encodeURIComponent(String(attachmentId))}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '') +\n (fileName ? '&fileName=' + encodeURIComponent(String(fileName)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => true)\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created document.\n * @summary Get documents by ids with the current user\n * @param body\n */\n getTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of entityTemplate.\n * @summary Get a entityTemplate by id\n * @param id\n */\n getTmpEntityTemplate(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/entityTemplate/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created entityTemplate.\n * @summary Get entityTemplates by ids with the current user\n * @param body\n */\n getTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of form.\n * @summary Get a form by id\n * @param id\n */\n getTmpForm(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/form/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created form.\n * @summary Get forms by ids with the current user\n * @param body\n */\n getTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of healthElement.\n * @summary Get a healthElement by id\n * @param id\n */\n getTmpHealthElement(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/healthElement/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created healthElement.\n * @summary Get healthElements by ids with the current user\n * @param body\n */\n getTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of invoice.\n * @summary Get a invoice by id\n * @param id\n */\n getTmpInvoice(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/invoice/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created invoice.\n * @summary Get invoices by ids with the current user\n * @param body\n */\n getTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of message.\n * @summary Get a message by id\n * @param id\n */\n getTmpMessage(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/message/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created message.\n * @summary Get messages by ids with the current user\n * @param body\n */\n getTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of patient.\n * @summary Get a patient by id\n * @param id\n */\n getTmpPatient(id: string): Promise {\n let _body = null\n\n const _url = this.host + `/tmp/patient/byId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns an instance of created patient.\n * @summary Get patients by ids with the current user\n * @param body\n */\n getTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/get` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated classifications.\n * @summary List classifications with the current user\n * @param firstClassificationId\n * @param pageSize\n */\n listTmpClassifications(firstClassificationId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/classification/list` +\n '?ts=' +\n new Date().getTime() +\n (firstClassificationId ? '&firstClassificationId=' + encodeURIComponent(String(firstClassificationId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListClassification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated contacts.\n * @summary List contacts with the current user\n * @param firstContactId\n * @param pageSize\n */\n listTmpContacts(firstContactId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/contact/list` +\n '?ts=' +\n new Date().getTime() +\n (firstContactId ? '&firstContactId=' + encodeURIComponent(String(firstContactId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated documents.\n * @summary List documents with the current user\n * @param firstDocumentId\n * @param pageSize\n */\n listTmpDocuments(firstDocumentId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/document/list` +\n '?ts=' +\n new Date().getTime() +\n (firstDocumentId ? '&firstDocumentId=' + encodeURIComponent(String(firstDocumentId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated entityTemplates.\n * @summary List entityTemplates with the current user\n * @param firstEntityTemplateId\n * @param pageSize\n */\n listTmpEntityTemplates(firstEntityTemplateId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/entityTemplate/list` +\n '?ts=' +\n new Date().getTime() +\n (firstEntityTemplateId ? '&firstEntityTemplateId=' + encodeURIComponent(String(firstEntityTemplateId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListEntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated forms.\n * @summary List forms with the current user\n * @param firstFormId\n * @param pageSize\n */\n listTmpForms(firstFormId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/form/list` +\n '?ts=' +\n new Date().getTime() +\n (firstFormId ? '&firstFormId=' + encodeURIComponent(String(firstFormId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListForm(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated healthElements.\n * @summary List healthElements with the current user\n * @param firstHealthElementId\n * @param pageSize\n */\n listTmpHealthElements(firstHealthElementId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/healthElement/list` +\n '?ts=' +\n new Date().getTime() +\n (firstHealthElementId ? '&firstHealthElementId=' + encodeURIComponent(String(firstHealthElementId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListHealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated invoices.\n * @summary List invoices with the current user\n * @param firstInvoiceId\n * @param pageSize\n */\n listTmpInvoices(firstInvoiceId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/invoice/list` +\n '?ts=' +\n new Date().getTime() +\n (firstInvoiceId ? '&firstInvoiceId=' + encodeURIComponent(String(firstInvoiceId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated messages.\n * @summary List messages with the current user\n * @param firstMessageId\n * @param pageSize\n */\n listTmpMessages(firstMessageId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/message/list` +\n '?ts=' +\n new Date().getTime() +\n (firstMessageId ? '&firstMessageId=' + encodeURIComponent(String(firstMessageId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListInvoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns paginated patients.\n * @summary List patients with the current user\n * @param firstPatientId\n * @param pageSize\n */\n listTmpPatients(firstPatientId?: string, pageSize?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/tmp/patient/list` +\n '?ts=' +\n new Date().getTime() +\n (firstPatientId ? '&firstPatientId=' + encodeURIComponent(String(firstPatientId)) : '') +\n (pageSize ? '&pageSize=' + encodeURIComponent(String(pageSize)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListPatient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified classification.\n * @summary Modify a classification\n * @param body\n */\n modifyTmpClassification(body?: Classification): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Classification(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpClassifications(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/classification/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Classification(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified contact.\n * @summary Modify a contact\n * @param body\n */\n modifyTmpContact(body?: Contact): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Contact(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpContacts(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/contact/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Contact(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified document.\n * @summary Modify a document\n * @param body\n */\n modifyTmpDocument(body?: Document): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpDocuments(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/document/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Document(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified entityTemplate.\n * @summary Modify a entityTemplate\n * @param body\n */\n modifyTmpEntityTemplate(body?: EntityTemplate): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new EntityTemplate(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpEntityTemplates(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/entityTemplate/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new EntityTemplate(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified form.\n * @summary Modify a form\n * @param body\n */\n modifyTmpForm(body?: Form): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Form(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpForms(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/form/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Form(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthElement.\n * @summary Modify a healthElement\n * @param body\n */\n modifyTmpHealthElement(body?: HealthElement): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new HealthElement(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpHealthElements(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/healthElement/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new HealthElement(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified invoice.\n * @summary Modify a invoice\n * @param body\n */\n modifyTmpInvoice(body?: Invoice): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Invoice(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpInvoices(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/invoice/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Invoice(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified message.\n * @summary Modify a message\n * @param body\n */\n modifyTmpMessage(body?: Message): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Message(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpMessages(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/message/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Message(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified patient.\n * @summary Modify a patient\n * @param body\n */\n modifyTmpPatient(body?: Patient): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Patient(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns the modified healthcare elements.\n * @summary Modify a batch of healthcare elements\n * @param body\n */\n modifyTmpPatients(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/patient/batch` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new Patient(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Response is a set containing the ID's of deleted items.\n * @summary Hard delete items.\n * @param body\n */\n purgeTmpItems(body?: Array): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/batch/purge` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new DocIdentifier(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param body\n * @param from\n */\n replicateToTmpDatabase(from: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/tmp/replicate/from/${encodeURIComponent(String(from))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new ReplicatorDocument(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Creates a document's attachment and returns the modified document instance afterward\n * @summary Create a document's attachment\n * @param body\n * @param documentId\n * @param enckeys\n */\n setTmpDocumentAttachment(documentId: string, enckeys?: string, body?: Object): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/tmp/document/${encodeURIComponent(String(documentId))}/attachment` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? '&enckeys=' + encodeURIComponent(String(enckeys)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/octet-stream'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Document(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { XHR } from './XHR'\nimport { AbstractFilterUser } from '../model/AbstractFilterUser'\nimport { DocIdentifier } from '../model/DocIdentifier'\nimport { FilterChainUser } from '../model/FilterChainUser'\nimport { PaginatedListUser } from '../model/PaginatedListUser'\nimport { PropertyStub } from '../model/PropertyStub'\nimport { TokenWithGroup } from '../model/TokenWithGroup'\nimport { Unit } from '../model/Unit'\nimport { User } from '../model/User'\nimport { UserGroup } from '../model/UserGroup'\nimport { AuthenticationProvider, NoAuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider'\nimport { iccRestApiPath } from './IccRestApiPath'\n\nexport class IccUserApi {\n host: string\n headers: Array\n authenticationProvider: AuthenticationProvider\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: any,\n authenticationProvider?: AuthenticationProvider,\n fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n ) {\n this.host = iccRestApiPath(host)\n this.headers = Object.keys(headers).map((k) => new XHR.Header(k, headers[k]))\n this.authenticationProvider = !!authenticationProvider ? authenticationProvider : new NoAuthenticationProvider()\n this.fetchImpl = fetchImpl\n }\n\n setHeaders(h: Array) {\n this.headers = h\n }\n\n handleError(e: XHR.XHRError): never {\n throw e\n }\n\n /**\n * UserDto gets returned.\n * @summary Assign a healthcare party ID to current user\n * @param healthcarePartyId\n */\n assignHealthcareParty(healthcarePartyId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/current/hcparty/${encodeURIComponent(String(healthcarePartyId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param password\n */\n checkPassword(password: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/checkPassword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Check token validity\n * @param userId\n * @param token\n */\n checkTokenValidity(userId: string, token: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/token/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a user. HealthcareParty ID should be set. Email or Login have to be set. If login hasn't been set, Email will be used for Login instead.\n * @summary Create a user\n * @param body\n */\n createUser(body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Create a user. HealthcareParty ID should be set. Email has to be set and the Login has to be null. On server-side, Email will be used for Login.\n * @summary Create a user\n * @param body\n * @param groupId\n */\n createUserInGroup(groupId: string, body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete a User based on his/her ID. The return value is an array containing the ID of deleted user.\n * @summary Delete a User based on his/her ID.\n * @param userId\n */\n deleteUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new DocIdentifier(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Delete a User based on his/her ID. The return value is an array containing the ID of deleted user.\n * @summary Delete a User based on his/her ID.\n * @param groupId\n * @param userId\n */\n deleteUserInGroup(groupId: string, userId: string): Promise {\n let _body = null\n\n const _url =\n this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('DELETE', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new Unit(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @param password\n */\n encodePassword(password: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/encodePassword` + '?ts=' + new Date().getTime()\n let headers = this.headers\n password && (headers = headers.concat(new XHR.Header('password', password)))\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter users for the current user (HcParty)\n * @param body\n * @param startDocumentId A User document ID\n * @param limit Number of rows\n */\n filterUsersBy(startDocumentId?: string, limit?: number, body?: FilterChainUser): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/user/filter` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.\n * @summary Filter users for the current user (HcParty) for a provided groupId\n * @param body\n * @param groupId\n * @param startDocumentId A User document ID\n * @param limit Number of rows\n */\n filterUsersInGroupBy(groupId: string, startDocumentId?: string, limit?: number, body?: FilterChainUser): Promise {\n let _body = null\n _body = body\n\n const _url =\n this.host +\n `/user/filter/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of users by healthcare party id\n * @param id\n */\n findByHcpartyId(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/user/byHealthcarePartyId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get the list of users by patient id\n * @param id\n */\n findByPatientId(id: string): Promise> {\n let _body = null\n\n const _url = this.host + `/user/byPatientId/${encodeURIComponent(String(id))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get current user.\n * @summary Get Currently logged-in user session.\n */\n getCurrentSession(): Promise {\n let _body = null\n\n const _url = this.host + `/user/session` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get current user.\n * @summary Get presently logged-in user.\n */\n getCurrentUser(): Promise {\n let _body = null\n\n const _url = this.host + `/user/current` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Get current user.\n * @summary Get presently logged-in user.\n */\n getMatchingUsers(): Promise> {\n let _body = null\n\n const _url = this.host + `/user/matches` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new UserGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Request a new temporary token for authentication\n * @param userId\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param tokenValidity The token validity in seconds\n * @param token\n */\n getToken(userId: string, key: string, tokenValidity?: number, token?: string): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/token/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Require a new temporary token for authentication inside all groups\n * @param userIdentifier\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param token\n * @param tokenValidity The token validity in seconds\n */\n getTokenInAllGroups(userIdentifier: string, key: string, token?: string, tokenValidity?: number): Promise> {\n let _body = null\n\n const _url =\n this.host +\n `/user/inAllGroups/token/${encodeURIComponent(String(userIdentifier))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => new TokenWithGroup(it)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Require a new temporary token for authentication inside provided group\n * @param groupId\n * @param userId\n * @param key The token key. Only one instance of a token with a defined key can exist at the same time\n * @param token\n * @param tokenValidity The token validity in seconds\n */\n getTokenInGroup(groupId: string, userId: string, key: string, token?: string, tokenValidity?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/inGroup/${encodeURIComponent(String(groupId))}/token/${encodeURIComponent(String(userId))}/${encodeURIComponent(String(key))}` +\n '?ts=' +\n new Date().getTime() +\n (tokenValidity ? '&tokenValidity=' + encodeURIComponent(String(tokenValidity)) : '')\n let headers = this.headers\n token && (headers = headers.concat(new XHR.Header('token', token)))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => JSON.parse(JSON.stringify(doc.body)))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the user\n * @summary Get a user by his ID\n * @param userId\n */\n getUser(userId: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * General information about the user\n * @summary Get a user by his Email/Login\n * @param email\n */\n getUserByEmail(email: string): Promise {\n let _body = null\n\n const _url = this.host + `/user/byEmail/${encodeURIComponent(String(email))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users.\n * @summary List users with(out) pagination\n * @param startKey An user email\n * @param startDocumentId An user document ID\n * @param limit Number of rows\n * @param skipPatients Filter out patient users\n */\n listUsers(startKey?: string, startDocumentId?: string, limit?: number, skipPatients?: boolean): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '') +\n (skipPatients !== undefined ? '&skipPatients=' + encodeURIComponent(String(skipPatients)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Returns a list of users.\n * @summary List users with pagination\n * @param groupId\n * @param startKey An user login\n * @param startDocumentId An user document ID\n * @param limit Number of rows\n */\n listUsersInGroup(groupId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise {\n let _body = null\n\n const _url =\n this.host +\n `/user/inGroup/${encodeURIComponent(String(groupId))}` +\n '?ts=' +\n new Date().getTime() +\n (startKey ? '&startKey=' + encodeURIComponent(String(startKey)) : '') +\n (startDocumentId ? '&startDocumentId=' + encodeURIComponent(String(startDocumentId)) : '') +\n (limit ? '&limit=' + encodeURIComponent(String(limit)) : '')\n let headers = this.headers\n return XHR.sendCommand('GET', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new PaginatedListUser(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n *\n * @summary Get ids of healthcare party matching the provided filter for the current user (HcParty)\n * @param body\n */\n matchUsersBy(body?: AbstractFilterUser): Promise> {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/match` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('POST', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => (doc.body as Array).map((it) => JSON.parse(JSON.stringify(it))))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * Modify a User properties based on his/her ID. The return value is the modified user.\n * @summary Modify a User property\n * @param body\n * @param userId\n */\n modifyProperties(userId: string, body?: Array): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/${encodeURIComponent(String(userId))}/properties` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a user.\n * @param body\n */\n modifyUser(body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n\n /**\n * No particular return value. It's just a message.\n * @summary Modify a user.\n * @param body\n * @param groupId\n */\n modifyUserInGroup(groupId: string, body?: User): Promise {\n let _body = null\n _body = body\n\n const _url = this.host + `/user/inGroup/${encodeURIComponent(String(groupId))}` + '?ts=' + new Date().getTime()\n let headers = this.headers\n headers = headers.filter((h) => h.header !== 'Content-Type').concat(new XHR.Header('Content-Type', 'application/json'))\n return XHR.sendCommand('PUT', _url, headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => new User(doc.body as JSON))\n .catch((err) => this.handleError(err))\n }\n}\n","import { ua2b64 } from '../model/ModelHelper'\nimport { NoAuthService } from '../../icc-x-api/auth/NoAuthService'\nimport { AuthService } from '../../icc-x-api/auth/AuthService'\n\nexport namespace XHR {\n export class Header {\n header: string\n data: string\n\n constructor(header: string, data: string) {\n this.header = header\n this.data = data\n }\n }\n\n export class Data {\n statusCode: number\n contentType: string\n body: JSON | Array | any //stream bytes|json|array\n\n constructor(status: number, contentType: string, body: JSON | Array | any) {\n this.statusCode = status\n this.contentType = contentType\n this.body = body\n }\n }\n\n export class XHRError extends Error {\n statusCode: number\n errorCode: string\n headers: Headers\n message: string\n url: string\n\n constructor(url: string, message: string, status: number, errorCode: string, headers: Headers) {\n super(message)\n this.url = url\n this.statusCode = status\n this.message = message\n this.errorCode = errorCode\n this.headers = headers\n }\n }\n\n function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeout = 10000,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ): Promise {\n return new Promise((resolve, reject) => {\n // Set timeout timer\n let timer = setTimeout(() => reject({ message: 'Request timed out', status: 'Request timed out' }), timeout)\n fetchImpl(url, init)\n .then((response) => {\n clearTimeout(timer)\n resolve(response)\n })\n .catch((err) => {\n clearTimeout(timer)\n reject(err)\n })\n })\n }\n\n export async function sendCommand(\n method: string,\n url: string,\n headers: Array
| null,\n data: string | any = '',\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n contentTypeOverride?: 'application/json' | 'text/plain' | 'application/octet-stream',\n headerProvider: AuthService = new NoAuthService()\n ): Promise {\n const authHeaders = await headerProvider.getAuthHeaders()\n const contentType = headers && headers.find((it) => (it.header ? it.header.toLowerCase() === 'content-type' : false))\n const clientTimeout = headers && headers.find((it) => (it.header ? it.header.toUpperCase() === 'X-CLIENT-SIDE-TIMEOUT' : false))\n const timeout = clientTimeout ? Number(clientTimeout.data) : 600000\n return fetchWithTimeout(\n url,\n Object.assign(\n {\n method: method,\n credentials: 'include' as RequestCredentials,\n headers: (headers ?? [])\n .concat(authHeaders)\n .filter(\n (h) =>\n (h.header?.toLowerCase() !== 'content-type' || h.data !== 'multipart/form-data') &&\n h.header?.toUpperCase() !== 'X-CLIENT-SIDE-TIMEOUT' &&\n h.header?.toLowerCase() !== 'force-authentication'\n )\n .reduce(\n (acc: { [key: string]: string }, h) => {\n acc[h.header] = h.data\n return acc\n },\n { 'X-Requested-With': 'XMLHttpRequest' }\n ),\n },\n method === 'POST' || method === 'PUT'\n ? {\n body:\n !contentType || contentType.data === 'application/json'\n ? JSON.stringify(data, (k, v) => {\n return v instanceof ArrayBuffer || v instanceof Uint8Array ? ua2b64(v) : v\n })\n : data,\n }\n : {}\n ),\n timeout,\n fetchImpl\n ).then(async function (response) {\n if (response.status === 401) {\n headerProvider.invalidateHeader(new XHRError(url, await response.text(), response.status, response.statusText, response.headers))\n return sendCommand(method, url, headers, data, fetchImpl, contentTypeOverride, headerProvider)\n } else if (response.status >= 400) {\n const error: {\n error: string\n message: string\n status: number\n } = { error: response.statusText, message: await response.text(), status: response.status }\n console.warn(`XHR Error: ${error.status} - ${error.error}`, error.message)\n throw new XHRError(url, error.message, error.status, error.error, response.headers)\n } else {\n const ct = contentTypeOverride || response.headers.get('content-type') || 'text/plain'\n return (\n ct.startsWith('application/json')\n ? response.json()\n : ct.startsWith('application/xml') || ct.startsWith('text/')\n ? response.text()\n : response.arrayBuffer()\n ).then((d) => new Data(response.status, ct, d))\n }\n })\n }\n}\n","export * from './api/IccAccesslogApi'\nexport * from './api/IccAgendaApi'\nexport * from './api/IccAnonymousAccessApi'\nexport * from './api/IccApplicationsettingsApi'\nexport * from './api/IccArticleApi'\nexport * from './api/IccAuthApi'\nexport * from './api/IccBeefactApi'\nexport * from './api/IccBekmehrApi'\nexport * from './api/IccBeresultexportApi'\nexport * from './api/IccBeresultimportApi'\nexport * from './api/IccBesamv2Api'\nexport * from './api/IccCalendarItemApi'\nexport * from './api/IccCalendarItemTypeApi'\nexport * from './api/IccClassificationApi'\nexport * from './api/IccClassificationTemplateApi'\nexport * from './api/IccCodeApi'\nexport * from './api/IccContactApi'\nexport * from './api/IccDeviceApi'\nexport * from './api/IccDoctemplateApi'\nexport * from './api/IccDocumentApi'\nexport * from './api/IccEntityrefApi'\nexport * from './api/IccEntitytemplateApi'\nexport * from './api/IccFormApi'\nexport * from './api/IccFrontendmigrationApi'\nexport * from './api/IccGroupApi'\nexport * from './api/IccHcpartyApi'\nexport * from './api/IccHelementApi'\nexport * from './api/IccIcureApi'\nexport * from './api/IccInsuranceApi'\nexport * from './api/IccInvoiceApi'\nexport * from './api/IccKeywordApi'\nexport * from './api/IccMedexApi'\nexport * from './api/IccMedicallocationApi'\nexport * from './api/IccMessageApi'\nexport * from './api/IccPatientApi'\nexport * from './api/IccPermissionApi'\nexport * from './api/IccPlaceApi'\nexport * from './api/IccPubsubApi'\nexport * from './api/IccReceiptApi'\nexport * from './api/IccReplicationApi'\nexport * from './api/IccTarificationApi'\nexport * from './api/IccTimeTableApi'\nexport * from './api/IccTmpApi'\nexport * from './api/IccUserApi'\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterCode {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterCode, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterContact {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterContact, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterDevice {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterDevice, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterHealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterHealthElement, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterHealthcareParty, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterInvoice, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterMaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterMaintenanceTask, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterPatient {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterPatient, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterService {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterService, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AbstractFilterUser {\n constructor(json: JSON | any) {\n Object.assign(this as AbstractFilterUser, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\n/**\n * This entity represents Access Log.\n */\nexport class AccessLog {\n constructor(json: JSON | any) {\n Object.assign(this as AccessLog, json)\n }\n\n /**\n * The Id of the Access log. We encourage using either a v4 UUID or a HL7 Id\n */\n id?: string\n /**\n * The revision of the access log in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Id of the object that is being requested.\n */\n objectId?: string\n /**\n * The type of access\n */\n accessType?: string\n /**\n * Id of the user making the requests\n */\n user?: string\n /**\n * Further details about the access\n */\n detail?: string\n /**\n * The date (unix epoch in ms) of logging, is filled instantaneously.\n */\n date?: number\n patientId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AddedDocument {\n constructor(json: JSON | any) {\n Object.assign(this as AddedDocument, json)\n }\n\n from?: number\n to?: number\n verseSeq?: number\n documentSeq?: number\n mimeType?: string\n addressUrl?: string\n descrNl?: string\n descrFr?: string\n localPath?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Telecom } from './Telecom'\n\n/**\n * This entity represents an Address\n */\nexport class Address {\n constructor(json: JSON | any) {\n Object.assign(this as Address, json)\n }\n\n /**\n * The type of place the address represents, ex: home, office, hospital, clinic, etc.\n */\n addressType?: Address.AddressTypeEnum\n /**\n * Descriptive notes about the address\n */\n descr?: string\n /**\n * Street name\n */\n street?: string\n /**\n * Building / house number\n */\n houseNumber?: string\n /**\n * Post / PO box number\n */\n postboxNumber?: string\n /**\n * Postal/PIN/ZIP/Area code\n */\n postalCode?: string\n /**\n * Name of city in the address\n */\n city?: string\n /**\n * Name of state in the Address\n */\n state?: string\n /**\n * Name / code of country in the address\n */\n country?: string\n /**\n * Additional notes\n */\n note?: string\n /**\n * List of other contact details available through telecom services, ex: email, phone number, fax, etc.\n */\n telecoms?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Address {\n export type AddressTypeEnum =\n | 'home'\n | 'work'\n | 'vacation'\n | 'hospital'\n | 'clinic'\n | 'hq'\n | 'other'\n | 'temporary'\n | 'postal'\n | 'diplomatic'\n | 'reference'\n | 'careaddress'\n export const AddressTypeEnum = {\n Home: 'home' as AddressTypeEnum,\n Work: 'work' as AddressTypeEnum,\n Vacation: 'vacation' as AddressTypeEnum,\n Hospital: 'hospital' as AddressTypeEnum,\n Clinic: 'clinic' as AddressTypeEnum,\n Hq: 'hq' as AddressTypeEnum,\n Other: 'other' as AddressTypeEnum,\n Temporary: 'temporary' as AddressTypeEnum,\n Postal: 'postal' as AddressTypeEnum,\n Diplomatic: 'diplomatic' as AddressTypeEnum,\n Reference: 'reference' as AddressTypeEnum,\n Careaddress: 'careaddress' as AddressTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class AdministrationQuantity {\n constructor(json: JSON | any) {\n Object.assign(this as AdministrationQuantity, json)\n }\n\n quantity?: number\n administrationUnit?: CodeStub\n unit?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Right } from './Right'\n\nexport class Agenda {\n constructor(json: JSON | any) {\n Object.assign(this as Agenda, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n userId?: string\n rights?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AgreementAppendix {\n constructor(json: JSON | any) {\n Object.assign(this as AgreementAppendix, json)\n }\n\n docSeq?: number\n verseSeq?: number\n documentId?: string\n path?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AmpComponent } from './AmpComponent'\nimport { Ampp } from './Ampp'\nimport { Company } from './Company'\nimport { SamText } from './SamText'\nimport { VmpStub } from './VmpStub'\n\nexport class Amp {\n constructor(json: JSON | any) {\n Object.assign(this as Amp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n vmp?: VmpStub\n officialName?: string\n status?: Amp.StatusEnum\n name?: SamText\n blackTriangle?: boolean\n medicineType?: Amp.MedicineTypeEnum\n company?: Company\n abbreviatedName?: SamText\n proprietarySuffix?: SamText\n prescriptionName?: SamText\n ampps?: Array\n components?: Array\n}\nexport namespace Amp {\n export type StatusEnum = 'AUTHORIZED' | 'SUSPENDED' | 'REVOKED'\n export const StatusEnum = {\n AUTHORIZED: 'AUTHORIZED' as StatusEnum,\n SUSPENDED: 'SUSPENDED' as StatusEnum,\n REVOKED: 'REVOKED' as StatusEnum,\n }\n export type MedicineTypeEnum = 'ALLOPATHIC' | 'HOMEOPATHIC'\n export const MedicineTypeEnum = {\n ALLOPATHIC: 'ALLOPATHIC' as MedicineTypeEnum,\n HOMEOPATHIC: 'HOMEOPATHIC' as MedicineTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Ingredient } from './Ingredient'\nimport { PharmaceuticalFormStub } from './PharmaceuticalFormStub'\nimport { RouteOfAdministration } from './RouteOfAdministration'\nimport { SamText } from './SamText'\n\nexport class AmpComponent {\n constructor(json: JSON | any) {\n Object.assign(this as AmpComponent, json)\n }\n\n from?: number\n to?: number\n ingredients?: Array\n pharmaceuticalForms?: Array\n routeOfAdministrations?: Array\n dividable?: string\n scored?: string\n crushable?: AmpComponent.CrushableEnum\n containsAlcohol?: AmpComponent.ContainsAlcoholEnum\n sugarFree?: boolean\n modifiedReleaseType?: number\n specificDrugDevice?: number\n dimensions?: string\n name?: SamText\n note?: SamText\n}\nexport namespace AmpComponent {\n export type CrushableEnum = 'Y' | 'N' | 'X'\n export const CrushableEnum = {\n Y: 'Y' as CrushableEnum,\n N: 'N' as CrushableEnum,\n X: 'X' as CrushableEnum,\n }\n export type ContainsAlcoholEnum = 'Y' | 'N' | 'X'\n export const ContainsAlcoholEnum = {\n Y: 'Y' as ContainsAlcoholEnum,\n N: 'N' as ContainsAlcoholEnum,\n X: 'X' as ContainsAlcoholEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AmppComponent } from './AmppComponent'\nimport { Atc } from './Atc'\nimport { Commercialization } from './Commercialization'\nimport { Company } from './Company'\nimport { Dmpp } from './Dmpp'\nimport { Quantity } from './Quantity'\nimport { SamText } from './SamText'\nimport { SupplyProblem } from './SupplyProblem'\n\nexport class Ampp {\n constructor(json: JSON | any) {\n Object.assign(this as Ampp, json)\n }\n\n from?: number\n to?: number\n index?: number\n ctiExtended?: string\n orphan?: boolean\n leafletLink?: SamText\n spcLink?: SamText\n rmaPatientLink?: SamText\n rmaProfessionalLink?: SamText\n parallelCircuit?: number\n parallelDistributor?: string\n packMultiplier?: number\n packAmount?: Quantity\n packDisplayValue?: string\n status?: Ampp.StatusEnum\n atcs?: Array\n crmLink?: SamText\n deliveryModusCode?: string\n deliveryModus?: SamText\n deliveryModusSpecificationCode?: string\n deliveryModusSpecification?: SamText\n dhpcLink?: SamText\n distributorCompany?: Company\n singleUse?: boolean\n speciallyRegulated?: number\n abbreviatedName?: SamText\n prescriptionName?: SamText\n note?: SamText\n posologyNote?: SamText\n noGenericPrescriptionReasons?: Array\n exFactoryPrice?: number\n reimbursementCode?: number\n definedDailyDose?: Quantity\n officialExFactoryPrice?: number\n realExFactoryPrice?: number\n pricingInformationDecisionDate?: number\n components?: Array\n commercializations?: Array\n supplyProblems?: Array\n dmpps?: Array\n vaccineIndicationCodes?: Array\n}\nexport namespace Ampp {\n export type StatusEnum = 'AUTHORIZED' | 'SUSPENDED' | 'REVOKED'\n export const StatusEnum = {\n AUTHORIZED: 'AUTHORIZED' as StatusEnum,\n SUSPENDED: 'SUSPENDED' as StatusEnum,\n REVOKED: 'REVOKED' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DeviceType } from './DeviceType'\nimport { PackagingType } from './PackagingType'\n\nexport class AmppComponent {\n constructor(json: JSON | any) {\n Object.assign(this as AmppComponent, json)\n }\n\n from?: number\n to?: number\n contentType?: AmppComponent.ContentTypeEnum\n contentMultiplier?: number\n packSpecification?: string\n deviceType?: DeviceType\n packagingType?: PackagingType\n}\nexport namespace AmppComponent {\n export type ContentTypeEnum = 'ACTIVE_COMPONENT' | 'SOLVENT' | 'DEVICE' | 'EXCIPIENT'\n export const ContentTypeEnum = {\n ACTIVECOMPONENT: 'ACTIVE_COMPONENT' as ContentTypeEnum,\n SOLVENT: 'SOLVENT' as ContentTypeEnum,\n DEVICE: 'DEVICE' as ContentTypeEnum,\n EXCIPIENT: 'EXCIPIENT' as ContentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Text node with attribution. Could be written by a healthcare party, as a side node of a |medical record. For example, after taking a temperature, the HCP adds a node explaining the |thermometer is faulty.\n */\nexport class Annotation {\n constructor(json: JSON | any) {\n Object.assign(this as Annotation, json)\n }\n\n /**\n * The Id of the Annotation. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n author?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this note, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The timestamp (unix epoch in ms) of the latest modification of this note, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * Text contained in the note, written as markdown.\n */\n text?: string\n /**\n * Defines to which part of the corresponding information the note is related to.\n */\n location?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class ApplicationSettings {\n constructor(json: JSON | any) {\n Object.assign(this as ApplicationSettings, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n settings?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class AppointmentTypeAndPlace {\n constructor(json: JSON | any) {\n Object.assign(this as AppointmentTypeAndPlace, json)\n }\n\n calendarItemTypeId?: string\n name?: string\n color?: string\n duration?: number\n subjectByLanguage?: { [key: string]: string }\n placeId?: string\n address?: Address\n acceptsNewPatients?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Delegation } from './Delegation'\n\nexport class Article {\n constructor(json: JSON | any) {\n Object.assign(this as Article, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n content?: Array\n classification?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Atc {\n constructor(json: JSON | any) {\n Object.assign(this as Atc, json)\n }\n\n code?: string\n description?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Metadata for new attachments or attachments which will be updated, by key. The key for the main attachment is the document id.\n */\nexport class AttachmentMetadata {\n constructor(json: JSON | any) {\n Object.assign(this as AttachmentMetadata, json)\n }\n\n /**\n * The Uniform Type Identifiers (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE) of the attachment. This is a list to allow representing a priority, but each UTI must be unique.\n */\n utis?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class AuthenticationResponse {\n constructor(json: JSON | any) {\n Object.assign(this as AuthenticationResponse, json)\n }\n\n groupId?: string\n userId?: string\n dataOwnerId?: string\n healthcarePartyId?: string\n reason?: string\n successful?: boolean\n username?: string\n token?: string\n refreshToken?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Encrypted and time-limited Authentication tokens used for inter-applications authentication\n */\nexport class AuthenticationToken {\n constructor(json: JSON | any) {\n Object.assign(this as AuthenticationToken, json)\n }\n\n /**\n * Encrypted token\n */\n token?: string\n /**\n * Validity starting time of the token\n */\n creationTime?: number\n /**\n * Token validity in seconds\n */\n validity?: number\n\n deletionDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Basic {\n constructor(json: JSON | any) {\n Object.assign(this as Basic, json)\n }\n\n username?: string\n password?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { b64_2ab } from './ModelHelper'\nexport class Body {\n constructor(json: JSON | any) {\n Object.assign(this as Body, json, json.attachment ? { attachment: b64_2ab(json.attachment) } : {})\n }\n\n attachment?: ArrayBuffer\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AttachmentMetadata } from './AttachmentMetadata'\n\n/**\n * Describes the operations to execute with this update.\n */\nexport class BulkAttachmentUpdateOptions {\n constructor(json: JSON | any) {\n Object.assign(this as BulkAttachmentUpdateOptions, json)\n }\n\n /**\n * Metadata for new attachments or attachments which will be updated, by key. The key for the main attachment is the document id.\n */\n updateAttachmentsMetadata?: { [key: string]: AttachmentMetadata }\n /**\n * Keys of attachments to delete. The key for the main attachment is the document id.\n */\n deleteAttachments?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CalendarItemTag } from './CalendarItemTag'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { FlowItem } from './FlowItem'\n\nexport class CalendarItem {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItem, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n title?: string\n calendarItemTypeId?: string\n masterCalendarItemId?: string\n patientId?: string\n important?: boolean\n homeVisit?: boolean\n phoneNumber?: string\n placeId?: string\n address?: Address\n addressText?: string\n startTime?: number\n endTime?: number\n confirmationTime?: number\n confirmationId?: string\n duration?: number\n allDay?: boolean\n details?: string\n wasMigrated?: boolean\n agendaId?: string\n recurrenceId?: string\n meetingTags?: Array\n flowItem?: FlowItem\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CalendarItemTag {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItemTag, json)\n }\n\n code?: string\n date?: number\n userId?: string\n userName?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CalendarItemType {\n constructor(json: JSON | any) {\n Object.assign(this as CalendarItemType, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n color?: string\n duration?: number\n externalRef?: string\n mikronoId?: string\n docIds?: Array\n otherInfos?: { [key: string]: string }\n subjectByLanguage?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\n/**\n * List of care team members assigned for the healthcare element.\n */\nexport class CareTeamMember {\n constructor(json: JSON | any) {\n Object.assign(this as CareTeamMember, json)\n }\n\n id?: string\n careTeamMemberType?: CareTeamMember.CareTeamMemberTypeEnum\n healthcarePartyId?: string\n quality?: CodeStub\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace CareTeamMember {\n export type CareTeamMemberTypeEnum = 'physician' | 'specialist' | 'other'\n export const CareTeamMemberTypeEnum = {\n Physician: 'physician' as CareTeamMemberTypeEnum,\n Specialist: 'specialist' as CareTeamMemberTypeEnum,\n Other: 'other' as CareTeamMemberTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Members of the careteam involved in this approach\n */\nexport class CareTeamMembership {\n constructor(json: JSON | any) {\n Object.assign(this as CareTeamMembership, json)\n }\n\n startDate?: number\n endDate?: number\n careTeamMemberId?: string\n membershipType?: CareTeamMembership.MembershipTypeEnum\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace CareTeamMembership {\n export type MembershipTypeEnum = 'doctor' | 'mutuality' | 'patient' | 'specialist' | 'other'\n export const MembershipTypeEnum = {\n Doctor: 'doctor' as MembershipTypeEnum,\n Mutuality: 'mutuality' as MembershipTypeEnum,\n Patient: 'patient' as MembershipTypeEnum,\n Specialist: 'specialist' as MembershipTypeEnum,\n Other: 'other' as MembershipTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CheckSMFPatientResult {\n constructor(json: JSON | any) {\n Object.assign(this as CheckSMFPatientResult, json)\n }\n\n firstName?: string\n lastName?: string\n ssin?: string\n dateOfBirth?: number\n exists?: boolean\n existingPatientId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\nexport class Classification {\n constructor(json: JSON | any) {\n Object.assign(this as Classification, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n parentId?: string\n label?: string\n templateId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\nexport class ClassificationTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as ClassificationTemplate, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n parentId?: string\n label?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Periodicity } from './Periodicity'\n\nexport class Code {\n constructor(json: JSON | any) {\n Object.assign(this as Code, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n context?: string\n type?: string\n code?: string\n version?: string\n label?: { [key: string]: string }\n author?: string\n regions?: Array\n periodicity?: Array\n level?: number\n links?: Array\n qualifiedLinks?: { [key: string]: Array }\n flags?: Array\n searchTerms?: { [key: string]: Array }\n data?: string\n appendices?: { [key: string]: string }\n disabled?: boolean\n}\nexport namespace Code {\n export type FlagsEnum =\n | 'male_only'\n | 'female_only'\n | 'deptkinesitherapy'\n | 'deptnursing'\n | 'deptgeneralpractice'\n | 'deptsocialworker'\n | 'deptpsychology'\n | 'deptadministrative'\n | 'deptdietetics'\n | 'deptspeechtherapy'\n | 'deptdentistry'\n | 'deptoccupationaltherapy'\n | 'depthealthcare'\n | 'deptgynecology'\n | 'deptpediatry'\n | 'deptalgology'\n | 'deptanatomopathology'\n | 'deptanesthesiology'\n | 'deptbacteriology'\n | 'deptcardiacsurgery'\n | 'deptcardiology'\n | 'deptchildandadolescentpsychiatry'\n | 'deptdermatology'\n | 'deptdiabetology'\n | 'deptemergency'\n | 'deptendocrinology'\n | 'deptgastroenterology'\n | 'deptgenetics'\n | 'deptgeriatry'\n | 'depthandsurgery'\n | 'depthematology'\n | 'deptinfectiousdisease'\n | 'deptintensivecare'\n | 'deptlaboratory'\n | 'deptmajorburns'\n | 'deptmaxillofacialsurgery'\n | 'deptmedicine'\n | 'deptmolecularbiology'\n | 'deptneonatalogy'\n | 'deptnephrology'\n | 'deptneurology'\n | 'deptneurosurgery'\n | 'deptnte'\n | 'deptnuclear'\n | 'deptnutritiondietetics'\n | 'deptobstetrics'\n | 'deptoncology'\n | 'deptophtalmology'\n | 'deptorthopedy'\n | 'deptpalliativecare'\n | 'deptpediatricintensivecare'\n | 'deptpediatricsurgery'\n | 'deptpharmacy'\n | 'deptphysicalmedecine'\n | 'deptphysiotherapy'\n | 'deptplasticandreparatorysurgery'\n | 'deptpneumology'\n | 'deptpodiatry'\n | 'deptpsychiatry'\n | 'deptradiology'\n | 'deptradiotherapy'\n | 'deptrevalidation'\n | 'deptrheumatology'\n | 'deptrhumatology'\n | 'deptsenology'\n | 'deptsocialservice'\n | 'deptsportsmedecine'\n | 'deptstomatology'\n | 'deptsurgery'\n | 'deptthoracicsurgery'\n | 'depttoxicology'\n | 'depttropicalmedecine'\n | 'depturology'\n | 'deptvascularsurgery'\n | 'deptvisceraldigestiveabdominalsurgery'\n | 'depttransplantsurgery'\n | 'deptpercutaneous'\n | 'deptchildbirth'\n export const FlagsEnum = {\n MaleOnly: 'male_only' as FlagsEnum,\n FemaleOnly: 'female_only' as FlagsEnum,\n Deptkinesitherapy: 'deptkinesitherapy' as FlagsEnum,\n Deptnursing: 'deptnursing' as FlagsEnum,\n Deptgeneralpractice: 'deptgeneralpractice' as FlagsEnum,\n Deptsocialworker: 'deptsocialworker' as FlagsEnum,\n Deptpsychology: 'deptpsychology' as FlagsEnum,\n Deptadministrative: 'deptadministrative' as FlagsEnum,\n Deptdietetics: 'deptdietetics' as FlagsEnum,\n Deptspeechtherapy: 'deptspeechtherapy' as FlagsEnum,\n Deptdentistry: 'deptdentistry' as FlagsEnum,\n Deptoccupationaltherapy: 'deptoccupationaltherapy' as FlagsEnum,\n Depthealthcare: 'depthealthcare' as FlagsEnum,\n Deptgynecology: 'deptgynecology' as FlagsEnum,\n Deptpediatry: 'deptpediatry' as FlagsEnum,\n Deptalgology: 'deptalgology' as FlagsEnum,\n Deptanatomopathology: 'deptanatomopathology' as FlagsEnum,\n Deptanesthesiology: 'deptanesthesiology' as FlagsEnum,\n Deptbacteriology: 'deptbacteriology' as FlagsEnum,\n Deptcardiacsurgery: 'deptcardiacsurgery' as FlagsEnum,\n Deptcardiology: 'deptcardiology' as FlagsEnum,\n Deptchildandadolescentpsychiatry: 'deptchildandadolescentpsychiatry' as FlagsEnum,\n Deptdermatology: 'deptdermatology' as FlagsEnum,\n Deptdiabetology: 'deptdiabetology' as FlagsEnum,\n Deptemergency: 'deptemergency' as FlagsEnum,\n Deptendocrinology: 'deptendocrinology' as FlagsEnum,\n Deptgastroenterology: 'deptgastroenterology' as FlagsEnum,\n Deptgenetics: 'deptgenetics' as FlagsEnum,\n Deptgeriatry: 'deptgeriatry' as FlagsEnum,\n Depthandsurgery: 'depthandsurgery' as FlagsEnum,\n Depthematology: 'depthematology' as FlagsEnum,\n Deptinfectiousdisease: 'deptinfectiousdisease' as FlagsEnum,\n Deptintensivecare: 'deptintensivecare' as FlagsEnum,\n Deptlaboratory: 'deptlaboratory' as FlagsEnum,\n Deptmajorburns: 'deptmajorburns' as FlagsEnum,\n Deptmaxillofacialsurgery: 'deptmaxillofacialsurgery' as FlagsEnum,\n Deptmedicine: 'deptmedicine' as FlagsEnum,\n Deptmolecularbiology: 'deptmolecularbiology' as FlagsEnum,\n Deptneonatalogy: 'deptneonatalogy' as FlagsEnum,\n Deptnephrology: 'deptnephrology' as FlagsEnum,\n Deptneurology: 'deptneurology' as FlagsEnum,\n Deptneurosurgery: 'deptneurosurgery' as FlagsEnum,\n Deptnte: 'deptnte' as FlagsEnum,\n Deptnuclear: 'deptnuclear' as FlagsEnum,\n Deptnutritiondietetics: 'deptnutritiondietetics' as FlagsEnum,\n Deptobstetrics: 'deptobstetrics' as FlagsEnum,\n Deptoncology: 'deptoncology' as FlagsEnum,\n Deptophtalmology: 'deptophtalmology' as FlagsEnum,\n Deptorthopedy: 'deptorthopedy' as FlagsEnum,\n Deptpalliativecare: 'deptpalliativecare' as FlagsEnum,\n Deptpediatricintensivecare: 'deptpediatricintensivecare' as FlagsEnum,\n Deptpediatricsurgery: 'deptpediatricsurgery' as FlagsEnum,\n Deptpharmacy: 'deptpharmacy' as FlagsEnum,\n Deptphysicalmedecine: 'deptphysicalmedecine' as FlagsEnum,\n Deptphysiotherapy: 'deptphysiotherapy' as FlagsEnum,\n Deptplasticandreparatorysurgery: 'deptplasticandreparatorysurgery' as FlagsEnum,\n Deptpneumology: 'deptpneumology' as FlagsEnum,\n Deptpodiatry: 'deptpodiatry' as FlagsEnum,\n Deptpsychiatry: 'deptpsychiatry' as FlagsEnum,\n Deptradiology: 'deptradiology' as FlagsEnum,\n Deptradiotherapy: 'deptradiotherapy' as FlagsEnum,\n Deptrevalidation: 'deptrevalidation' as FlagsEnum,\n Deptrheumatology: 'deptrheumatology' as FlagsEnum,\n Deptrhumatology: 'deptrhumatology' as FlagsEnum,\n Deptsenology: 'deptsenology' as FlagsEnum,\n Deptsocialservice: 'deptsocialservice' as FlagsEnum,\n Deptsportsmedecine: 'deptsportsmedecine' as FlagsEnum,\n Deptstomatology: 'deptstomatology' as FlagsEnum,\n Deptsurgery: 'deptsurgery' as FlagsEnum,\n Deptthoracicsurgery: 'deptthoracicsurgery' as FlagsEnum,\n Depttoxicology: 'depttoxicology' as FlagsEnum,\n Depttropicalmedecine: 'depttropicalmedecine' as FlagsEnum,\n Depturology: 'depturology' as FlagsEnum,\n Deptvascularsurgery: 'deptvascularsurgery' as FlagsEnum,\n Deptvisceraldigestiveabdominalsurgery: 'deptvisceraldigestiveabdominalsurgery' as FlagsEnum,\n Depttransplantsurgery: 'depttransplantsurgery' as FlagsEnum,\n Deptpercutaneous: 'deptpercutaneous' as FlagsEnum,\n Deptchildbirth: 'deptchildbirth' as FlagsEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CodeStub {\n constructor(json: JSON | any) {\n Object.assign(this as CodeStub, json)\n }\n\n id?: string\n context?: string\n type?: string\n code?: string\n version?: string\n label?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class CodeType {\n constructor(json: JSON | any) {\n Object.assign(this as CodeType, json)\n }\n\n type?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class CommentedClassification {\n constructor(json: JSON | any) {\n Object.assign(this as CommentedClassification, json)\n }\n\n title?: SamText\n url?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Commercialization {\n constructor(json: JSON | any) {\n Object.assign(this as Commercialization, json)\n }\n\n from?: number\n to?: number\n reason?: SamText\n endOfComercialization?: SamText\n impact?: SamText\n additionalInformation?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Company {\n constructor(json: JSON | any) {\n Object.assign(this as Company, json)\n }\n\n from?: number\n to?: number\n authorisationNr?: string\n vatNr?: { [key: string]: string }\n europeanNr?: string\n denomination?: string\n legalForm?: string\n building?: string\n streetName?: string\n streetNum?: string\n postbox?: string\n postcode?: string\n city?: string\n countryCode?: string\n phone?: string\n language?: string\n website?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\nimport { Service } from './Service'\nimport { SubContact } from './SubContact'\n\n/**\n * This entity is a root-level object. It represents a contact. It is serialized in JSON and saved in the underlying icure-contact CouchDB database. The contact is the entity that records the medical information about the patient chronologically. A visit to the patient's house, a consultation at the practice, a phone call between the patient and the healthcare party or integrating lab reports into the medical file are examples of when a contact can be recorded. A contact can occur with or without direct interaction between the patient and the healthcare party. For example, when a healthcare party encodes data received from laboratory's test result, this is done in the absence of a patient. A contact groups together pieces of information collected during one single event, for one single patient and for one or more healthcare parties. Patient's complaints, the diagnosis of a new problem, a surgical procedure, etc. are collected inside a contact. The main sub-element of the contact is the service. Each atomic piece of information collected during a contact is a service and is stored inside the services list of a contact.\n */\nexport class Contact {\n constructor(json: JSON | any) {\n Object.assign(this as Contact, json)\n }\n\n /**\n * the Id of the contact. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the contact in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * The identifiers of the Contact\n */\n identifier?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Separate contacts can merged in one logical contact if they share the same groupId. When a contact must be split to selectively assign rights to healthcare parties, the split contacts all share the same groupId\n */\n groupId?: string\n /**\n * The date (YYYYMMDDhhmmss) of the start of the contact.\n */\n openingDate?: number\n /**\n * The date (YYYYMMDDhhmmss) marking the end of the contact.\n */\n closingDate?: number\n /**\n * Description of the contact\n */\n descr?: string\n /**\n * Location where the contact was recorded.\n */\n location?: string\n /**\n * An external (from another source) id with no guarantee or requirement for unicity.\n */\n externalId?: string\n encounterType?: CodeStub\n /**\n * Set of all sub-contacts recorded during the given contact. Sub-contacts are used to link services embedded inside this contact to healthcare elements, healthcare approaches and/or forms.\n */\n subContacts?: Array\n /**\n * Set of all services provided to the patient during the contact.\n */\n services?: Array\n healthcarePartyId?: string\n modifiedContactId?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Measure } from './Measure'\nimport { Medication } from './Medication'\nimport { Service } from './Service'\nimport { TimeSeries } from './TimeSeries'\n\n/**\n * Information contained in the service. Content is localized, using ISO language code as key\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Content {\n constructor(json: JSON | any) {\n Object.assign(this as Content, json, json.binaryValue ? { binaryValue: b64_2ab(json.binaryValue) } : {})\n }\n\n stringValue?: string\n numberValue?: number\n booleanValue?: boolean\n instantValue?: number\n /**\n * Value as date. The format could have a all three (day, month and year) or values on any of these three, whatever is known.\n */\n fuzzyDateValue?: number\n binaryValue?: ArrayBuffer\n /**\n * Linked document.\n */\n documentId?: string\n measureValue?: Measure\n medicationValue?: Medication\n timeSeries?: TimeSeries\n compoundValue?: Array\n ratio?: Array\n range?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Copayment {\n constructor(json: JSON | any) {\n Object.assign(this as Copayment, json)\n }\n\n regimeType?: number\n from?: number\n to?: number\n feeAmount?: string\n}\n","import { DataOwnerTypeEnum } from './DataOwnerTypeEnum'\nimport { DataOwnerWithType } from './DataOwnerWithType'\nimport { Patient } from './Patient'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Device } from './Device'\n\nexport class CryptoActorStub {\n constructor(json: JSON | any) {\n Object.assign(this as CryptoActorStub, json)\n }\n\n static fromDataOwner(dataOwnerWithType: Patient | HealthcareParty | Device) {\n return new CryptoActorStub({\n id: dataOwnerWithType.id,\n rev: dataOwnerWithType.rev,\n hcPartyKeys: dataOwnerWithType.hcPartyKeys,\n aesExchangeKeys: dataOwnerWithType.aesExchangeKeys,\n transferKeys: dataOwnerWithType.transferKeys,\n privateKeyShamirPartitions: dataOwnerWithType.privateKeyShamirPartitions,\n publicKeysForOaepWithSha256: dataOwnerWithType.publicKeysForOaepWithSha256,\n publicKey: dataOwnerWithType.publicKey,\n })\n }\n\n readonly id!: string\n readonly rev?: string\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public keys of this actor which should be used for RSA-OAEP with sha256 encryption.\n */\n publicKeysForOaepWithSha256?: string[]\n /**\n * The public key of this hcp\n */\n publicKey?: string\n}\nexport class CryptoActorStubWithType {\n constructor(json: JSON | any) {\n this.stub = new CryptoActorStub(json.stub)\n this.type = json.type as DataOwnerTypeEnum\n }\n\n static fromDataOwner(dataOwnerWithType: DataOwnerWithType) {\n return new CryptoActorStubWithType({\n stub: CryptoActorStub.fromDataOwner(dataOwnerWithType.dataOwner),\n type: dataOwnerWithType.type,\n })\n }\n\n stub: CryptoActorStub\n type: DataOwnerTypeEnum\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Data {\n constructor(json: JSON | any) {\n Object.assign(this as Data, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Represent an attachment holding some additional data for an entity.\n */\nexport class DataAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as DataAttachment, json)\n }\n\n /**\n * Id of the attachment, if stored as a couchdb attachment\n */\n couchDbAttachmentId?: string\n /**\n * Id of the attachment, if stored using the object storage service\n */\n objectStoreAttachmentId?: string\n /**\n * The Uniform Type Identifiers (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE) of the attachment.\n * This is an array to allow representing a priority, but each UTI must be unique.\n */\n utis?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DataOwnerRegistrationSuccess {\n constructor(json: JSON | any) {\n Object.assign(this as DataOwnerRegistrationSuccess, json)\n }\n\n userLogin?: string\n userId?: string\n token?: string\n}\n","/**\n * Represents the type of a data owner\n */\nexport enum DataOwnerTypeEnum {\n Patient = 'patient',\n Hcp = 'hcp',\n Device = 'device',\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DataOwnerTypeEnum } from './DataOwnerTypeEnum'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Patient } from './Patient'\nimport { Device } from './Device'\n\nexport type DataOwnerWithType =\n | { type: DataOwnerTypeEnum.Hcp; dataOwner: HealthcareParty }\n | { type: DataOwnerTypeEnum.Patient; dataOwner: Patient }\n | { type: DataOwnerTypeEnum.Device; dataOwner: Device }\nexport namespace DataOwnerWithType {\n export function fromJson(json: any | JSON): DataOwnerWithType {\n if (json.type === DataOwnerTypeEnum.Hcp) {\n return { type: DataOwnerTypeEnum.Hcp, dataOwner: new HealthcareParty(json.dataOwner) }\n } else if (json.type === DataOwnerTypeEnum.Patient) {\n return { type: DataOwnerTypeEnum.Patient, dataOwner: new Patient(json.dataOwner) }\n } else if (json.type === DataOwnerTypeEnum.Device) {\n return { type: DataOwnerTypeEnum.Device, dataOwner: new Device(json.dataOwner) }\n } else throw new Error(`Unknown data owner type ${json.type}`)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DatabaseInfo {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseInfo, json)\n }\n\n id?: string\n updateSeq?: string\n fileSize?: number\n externalSize?: number\n activeSize?: number\n docs?: number\n q?: number\n n?: number\n w?: number\n r?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Replication } from './Replication'\nimport { User } from './User'\n\n/**\n * initialisationData is an object that contains the initial replications (target must be an internalTarget of value base, healthdata or patient) and the users and healthcare parties to be created\n */\nexport class DatabaseInitialisation {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseInitialisation, json)\n }\n\n users?: Array\n healthcareParties?: Array\n replication?: Replication\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DatabaseSynchronization {\n constructor(json: JSON | any) {\n Object.assign(this as DatabaseSynchronization, json)\n }\n\n source?: string\n target?: string\n filter?: string\n localTarget?: DatabaseSynchronization.LocalTargetEnum\n}\nexport namespace DatabaseSynchronization {\n export type LocalTargetEnum = 'base' | 'healthdata' | 'patient'\n export const LocalTargetEnum = {\n Base: 'base' as LocalTargetEnum,\n Healthdata: 'healthdata' as LocalTargetEnum,\n Patient: 'patient' as LocalTargetEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\nexport class Delegation {\n constructor(json: JSON | any) {\n Object.assign(this as Delegation, json)\n }\n\n owner?: string\n delegatedTo?: string\n key?: string\n tags?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Represents an attachment which was deleted from an entity.\n */\nexport class DeletedAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as DeletedAttachment, json)\n }\n\n /**\n * If the attachment was stored as a couchdb attachment this holds the id of the attachment, else null.\n */\n couchDbAttachmentId?: string\n /**\n * If the attachment was stored using the object storage service this holds the id of the attachment, else null.\n */\n objectStoreAttachmentId?: string\n /**\n * If the attachment was associated to a key this was its key, else null.\n */\n key?: string\n\n /**\n * Instant the attachment was deleted, as epoch timestamp in ms.\n */\n deletionTime?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Identifier } from './Identifier'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity is a root level object. It represents a device. It is serialized in JSON and saved in the underlying icure-base CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Device {\n constructor(json: JSON | any) {\n Object.assign(this as Device, json, json.picture ? { picture: b64_2ab(json.picture) } : {})\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n identifiers?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n externalId?: string\n name?: string\n type?: string\n brand?: string\n model?: string\n serialNumber?: string\n parentId?: string\n picture?: ArrayBuffer\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * The public keys of this actor which should be used for RSA-OAEP with sha256 encryption.\n */\n publicKeysForOaepWithSha256?: string[]\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class DeviceType {\n constructor(json: JSON | any) {\n Object.assign(this as DeviceType, json)\n }\n\n code?: string\n name?: SamText\n edqmCode?: string\n edqmDefinition?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\n\nexport class DiaryNoteExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as DiaryNoteExportInfo, json)\n }\n\n encryptionDecryptionKeys?: Array\n excludedIds?: Array\n recipient?: HealthcareParty\n softwareName?: string\n softwareVersion?: string\n tags?: Array\n contexts?: Array\n psy?: boolean\n documentId?: string\n attachmentId?: string\n note?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Reimbursement } from './Reimbursement'\n\nexport class Dmpp {\n constructor(json: JSON | any) {\n Object.assign(this as Dmpp, json)\n }\n\n id?: string\n from?: number\n to?: number\n deliveryEnvironment?: Dmpp.DeliveryEnvironmentEnum\n code?: string\n codeType?: Dmpp.CodeTypeEnum\n price?: string\n cheap?: boolean\n cheapest?: boolean\n reimbursable?: boolean\n reimbursements?: Array\n productId?: string\n}\nexport namespace Dmpp {\n export type DeliveryEnvironmentEnum = 'P' | 'A' | 'H' | 'R'\n export const DeliveryEnvironmentEnum = {\n P: 'P' as DeliveryEnvironmentEnum,\n A: 'A' as DeliveryEnvironmentEnum,\n H: 'H' as DeliveryEnvironmentEnum,\n R: 'R' as DeliveryEnvironmentEnum,\n }\n export type CodeTypeEnum = 'CNK' | 'PSEUDO'\n export const CodeTypeEnum = {\n CNK: 'CNK' as CodeTypeEnum,\n PSEUDO: 'PSEUDO' as CodeTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DocIdentifier {\n constructor(json: JSON | any) {\n Object.assign(this as DocIdentifier, json)\n }\n\n id?: string\n rev?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { DataAttachment } from './DataAttachment'\nimport { DeletedAttachment } from './DeletedAttachment'\n\n/**\n * This entity is a root level object. It represents a Document. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Document {\n constructor(json: JSON | any) {\n Object.assign(\n this as Document,\n json,\n json.encryptedAttachment ? { encryptedAttachment: b64_2ab(json.encryptedAttachment) } : {},\n json.decryptedAttachment ? { decryptedAttachment: b64_2ab(json.decryptedAttachment) } : {}\n )\n }\n\n /**\n * The Id of the document. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the document in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Location of the document\n */\n documentLocation?: Document.DocumentLocationEnum\n /**\n * The type of document, ex: admission, clinical path, document report,invoice, etc.\n */\n documentType?: Document.DocumentTypeEnum\n /**\n * The status of the development of the document. Ex: Draft, finalized, reviewed, signed, etc.\n */\n documentStatus?: Document.DocumentStatusEnum\n /**\n * When the document is stored in an external repository, this is the uri of the document in that repository\n */\n externalUri?: string\n /**\n * Name of the document\n */\n name?: string\n /**\n * The document version\n */\n version?: string\n /**\n * The ICureDocument (Form, Contact, ...) that has been used to generate the document\n */\n storedICureDocumentId?: string\n /**\n * A unique external id (from another external source).\n */\n externalUuid?: string\n /**\n * Size of the document file\n */\n size?: number\n /**\n * Hashed version of the document\n */\n hash?: string\n /**\n * Id of the contact during which the document was created\n */\n openingContactId?: string\n /**\n * Id of the main attachment of this document, if stored as a couchdb attachment\n */\n attachmentId?: string\n /**\n * Id of the main attachment of this document, if stored using the object storage service\n */\n objectStoreReference?: string\n /**\n * The main Uniform Type Identifier for the main attachment (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE)\n */\n mainUti?: string\n /**\n * Extra Uniform Type Identifiers for the main attachment\n */\n otherUtis?: Array\n /**\n * Secondary attachments for this document\n */\n secondaryAttachments?: { [key: string]: DataAttachment }\n /**\n * Information on past attachments for this document\n */\n deletedAttachments?: Array\n encryptedAttachment?: ArrayBuffer\n decryptedAttachment?: ArrayBuffer\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Document {\n export type DocumentLocationEnum = 'annex' | 'body'\n export const DocumentLocationEnum = {\n Annex: 'annex' as DocumentLocationEnum,\n Body: 'body' as DocumentLocationEnum,\n }\n export type DocumentTypeEnum =\n | 'admission'\n | 'alert'\n | 'bvt_sample'\n | 'clinicalpath'\n | 'clinicalsummary'\n | 'contactreport'\n | 'quote'\n | 'invoice'\n | 'death'\n | 'discharge'\n | 'dischargereport'\n | 'ebirth_baby_medicalform'\n | 'ebirth_baby_notification'\n | 'ebirth_mother_medicalform'\n | 'ebirth_mother_notification'\n | 'ecare_safe_consultation'\n | 'epidemiology'\n | 'intervention'\n | 'labrequest'\n | 'labresult'\n | 'medicaladvisoragreement'\n | 'medicationschemeelement'\n | 'note'\n | 'notification'\n | 'pharmaceuticalprescription'\n | 'prescription'\n | 'productdelivery'\n | 'quickdischargereport'\n | 'radiationexposuremonitoring'\n | 'referral'\n | 'report'\n | 'request'\n | 'result'\n | 'sumehr'\n | 'telemonitoring'\n | 'template'\n | 'template_admin'\n | 'treatmentsuspension'\n | 'vaccination'\n export const DocumentTypeEnum = {\n Admission: 'admission' as DocumentTypeEnum,\n Alert: 'alert' as DocumentTypeEnum,\n BvtSample: 'bvt_sample' as DocumentTypeEnum,\n Clinicalpath: 'clinicalpath' as DocumentTypeEnum,\n Clinicalsummary: 'clinicalsummary' as DocumentTypeEnum,\n Contactreport: 'contactreport' as DocumentTypeEnum,\n Quote: 'quote' as DocumentTypeEnum,\n Invoice: 'invoice' as DocumentTypeEnum,\n Death: 'death' as DocumentTypeEnum,\n Discharge: 'discharge' as DocumentTypeEnum,\n Dischargereport: 'dischargereport' as DocumentTypeEnum,\n EbirthBabyMedicalform: 'ebirth_baby_medicalform' as DocumentTypeEnum,\n EbirthBabyNotification: 'ebirth_baby_notification' as DocumentTypeEnum,\n EbirthMotherMedicalform: 'ebirth_mother_medicalform' as DocumentTypeEnum,\n EbirthMotherNotification: 'ebirth_mother_notification' as DocumentTypeEnum,\n EcareSafeConsultation: 'ecare_safe_consultation' as DocumentTypeEnum,\n Epidemiology: 'epidemiology' as DocumentTypeEnum,\n Intervention: 'intervention' as DocumentTypeEnum,\n Labrequest: 'labrequest' as DocumentTypeEnum,\n Labresult: 'labresult' as DocumentTypeEnum,\n Medicaladvisoragreement: 'medicaladvisoragreement' as DocumentTypeEnum,\n Medicationschemeelement: 'medicationschemeelement' as DocumentTypeEnum,\n Note: 'note' as DocumentTypeEnum,\n Notification: 'notification' as DocumentTypeEnum,\n Pharmaceuticalprescription: 'pharmaceuticalprescription' as DocumentTypeEnum,\n Prescription: 'prescription' as DocumentTypeEnum,\n Productdelivery: 'productdelivery' as DocumentTypeEnum,\n Quickdischargereport: 'quickdischargereport' as DocumentTypeEnum,\n Radiationexposuremonitoring: 'radiationexposuremonitoring' as DocumentTypeEnum,\n Referral: 'referral' as DocumentTypeEnum,\n Report: 'report' as DocumentTypeEnum,\n Request: 'request' as DocumentTypeEnum,\n Result: 'result' as DocumentTypeEnum,\n Sumehr: 'sumehr' as DocumentTypeEnum,\n Telemonitoring: 'telemonitoring' as DocumentTypeEnum,\n Template: 'template' as DocumentTypeEnum,\n TemplateAdmin: 'template_admin' as DocumentTypeEnum,\n Treatmentsuspension: 'treatmentsuspension' as DocumentTypeEnum,\n Vaccination: 'vaccination' as DocumentTypeEnum,\n }\n export type DocumentStatusEnum =\n | 'draft'\n | 'finalized'\n | 'pending_review'\n | 'reviewed'\n | 'pending_signature'\n | 'signed'\n | 'canceled'\n | 'sent'\n | 'delivered'\n export const DocumentStatusEnum = {\n Draft: 'draft' as DocumentStatusEnum,\n Finalized: 'finalized' as DocumentStatusEnum,\n PendingReview: 'pending_review' as DocumentStatusEnum,\n Reviewed: 'reviewed' as DocumentStatusEnum,\n PendingSignature: 'pending_signature' as DocumentStatusEnum,\n Signed: 'signed' as DocumentStatusEnum,\n Canceled: 'canceled' as DocumentStatusEnum,\n Sent: 'sent' as DocumentStatusEnum,\n Delivered: 'delivered' as DocumentStatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class DocumentGroup {\n constructor(json: JSON | any) {\n Object.assign(this as DocumentGroup, json)\n }\n\n guid?: string\n name?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { DocumentGroup } from './DocumentGroup'\n\nimport { b64_2ab } from './ModelHelper'\nexport class DocumentTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as DocumentTemplate, json, json.attachment ? { attachment: b64_2ab(json.attachment) } : {})\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n attachment?: ArrayBuffer\n /**\n * The type of document, ex: admission, clinical path, document report,invoice, etc.\n */\n documentType?: DocumentTemplate.DocumentTypeEnum\n mainUti?: string\n name?: string\n otherUtis?: Array\n attachmentId?: string\n version?: DocumentTemplate.VersionEnum\n owner?: string\n guid?: string\n group?: DocumentGroup\n descr?: string\n disabled?: string\n specialty?: CodeStub\n}\nexport namespace DocumentTemplate {\n export type DocumentTypeEnum =\n | 'admission'\n | 'alert'\n | 'bvt_sample'\n | 'clinicalpath'\n | 'clinicalsummary'\n | 'contactreport'\n | 'quote'\n | 'invoice'\n | 'death'\n | 'discharge'\n | 'dischargereport'\n | 'ebirth_baby_medicalform'\n | 'ebirth_baby_notification'\n | 'ebirth_mother_medicalform'\n | 'ebirth_mother_notification'\n | 'ecare_safe_consultation'\n | 'epidemiology'\n | 'intervention'\n | 'labrequest'\n | 'labresult'\n | 'medicaladvisoragreement'\n | 'medicationschemeelement'\n | 'note'\n | 'notification'\n | 'pharmaceuticalprescription'\n | 'prescription'\n | 'productdelivery'\n | 'quickdischargereport'\n | 'radiationexposuremonitoring'\n | 'referral'\n | 'report'\n | 'request'\n | 'result'\n | 'sumehr'\n | 'telemonitoring'\n | 'template'\n | 'template_admin'\n | 'treatmentsuspension'\n | 'vaccination'\n export const DocumentTypeEnum = {\n Admission: 'admission' as DocumentTypeEnum,\n Alert: 'alert' as DocumentTypeEnum,\n BvtSample: 'bvt_sample' as DocumentTypeEnum,\n Clinicalpath: 'clinicalpath' as DocumentTypeEnum,\n Clinicalsummary: 'clinicalsummary' as DocumentTypeEnum,\n Contactreport: 'contactreport' as DocumentTypeEnum,\n Quote: 'quote' as DocumentTypeEnum,\n Invoice: 'invoice' as DocumentTypeEnum,\n Death: 'death' as DocumentTypeEnum,\n Discharge: 'discharge' as DocumentTypeEnum,\n Dischargereport: 'dischargereport' as DocumentTypeEnum,\n EbirthBabyMedicalform: 'ebirth_baby_medicalform' as DocumentTypeEnum,\n EbirthBabyNotification: 'ebirth_baby_notification' as DocumentTypeEnum,\n EbirthMotherMedicalform: 'ebirth_mother_medicalform' as DocumentTypeEnum,\n EbirthMotherNotification: 'ebirth_mother_notification' as DocumentTypeEnum,\n EcareSafeConsultation: 'ecare_safe_consultation' as DocumentTypeEnum,\n Epidemiology: 'epidemiology' as DocumentTypeEnum,\n Intervention: 'intervention' as DocumentTypeEnum,\n Labrequest: 'labrequest' as DocumentTypeEnum,\n Labresult: 'labresult' as DocumentTypeEnum,\n Medicaladvisoragreement: 'medicaladvisoragreement' as DocumentTypeEnum,\n Medicationschemeelement: 'medicationschemeelement' as DocumentTypeEnum,\n Note: 'note' as DocumentTypeEnum,\n Notification: 'notification' as DocumentTypeEnum,\n Pharmaceuticalprescription: 'pharmaceuticalprescription' as DocumentTypeEnum,\n Prescription: 'prescription' as DocumentTypeEnum,\n Productdelivery: 'productdelivery' as DocumentTypeEnum,\n Quickdischargereport: 'quickdischargereport' as DocumentTypeEnum,\n Radiationexposuremonitoring: 'radiationexposuremonitoring' as DocumentTypeEnum,\n Referral: 'referral' as DocumentTypeEnum,\n Report: 'report' as DocumentTypeEnum,\n Request: 'request' as DocumentTypeEnum,\n Result: 'result' as DocumentTypeEnum,\n Sumehr: 'sumehr' as DocumentTypeEnum,\n Telemonitoring: 'telemonitoring' as DocumentTypeEnum,\n Template: 'template' as DocumentTypeEnum,\n TemplateAdmin: 'template_admin' as DocumentTypeEnum,\n Treatmentsuspension: 'treatmentsuspension' as DocumentTypeEnum,\n Vaccination: 'vaccination' as DocumentTypeEnum,\n }\n export type VersionEnum = 'V1_0_0'\n export const VersionEnum = {\n _0: 'V1_0_0' as VersionEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Duration {\n constructor(json: JSON | any) {\n Object.assign(this as Duration, json)\n }\n\n value?: number\n unit?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EIDItem {\n constructor(json: JSON | any) {\n Object.assign(this as EIDItem, json)\n }\n\n deviceType?: string\n readDate?: number\n readHour?: number\n readType?: string\n readvalue?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Data } from './Data'\n\nexport class Editor {\n constructor(json: JSON | any) {\n Object.assign(this as Editor, json)\n }\n\n left?: number\n top?: number\n width?: number\n height?: number\n multiline?: boolean\n labelPosition?: Editor.LabelPositionEnum\n readOnly?: boolean\n defaultValue?: Data\n key?: string\n}\nexport namespace Editor {\n export type LabelPositionEnum = 'Up' | 'Down' | 'Left' | 'Right'\n export const LabelPositionEnum = {\n Up: 'Up' as LabelPositionEnum,\n Down: 'Down' as LabelPositionEnum,\n Left: 'Left' as LabelPositionEnum,\n Right: 'Right' as LabelPositionEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { InvoiceItem } from './InvoiceItem'\nimport { Patient } from './Patient'\n\nexport class EfactInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as EfactInvoice, json)\n }\n\n patient?: Patient\n ioCode?: string\n items?: Array\n reason?: EfactInvoice.ReasonEnum\n invoiceRef?: string\n invoiceNumber?: number\n ignorePrescriptionDate?: boolean\n hospitalisedPatient?: boolean\n creditNote?: boolean\n relatedInvoiceIoCode?: string\n relatedInvoiceNumber?: number\n relatedBatchSendNumber?: number\n relatedBatchYearMonth?: number\n}\nexport namespace EfactInvoice {\n export type ReasonEnum = 'Chimiotherapy' | 'ProfessionalDisease' | 'WorkAccident' | 'Accident' | 'Other'\n export const ReasonEnum = {\n Chimiotherapy: 'Chimiotherapy' as ReasonEnum,\n ProfessionalDisease: 'ProfessionalDisease' as ReasonEnum,\n WorkAccident: 'WorkAccident' as ReasonEnum,\n Accident: 'Accident' as ReasonEnum,\n Other: 'Other' as ReasonEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Employer {\n constructor(json: JSON | any) {\n Object.assign(this as Employer, json)\n }\n\n name?: string\n addresse?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Employer } from './Employer'\n\nexport class EmploymentInfo {\n constructor(json: JSON | any) {\n Object.assign(this as EmploymentInfo, json)\n }\n\n startDate?: number\n endDate?: number\n professionType?: CodeStub\n employer?: Employer\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EntityReference {\n constructor(json: JSON | any) {\n Object.assign(this as EntityReference, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n docId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class EntityTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as EntityTemplate, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n userId?: string\n descr?: string\n keywords?: Array\n entityType?: string\n subType?: string\n defaultTemplate?: boolean\n entity?: Array<{ [key: string]: any }>\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * List of episodes of occurrences of the healthcare element.\n */\nexport class Episode {\n constructor(json: JSON | any) {\n Object.assign(this as Episode, json)\n }\n\n id?: string\n name?: string\n comment?: string\n startDate?: number\n endDate?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterCode } from './AbstractFilterCode'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainCode {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainCode, json)\n }\n\n filter?: AbstractFilterCode\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from './AbstractFilterContact'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainContact {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainContact, json)\n }\n\n filter?: AbstractFilterContact\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from './AbstractFilterDevice'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainDevice {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainDevice, json)\n }\n\n filter?: AbstractFilterDevice\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from './AbstractFilterHealthElement'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainHealthElement {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainHealthElement, json)\n }\n\n filter?: AbstractFilterHealthElement\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from './AbstractFilterHealthcareParty'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainHealthcareParty {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainHealthcareParty, json)\n }\n\n filter?: AbstractFilterHealthcareParty\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterInvoice } from './AbstractFilterInvoice'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainInvoice {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainInvoice, json)\n }\n\n filter?: AbstractFilterInvoice\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from './AbstractFilterMaintenanceTask'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainMaintenanceTask {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainMaintenanceTask, json)\n }\n\n filter?: AbstractFilterMaintenanceTask\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from './AbstractFilterPatient'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainPatient {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainPatient, json)\n }\n\n filter?: AbstractFilterPatient\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from './AbstractFilterService'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainService {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainService, json)\n }\n\n filter?: AbstractFilterService\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from './AbstractFilterUser'\nimport { Predicate } from './Predicate'\n\nexport class FilterChainUser {\n $type: string = 'FilterChain'\n constructor(json: JSON | any) {\n Object.assign(this as FilterChainUser, json)\n }\n\n filter?: AbstractFilterUser\n predicate?: Predicate\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Financial information (Bank, bank account) used to reimburse the patient.\n */\nexport class FinancialInstitutionInformation {\n constructor(json: JSON | any) {\n Object.assign(this as FinancialInstitutionInformation, json)\n }\n\n name?: string\n key?: string\n bankAccount?: string\n bic?: string\n proxyBankAccount?: string\n proxyBic?: string\n preferredFiiForPartners?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Valorisation } from './Valorisation'\n\nexport class FlatRateTarification {\n constructor(json: JSON | any) {\n Object.assign(this as FlatRateTarification, json)\n }\n\n code?: string\n flatRateType?: FlatRateTarification.FlatRateTypeEnum\n label?: { [key: string]: string }\n valorisations?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace FlatRateTarification {\n export type FlatRateTypeEnum = 'physician' | 'physiotherapist' | 'nurse' | 'ptd' | 'ivgFlatRate1' | 'ivgFlatRate2' | 'ivgPersonalIntervention'\n export const FlatRateTypeEnum = {\n Physician: 'physician' as FlatRateTypeEnum,\n Physiotherapist: 'physiotherapist' as FlatRateTypeEnum,\n Nurse: 'nurse' as FlatRateTypeEnum,\n Ptd: 'ptd' as FlatRateTypeEnum,\n IvgFlatRate1: 'ivgFlatRate1' as FlatRateTypeEnum,\n IvgFlatRate2: 'ivgFlatRate2' as FlatRateTypeEnum,\n IvgPersonalIntervention: 'ivgPersonalIntervention' as FlatRateTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FlowItem {\n constructor(json: JSON | any) {\n Object.assign(this as FlowItem, json)\n }\n\n id?: string\n title?: string\n comment?: string\n receptionDate?: number\n processingDate?: number\n processer?: string\n cancellationDate?: number\n canceller?: string\n cancellationReason?: string\n cancellationNote?: string\n status?: string\n homeVisit?: boolean\n municipality?: string\n town?: string\n zipCode?: string\n street?: string\n building?: string\n buildingNumber?: string\n doorbellName?: string\n floor?: string\n letterBox?: string\n notesOps?: string\n notesContact?: string\n latitude?: string\n longitude?: string\n type?: string\n emergency?: boolean\n phoneNumber?: string\n patientId?: string\n patientLastName?: string\n patientFirstName?: string\n description?: string\n interventionCode?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\nexport class Form {\n constructor(json: JSON | any) {\n Object.assign(this as Form, json)\n }\n\n /**\n * the Id of the form. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the form in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n openingDate?: number\n status?: string\n version?: number\n logicalUuid?: string\n /**\n * Name/basic description of the form\n */\n descr?: string\n /**\n * A unique external id (from another external source).\n */\n uniqueId?: string\n /**\n * Id of the form template being used to display the form\n */\n formTemplateId?: string\n /**\n * Id of the contact for which the form is being used.\n */\n contactId?: string\n /**\n * The healthcare element to which this form is attached.\n */\n healthElementId?: string\n /**\n * The healthcare approach to which this form is attached.\n */\n planOfActionId?: string\n /**\n * The parent of this form, used to determine the forms hierarchy\n */\n parent?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormLayoutData } from './FormLayoutData'\n\nexport class FormColumn {\n constructor(json: JSON | any) {\n Object.assign(this as FormColumn, json)\n }\n\n formDataList?: Array\n columns?: string\n shouldDisplay?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FormDataOption {\n constructor(json: JSON | any) {\n Object.assign(this as FormDataOption, json)\n }\n\n key?: string\n value?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormSection } from './FormSection'\nimport { Tag } from './Tag'\n\nexport class FormLayout {\n constructor(json: JSON | any) {\n Object.assign(this as FormLayout, json)\n }\n\n name?: string\n width?: number\n height?: number\n descr?: string\n tag?: Tag\n guid?: string\n group?: string\n sections?: Array\n importedServiceXPaths?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Content } from './Content'\nimport { Editor } from './Editor'\nimport { FormDataOption } from './FormDataOption'\nimport { FormPlanning } from './FormPlanning'\nimport { Formula } from './Formula'\nimport { GuiCode } from './GuiCode'\nimport { GuiCodeType } from './GuiCodeType'\nimport { Suggest } from './Suggest'\n\nexport class FormLayoutData {\n constructor(json: JSON | any) {\n Object.assign(this as FormLayoutData, json)\n }\n\n subForm?: boolean\n irrelevant?: boolean\n determinesSscontactName?: boolean\n type?: string\n name?: string\n sortOrder?: number\n options?: { [key: string]: FormDataOption }\n descr?: string\n label?: string\n editor?: Editor\n defaultValue?: Array\n defaultStatus?: number\n suggest?: Array\n plannings?: Array\n tags?: Array\n codes?: Array\n codeTypes?: Array\n formulas?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class FormPlanning {\n constructor(json: JSON | any) {\n Object.assign(this as FormPlanning, json)\n }\n\n planninfForAnyDoctor?: boolean\n planningForDelegate?: boolean\n planningForPatientDoctor?: boolean\n planningForMe?: boolean\n codedDelayInDays?: number\n repetitions?: number\n repetitionsUnit?: number\n descr?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { FormColumn } from './FormColumn'\n\nexport class FormSection {\n constructor(json: JSON | any) {\n Object.assign(this as FormSection, json)\n }\n\n icon?: string\n title?: string\n columns?: number\n formColumns?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { DocumentGroup } from './DocumentGroup'\nimport { FormLayout } from './FormLayout'\nimport { FormTemplateLayout } from './FormTemplateLayout'\n\nexport class FormTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as FormTemplate, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n layout?: FormLayout\n templateLayout?: FormTemplateLayout\n name?: string\n guid?: string\n group?: DocumentGroup\n descr?: string\n disabled?: string\n specialty?: CodeStub\n author?: string\n formInstancePreferredLocation?: string\n keyboardShortcut?: string\n shortReport?: string\n mediumReport?: string\n longReport?: string\n reports?: Array\n tags?: Array\n layoutAttachmentId?: string\n templateLayoutAttachmentId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Section } from './Section'\n\nexport class FormTemplateLayout {\n constructor(json: JSON | any) {\n Object.assign(this as FormTemplateLayout, json)\n }\n\n form?: string\n sections?: Array
\n description?: string\n keywords?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Formula {\n constructor(json: JSON | any) {\n Object.assign(this as Formula, json)\n }\n\n value?: string\n lifecycle?: Formula.LifecycleEnum\n}\nexport namespace Formula {\n export type LifecycleEnum = 'OnCreate' | 'OnLoad' | 'OnChange' | 'OnSave' | 'OnDestroy' | 'OnLoadPropertiesEditor'\n export const LifecycleEnum = {\n OnCreate: 'OnCreate' as LifecycleEnum,\n OnLoad: 'OnLoad' as LifecycleEnum,\n OnChange: 'OnChange' as LifecycleEnum,\n OnSave: 'OnSave' as LifecycleEnum,\n OnDestroy: 'OnDestroy' as LifecycleEnum,\n OnLoadPropertiesEditor: 'OnLoadPropertiesEditor' as LifecycleEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyStub } from './PropertyStub'\n\nexport class FrontEndMigration {\n constructor(json: JSON | any) {\n Object.assign(this as FrontEndMigration, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n startDate?: number\n endDate?: number\n status?: FrontEndMigration.StatusEnum\n logs?: string\n userId?: string\n startKey?: string\n startKeyDocId?: string\n processCount?: number\n /**\n * Extra properties for the fem. Those properties are typed (see class Property)\n */\n properties?: Array\n}\nexport namespace FrontEndMigration {\n export type StatusEnum = 'STARTED' | 'PAUSED' | 'ERROR' | 'SUCCESS'\n export const StatusEnum = {\n STARTED: 'STARTED' as StatusEnum,\n PAUSED: 'PAUSED' as StatusEnum,\n ERROR: 'ERROR' as StatusEnum,\n SUCCESS: 'SUCCESS' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity represents a group\n */\nexport class Group {\n constructor(json: JSON | any) {\n Object.assign(this as Group, json)\n }\n\n /**\n * The id of the group. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the group in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * Username for the group\n */\n name?: string\n /**\n * Password for the group access\n */\n password?: string\n /**\n * List of servers accessible to the group\n */\n servers?: Array\n /**\n * Whether the group has a super admin permission, originally set to no access.\n */\n superAdmin?: boolean\n /**\n * Extra properties for the user. Those properties are typed (see class Property)\n */\n properties?: Array\n /**\n * List of entities that have to be collected from a shared database. Only Code and tarification can be set at this point.\n */\n sharedEntities?: { [key: string]: string }\n superGroup?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DatabaseInfo } from './DatabaseInfo'\n\nexport class GroupDatabasesInfo {\n constructor(json: JSON | any) {\n Object.assign(this as GroupDatabasesInfo, json)\n }\n\n groupId?: string\n databasesInfo?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GroupDeletionReport {\n constructor(json: JSON | any) {\n Object.assign(this as GroupDeletionReport, json)\n }\n\n type?: string\n id?: string\n server?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GuiCode {\n constructor(json: JSON | any) {\n Object.assign(this as GuiCode, json)\n }\n\n type?: string\n code?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class GuiCodeType {\n constructor(json: JSON | any) {\n Object.assign(this as GuiCodeType, json)\n }\n\n type?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CareTeamMember } from './CareTeamMember'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Episode } from './Episode'\nimport { Identifier } from './Identifier'\nimport { PlanOfAction } from './PlanOfAction'\n\n/**\n * This entity is a root level object. It represents a healthcare element. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nexport class HealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as HealthElement, json)\n }\n\n /**\n * The Id of the healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n identifiers?: Array\n /**\n * The revision of the healthcare element in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The logical id of the healthcare element, used to link together different versions of the same healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n healthElementId?: string\n /**\n * The date (unix epoch in ms) when the healthcare element is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (unix epoch in ms) of the start of the healthcare element.\n */\n openingDate?: number\n /**\n * The date (unix epoch in ms) marking the end of the healthcare element.\n */\n closingDate?: number\n /**\n * Description of the healthcare element.\n */\n descr?: string\n /**\n * A text note (can be confidential, encrypted by default).\n */\n note?: string\n /**\n * If the healthcare element is relevant or not (Set relevant by default).\n */\n relevant?: boolean\n /**\n * Id of the opening contact when the healthcare element was created.\n */\n idOpeningContact?: string\n /**\n * Id of the closing contact for the healthcare element.\n */\n idClosingContact?: string\n /**\n * Id of the service when a service is used to create a healthcare element.\n */\n idService?: string\n /**\n * bit 0: active/inactive, bit 1: relevant/irrelevant, bit 2 : present/absent, ex: 0 = active,relevant and present\n */\n status?: number\n /**\n * Left or Right dominance/preference.\n */\n laterality?: HealthElement.LateralityEnum\n /**\n * List of healthcare approaches.\n */\n plansOfAction?: Array\n /**\n * List of episodes of occurrences of the healthcare element.\n */\n episodes?: Array\n /**\n * List of care team members assigned for the healthcare element.\n */\n careTeam?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace HealthElement {\n export type LateralityEnum = 'left' | 'right'\n export const LateralityEnum = {\n Left: 'left' as LateralityEnum,\n Right: 'right' as LateralityEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CodeStub } from './CodeStub'\nimport { FinancialInstitutionInformation } from './FinancialInstitutionInformation'\nimport { FlatRateTarification } from './FlatRateTarification'\nimport { HealthcarePartyHistoryStatus } from './HealthcarePartyHistoryStatus'\nimport { Identifier } from './Identifier'\nimport { PersonName } from './PersonName'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity is a root level object. It represents a healthcare party. It is serialized in JSON and saved in the underlying icure-healthdata CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nexport class HealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as HealthcareParty, json, json.picture ? { picture: b64_2ab(json.picture) } : {})\n }\n\n /**\n * the Id of the healthcare party. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the healthcare party in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * creation timestamp of the object.\n */\n created?: number\n /**\n * last modification timestamp of the object.\n */\n modified?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The healthcareparty's identifiers, used by the client to identify uniquely and unambiguously the HCP. However, iCure may not guarantee this uniqueness by itself : This should be done at the client side.\n */\n identifier?: Array\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * The full name of the healthcare party, used mainly when the healthcare party is an organization\n */\n name?: string\n /**\n * the lastname (surname) of the healthcare party. This is the official lastname that should be used for official administrative purposes.\n */\n lastName?: string\n /**\n * the firstname (name) of the healthcare party.\n */\n firstName?: string\n /**\n * the list of all names of the healthcare party, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the healthcare party in the application\n */\n names?: Array\n /**\n * the gender of the healthcare party: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n gender?: HealthcareParty.GenderEnum\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n civility?: string\n /**\n * The name of the company this healthcare party is member of\n */\n companyName?: string\n /**\n * Medical specialty of the healthcare party\n */\n speciality?: string\n /**\n * Bank Account identifier of the healhtcare party, IBAN, deprecated, use financial institutions instead\n */\n bankAccount?: string\n /**\n * Bank Identifier Code, the SWIFT Address assigned to the bank, use financial institutions instead\n */\n bic?: string\n proxyBankAccount?: string\n proxyBic?: string\n /**\n * All details included in the invoice header\n */\n invoiceHeader?: string\n /**\n * Identifier number for institution type if the healthcare party is an enterprise\n */\n cbe?: string\n /**\n * Identifier number for the institution if the healthcare party is an organization\n */\n ehp?: string\n /**\n * The id of the user that usually handles this healthcare party.\n */\n userId?: string\n /**\n * Id of parent of the user representing the healthcare party.\n */\n parentId?: string\n convention?: number\n /**\n * National Institute for Health and Invalidity Insurance number assigned to healthcare parties (institution or person).\n */\n nihii?: string\n nihiiSpecCode?: string\n /**\n * Social security inscription number.\n */\n ssin?: string\n /**\n * The list of addresses (with address type).\n */\n addresses?: Array
\n /**\n * The list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n languages?: Array\n /**\n * A picture usually saved in JPEG format.\n */\n picture?: ArrayBuffer\n /**\n * The healthcare party's status: 'trainee' or 'withconvention' or 'accredited'\n */\n statuses?: Array\n /**\n * The healthcare party's status history\n */\n statusHistory?: Array\n /**\n * Medical specialty of the healthcare party codified using FHIR or Kmehr codificaiton scheme\n */\n specialityCodes?: Array\n /**\n * The type of format for contacting the healthcare party, ex: mobile, phone, email, etc.\n */\n sendFormats?: { [key: string]: string }\n /**\n * Text notes.\n */\n notes?: string\n /**\n * List of financial information (Bank, bank account).\n */\n financialInstitutionInformation?: Array\n /**\n * A description of the HCP, meant for the public and in multiple languages.\n */\n descr?: { [key: string]: string }\n /**\n * The invoicing scheme this healthcare party adheres to : 'service fee' or 'flat rate'\n */\n billingType?: string\n type?: string\n contactPerson?: string\n contactPersonHcpId?: string\n supervisorId?: string\n flatRateTarifications?: Array\n importedData?: { [key: string]: string }\n options?: { [key: string]: string }\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * The public keys of this actor which should be used for RSA-OAEP with sha256 encryption.\n */\n publicKeysForOaepWithSha256?: string[]\n}\nexport namespace HealthcareParty {\n export type GenderEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const GenderEnum = {\n Male: 'male' as GenderEnum,\n Female: 'female' as GenderEnum,\n Indeterminate: 'indeterminate' as GenderEnum,\n Changed: 'changed' as GenderEnum,\n ChangedToMale: 'changedToMale' as GenderEnum,\n ChangedToFemale: 'changedToFemale' as GenderEnum,\n Unknown: 'unknown' as GenderEnum,\n }\n export type StatusesEnum = 'trainee' | 'withconvention' | 'accreditated'\n export const StatusesEnum = {\n Trainee: 'trainee' as StatusesEnum,\n Withconvention: 'withconvention' as StatusesEnum,\n Accreditated: 'accreditated' as StatusesEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * The healthcare party's status history\n */\nexport class HealthcarePartyHistoryStatus {\n constructor(json: JSON | any) {\n Object.assign(this as HealthcarePartyHistoryStatus, json)\n }\n\n status?: HealthcarePartyHistoryStatus.StatusEnum\n specialisationCode?: string\n startDate?: number\n active?: boolean\n}\nexport namespace HealthcarePartyHistoryStatus {\n export type StatusEnum = 'trainee' | 'withconvention' | 'accreditated'\n export const StatusEnum = {\n Trainee: 'trainee' as StatusEnum,\n Withconvention: 'withconvention' as StatusEnum,\n Accreditated: 'accreditated' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\nexport class IcureStub {\n constructor(json: JSON | any) {\n Object.assign(this as IcureStub, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IdWithRev {\n constructor(json: JSON | any) {\n Object.assign(this as IdWithRev, json)\n }\n\n id?: string\n rev?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Identifier {\n constructor(json: JSON | any) {\n Object.assign(this as Identifier, json)\n }\n\n id?: string\n assigner?: string\n start?: string\n end?: string\n system?: string\n type?: CodeStub\n use?: string\n value?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IdentityDocumentReader {\n constructor(json: JSON | any) {\n Object.assign(this as IdentityDocumentReader, json)\n }\n\n justificatifDocumentNumber?: string\n supportSerialNumber?: string\n timeReadingEIdDocument?: number\n eidDocumentSupportType?: number\n reasonManualEncoding?: number\n reasonUsingVignette?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class ImportMapping {\n constructor(json: JSON | any) {\n Object.assign(this as ImportMapping, json)\n }\n\n lifecycle?: string\n content?: string\n cdLocal?: string\n label?: { [key: string]: string }\n tags?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Contact } from './Contact'\nimport { Document } from './Document'\nimport { Form } from './Form'\nimport { HealthElement } from './HealthElement'\nimport { HealthcareParty } from './HealthcareParty'\nimport { MimeAttachment } from './MimeAttachment'\nimport { Patient } from './Patient'\n\nexport class ImportResult {\n constructor(json: JSON | any) {\n Object.assign(this as ImportResult, json)\n }\n\n patient?: Patient\n hes?: Array\n ctcs?: Array\n warnings?: Array\n errors?: Array\n forms?: Array\n hcps?: Array\n documents?: Array\n attachments?: { [key: string]: MimeAttachment }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class IncapacityExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as IncapacityExportInfo, json)\n }\n\n recipient?: HealthcareParty\n comment?: string\n incapacityId?: string\n notificationDate?: number\n retraction?: boolean\n dataset?: string\n transactionType?: string\n incapacityreason?: string\n beginmoment?: number\n endmoment?: number\n outofhomeallowed?: boolean\n incapWork?: boolean\n incapSchool?: boolean\n incapSwim?: boolean\n incapSchoolsports?: boolean\n incapHeavyphysicalactivity?: boolean\n diagnoseServices?: Array\n jobstatus?: string\n job?: string\n occupationalDiseaseDeclDate?: number\n accidentDate?: number\n expectedbirthgivingDate?: number\n maternityleaveBegin?: number\n maternityleaveEnd?: number\n hospitalisationBegin?: number\n hospitalisationEnd?: number\n hospital?: HealthcareParty\n contactPersonTel?: string\n recoveryAddress?: Address\n foreignStayBegin?: number\n foreignStayEnd?: number\n softwareName?: string\n softwareVersion?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class IndexingInfo {\n constructor(json: JSON | any) {\n Object.assign(this as IndexingInfo, json)\n }\n\n statuses?: { [key: string]: number }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Quantity } from './Quantity'\nimport { SubstanceStub } from './SubstanceStub'\n\nexport class Ingredient {\n constructor(json: JSON | any) {\n Object.assign(this as Ingredient, json)\n }\n\n from?: number\n to?: number\n rank?: number\n type?: Ingredient.TypeEnum\n knownEffect?: boolean\n strengthDescription?: string\n strength?: Quantity\n additionalInformation?: string\n substance?: SubstanceStub\n}\nexport namespace Ingredient {\n export type TypeEnum = 'ACTIVE_SUBSTANCE' | 'EXCIPIENT'\n export const TypeEnum = {\n ACTIVESUBSTANCE: 'ACTIVE_SUBSTANCE' as TypeEnum,\n EXCIPIENT: 'EXCIPIENT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * This class represents a coverage of a patient by an insurance during a period or time.\n */\nexport class Insurability {\n constructor(json: JSON | any) {\n Object.assign(this as Insurability, json)\n }\n\n /**\n * Insurance extra parameters.\n */\n parameters?: { [key: string]: string }\n /**\n * Is hospitalization covered.\n */\n hospitalisation?: boolean\n /**\n * Is outpatient care covered.\n */\n ambulatory?: boolean\n /**\n * Is dental care covered.\n */\n dental?: boolean\n /**\n * Identification number of the patient at the insurance.\n */\n identificationNumber?: string\n /**\n * Id of the Insurance.\n */\n insuranceId?: string\n /**\n * Start date of the coverage (YYYYMMDD).\n */\n startDate?: number\n /**\n * End date of the coverage (YYYYMMDD).\n */\n endDate?: number\n /**\n * UUID of the contact person who is the policyholder of the insurance (when the patient is covered by the insurance of a third person).\n */\n titularyId?: string\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Insurance {\n constructor(json: JSON | any) {\n Object.assign(this as Insurance, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: { [key: string]: string }\n privateInsurance?: boolean\n hospitalisationInsurance?: boolean\n ambulatoryInsurance?: boolean\n code?: string\n agreementNumber?: string\n parent?: string\n address?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { IdentityDocumentReader } from './IdentityDocumentReader'\nimport { InvoicingCode } from './InvoicingCode'\nimport { Payment } from './Payment'\n\n/**\n * This entity is a root level object. It represents an Invoice. It is serialized in JSON and saved in the underlying iCure CouchDB database.\n */\nexport class Invoice {\n constructor(json: JSON | any) {\n Object.assign(this as Invoice, json)\n }\n\n /**\n * The Id of the Invoice. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the invoice in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice was drafted, will be filled automatically if missing. Not enforced by the application server.\n */\n invoiceDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice was sent, will be filled automatically if missing. Not enforced by the application server.\n */\n sentDate?: number\n /**\n * The timestamp (unix epoch in ms) when the invoice is printed, will be filled automatically if missing. Not enforced by the application server.\n */\n printedDate?: number\n invoicingCodes?: Array\n receipts?: { [key: string]: string }\n /**\n * The type of user that receives the invoice, a patient or a healthcare party\n */\n recipientType?: string\n /**\n * Id of the recipient of the invoice. For healthcare party and insurance, patient link happens through secretForeignKeys\n */\n recipientId?: string\n invoiceReference?: string\n thirdPartyReference?: string\n thirdPartyPaymentJustification?: string\n thirdPartyPaymentReason?: string\n reason?: string\n /**\n * The format the invoice should follow based on the recipient which could be a patient, mutual fund or paying agency such as the CPAS\n */\n invoiceType?: Invoice.InvoiceTypeEnum\n /**\n * Medium of the invoice: CD ROM, Email, paper, etc.\n */\n sentMediumType?: Invoice.SentMediumTypeEnum\n interventionType?: Invoice.InterventionTypeEnum\n groupId?: string\n /**\n * Type of payment, ex: cash, wired, insurance, debit card, etc.\n */\n paymentType?: Invoice.PaymentTypeEnum\n paid?: number\n payments?: Array\n gnotionNihii?: string\n gnotionSsin?: string\n gnotionLastName?: string\n gnotionFirstName?: string\n gnotionCdHcParty?: string\n invoicePeriod?: number\n careProviderType?: string\n internshipNihii?: string\n internshipSsin?: string\n internshipLastName?: string\n internshipFirstName?: string\n internshipCdHcParty?: string\n internshipCbe?: string\n supervisorNihii?: string\n supervisorSsin?: string\n supervisorLastName?: string\n supervisorFirstName?: string\n supervisorCdHcParty?: string\n supervisorCbe?: string\n error?: string\n encounterLocationName?: string\n encounterLocationNihii?: string\n encounterLocationNorm?: number\n longDelayJustification?: number\n correctiveInvoiceId?: string\n correctedInvoiceId?: string\n creditNote?: boolean\n creditNoteRelatedInvoiceId?: string\n idDocument?: IdentityDocumentReader\n admissionDate?: number\n locationNihii?: string\n locationService?: number\n cancelReason?: string\n cancelDate?: number\n options?: { [key: string]: string }\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Invoice {\n export type InvoiceTypeEnum = 'patient' | 'mutualfund' | 'payingagency' | 'insurance' | 'efact' | 'other'\n export const InvoiceTypeEnum = {\n Patient: 'patient' as InvoiceTypeEnum,\n Mutualfund: 'mutualfund' as InvoiceTypeEnum,\n Payingagency: 'payingagency' as InvoiceTypeEnum,\n Insurance: 'insurance' as InvoiceTypeEnum,\n Efact: 'efact' as InvoiceTypeEnum,\n Other: 'other' as InvoiceTypeEnum,\n }\n export type SentMediumTypeEnum = 'cdrom' | 'eattest' | 'efact' | 'email' | 'mediprima' | 'paper' | 'stat'\n export const SentMediumTypeEnum = {\n Cdrom: 'cdrom' as SentMediumTypeEnum,\n Eattest: 'eattest' as SentMediumTypeEnum,\n Efact: 'efact' as SentMediumTypeEnum,\n Email: 'email' as SentMediumTypeEnum,\n Mediprima: 'mediprima' as SentMediumTypeEnum,\n Paper: 'paper' as SentMediumTypeEnum,\n Stat: 'stat' as SentMediumTypeEnum,\n }\n export type InterventionTypeEnum = 'total' | 'userfees'\n export const InterventionTypeEnum = {\n Total: 'total' as InterventionTypeEnum,\n Userfees: 'userfees' as InterventionTypeEnum,\n }\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EIDItem } from './EIDItem'\n\nexport class InvoiceItem {\n constructor(json: JSON | any) {\n Object.assign(this as InvoiceItem, json)\n }\n\n dateCode?: number\n codeNomenclature?: number\n relatedCode?: number\n eidItem?: EIDItem\n insuranceRef?: string\n insuranceRefDate?: number\n units?: number\n reimbursedAmount?: number\n patientFee?: number\n doctorSupplement?: number\n sideCode?: InvoiceItem.SideCodeEnum\n timeOfDay?: InvoiceItem.TimeOfDayEnum\n override3rdPayerCode?: number\n gnotionNihii?: string\n derogationMaxNumber?: InvoiceItem.DerogationMaxNumberEnum\n prescriberNorm?: InvoiceItem.PrescriberNormEnum\n prescriberNihii?: string\n prescriptionDate?: number\n personalInterventionCoveredByThirdPartyCode?: number\n doctorIdentificationNumber?: string\n invoiceRef?: string\n percentNorm?: InvoiceItem.PercentNormEnum\n}\nexport namespace InvoiceItem {\n export type SideCodeEnum = 'None' | 'Left' | 'Right'\n export const SideCodeEnum = {\n None: 'None' as SideCodeEnum,\n Left: 'Left' as SideCodeEnum,\n Right: 'Right' as SideCodeEnum,\n }\n export type TimeOfDayEnum = 'Other' | 'Night' | 'Weekend' | 'Bankholiday' | 'Urgent'\n export const TimeOfDayEnum = {\n Other: 'Other' as TimeOfDayEnum,\n Night: 'Night' as TimeOfDayEnum,\n Weekend: 'Weekend' as TimeOfDayEnum,\n Bankholiday: 'Bankholiday' as TimeOfDayEnum,\n Urgent: 'Urgent' as TimeOfDayEnum,\n }\n export type DerogationMaxNumberEnum =\n | 'Other'\n | 'DerogationMaxNumber'\n | 'OtherPrescription'\n | 'SecondPrestationOfDay'\n | 'ThirdAndNextPrestationOfDay'\n export const DerogationMaxNumberEnum = {\n Other: 'Other' as DerogationMaxNumberEnum,\n DerogationMaxNumber: 'DerogationMaxNumber' as DerogationMaxNumberEnum,\n OtherPrescription: 'OtherPrescription' as DerogationMaxNumberEnum,\n SecondPrestationOfDay: 'SecondPrestationOfDay' as DerogationMaxNumberEnum,\n ThirdAndNextPrestationOfDay: 'ThirdAndNextPrestationOfDay' as DerogationMaxNumberEnum,\n }\n export type PrescriberNormEnum = 'None' | 'OnePrescriber' | 'SelfPrescriber' | 'AddedCode' | 'ManyPrescribers'\n export const PrescriberNormEnum = {\n None: 'None' as PrescriberNormEnum,\n OnePrescriber: 'OnePrescriber' as PrescriberNormEnum,\n SelfPrescriber: 'SelfPrescriber' as PrescriberNormEnum,\n AddedCode: 'AddedCode' as PrescriberNormEnum,\n ManyPrescribers: 'ManyPrescribers' as PrescriberNormEnum,\n }\n export type PercentNormEnum =\n | 'None'\n | 'SurgicalAid1'\n | 'SurgicalAid2'\n | 'ReducedFee'\n | 'Ah1n1'\n | 'HalfPriceSecondAct'\n | 'InvoiceException'\n | 'ForInformation'\n export const PercentNormEnum = {\n None: 'None' as PercentNormEnum,\n SurgicalAid1: 'SurgicalAid1' as PercentNormEnum,\n SurgicalAid2: 'SurgicalAid2' as PercentNormEnum,\n ReducedFee: 'ReducedFee' as PercentNormEnum,\n Ah1n1: 'Ah1n1' as PercentNormEnum,\n HalfPriceSecondAct: 'HalfPriceSecondAct' as PercentNormEnum,\n InvoiceException: 'InvoiceException' as PercentNormEnum,\n ForInformation: 'ForInformation' as PercentNormEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class InvoiceSender {\n constructor(json: JSON | any) {\n Object.assign(this as InvoiceSender, json)\n }\n\n nihii?: number\n bic?: string\n iban?: string\n bce?: number\n ssin?: string\n lastName?: string\n firstName?: string\n phoneNumber?: number\n conventionCode?: number\n isSpecialist?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EfactInvoice } from './EfactInvoice'\nimport { InvoiceSender } from './InvoiceSender'\n\nexport class InvoicesBatch {\n constructor(json: JSON | any) {\n Object.assign(this as InvoicesBatch, json)\n }\n\n invoicingYear?: number\n invoicingMonth?: number\n fileRef?: string\n batchRef?: string\n ioFederationCode?: string\n uniqueSendNumber?: number\n sender?: InvoiceSender\n numericalRef?: number\n invoices?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class InvoicingCode {\n constructor(json: JSON | any) {\n Object.assign(this as InvoicingCode, json)\n }\n\n id?: string\n dateCode?: number\n logicalId?: string\n label?: string\n userId?: string\n contactId?: string\n serviceId?: string\n tarificationId?: string\n code?: string\n paymentType?: InvoicingCode.PaymentTypeEnum\n paid?: number\n totalAmount?: number\n reimbursement?: number\n patientIntervention?: number\n doctorSupplement?: number\n conventionAmount?: number\n vat?: number\n error?: string\n contract?: string\n contractDate?: number\n units?: number\n side?: number\n timeOfDay?: number\n eidReadingHour?: number\n eidReadingValue?: string\n override3rdPayerCode?: number\n override3rdPayerReason?: string\n transplantationCode?: number\n prescriberNorm?: number\n percentNorm?: number\n prescriberNihii?: string\n relatedCode?: string\n prescriptionDate?: number\n derogationMaxNumber?: number\n prescriberSsin?: string\n prescriberLastName?: string\n prescriberFirstName?: string\n prescriberCdHcParty?: string\n locationNihii?: string\n locationCdHcParty?: string\n locationService?: number\n admissionDate?: number\n canceled?: boolean\n accepted?: boolean\n pending?: boolean\n resent?: boolean\n archived?: boolean\n lost?: boolean\n insuranceJustification?: number\n cancelPatientInterventionReason?: number\n status?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace InvoicingCode {\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { KeywordSubword } from './KeywordSubword'\n\nexport class Keyword {\n constructor(json: JSON | any) {\n Object.assign(this as Keyword, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n value?: string\n subWords?: Array\n userId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class KeywordSubword {\n constructor(json: JSON | any) {\n Object.assign(this as KeywordSubword, json)\n }\n\n value?: string\n subWords?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LabelledOccurence {\n constructor(json: JSON | any) {\n Object.assign(this as LabelledOccurence, json)\n }\n\n label?: string\n occurence?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LetterValue {\n constructor(json: JSON | any) {\n Object.assign(this as LetterValue, json)\n }\n\n letter?: string\n index?: string\n coefficient?: number\n value?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * The ids of databases to reset\n */\nexport class ListOfIds {\n constructor(json: JSON | any) {\n Object.assign(this as ListOfIds, json)\n }\n\n ids?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * The new properties for the group\n */\nexport class ListOfProperties {\n constructor(json: JSON | any) {\n Object.assign(this as ListOfProperties, json)\n }\n\n properties?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class LoginCredentials {\n constructor(json: JSON | any) {\n Object.assign(this as LoginCredentials, json)\n }\n\n username?: string\n password?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\nimport { PropertyStub } from './PropertyStub'\n\nexport class MaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as MaintenanceTask, json)\n }\n\n id?: string\n rev?: string\n identifier?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n taskType?: MaintenanceTask.TaskTypeEnum\n properties?: Array\n status?: MaintenanceTask.StatusEnum\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace MaintenanceTask {\n export type StatusEnum = 'pending' | 'ongoing' | 'cancelled' | 'completed'\n export const StatusEnum: { [key: string]: MaintenanceTask.StatusEnum } = {\n Pending: 'pending',\n Ongoing: 'ongoing',\n Cancelled: 'cancelled',\n Completed: 'completed',\n }\n export type TaskTypeEnum = 'KEY_PAIR_UPDATE' | 'NEW_USER_OWN_DATA_ACCESS' | 'OTHER'\n export const TaskTypeEnum: { [key: string]: MaintenanceTask.TaskTypeEnum } = {\n KeyPairUpdate: 'KEY_PAIR_UPDATE',\n NewUserOwnDataAccess: 'NEW_USER_OWN_DATA_ACCESS',\n Other: 'OTHER',\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class MapOfIds {\n constructor(json: JSON | any) {\n Object.assign(this as MapOfIds, json)\n }\n\n mapOfIds?: { [key: string]: Array }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Measure {\n constructor(json: JSON | any) {\n Object.assign(this as Measure, json)\n }\n\n value?: number\n min?: number\n max?: number\n ref?: number\n severity?: number\n severityCode?: string\n evolution?: number\n unit?: string\n sign?: string\n unitCodes?: Array\n comment?: string\n comparator?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Patient } from './Patient'\n\nexport class MedexInfo {\n constructor(json: JSON | any) {\n Object.assign(this as MedexInfo, json)\n }\n\n beginDate?: number\n endDate?: number\n author?: HealthcareParty\n patient?: Patient\n patientLanguage?: string\n incapacityType?: string\n incapacityReason?: string\n outOfHomeAllowed?: boolean\n certificateDate?: number\n contentDate?: number\n diagnosisICPC?: string\n diagnosisICD?: string\n diagnosisDescr?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Contracts between the patient and the healthcare entity.\n */\nexport class MedicalHouseContract {\n constructor(json: JSON | any) {\n Object.assign(this as MedicalHouseContract, json)\n }\n\n contractId?: string\n validFrom?: number\n validTo?: number\n mmNihii?: string\n hcpId?: string\n changeType?: MedicalHouseContract.ChangeTypeEnum\n parentContractId?: string\n changedBy?: string\n startOfContract?: number\n startOfCoverage?: number\n endOfContract?: number\n endOfCoverage?: number\n kine?: boolean\n gp?: boolean\n ptd?: boolean\n nurse?: boolean\n noKine?: boolean\n noGp?: boolean\n noNurse?: boolean\n unsubscriptionReasonId?: number\n ptdStart?: number\n ptdEnd?: number\n ptdLastInvoiced?: number\n startOfSuspension?: number\n endOfSuspension?: number\n suspensionReason?: MedicalHouseContract.SuspensionReasonEnum\n suspensionSource?: string\n forcedSuspension?: boolean\n signatureType?: MedicalHouseContract.SignatureTypeEnum\n status?: number\n options?: { [key: string]: string }\n receipts?: { [key: string]: string }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace MedicalHouseContract {\n export type ChangeTypeEnum = 'inscriptionStart' | 'inscriptionEnd' | 'suspension' | 'coverageChange'\n export const ChangeTypeEnum = {\n InscriptionStart: 'inscriptionStart' as ChangeTypeEnum,\n InscriptionEnd: 'inscriptionEnd' as ChangeTypeEnum,\n Suspension: 'suspension' as ChangeTypeEnum,\n CoverageChange: 'coverageChange' as ChangeTypeEnum,\n }\n export type SuspensionReasonEnum = 'notInsured' | 'noReasonGiven' | 'isHospitalized' | 'outsideOfCountry' | 'changeOfMutuality'\n export const SuspensionReasonEnum = {\n NotInsured: 'notInsured' as SuspensionReasonEnum,\n NoReasonGiven: 'noReasonGiven' as SuspensionReasonEnum,\n IsHospitalized: 'isHospitalized' as SuspensionReasonEnum,\n OutsideOfCountry: 'outsideOfCountry' as SuspensionReasonEnum,\n ChangeOfMutuality: 'changeOfMutuality' as SuspensionReasonEnum,\n }\n export type SignatureTypeEnum = 'holderEid' | 'holderPaper' | 'legalrepresentativeEid' | 'legalrepresentativePaper'\n export const SignatureTypeEnum = {\n HolderEid: 'holderEid' as SignatureTypeEnum,\n HolderPaper: 'holderPaper' as SignatureTypeEnum,\n LegalrepresentativeEid: 'legalrepresentativeEid' as SignatureTypeEnum,\n LegalrepresentativePaper: 'legalrepresentativePaper' as SignatureTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class MedicalLocation {\n constructor(json: JSON | any) {\n Object.assign(this as MedicalLocation, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n description?: string\n responsible?: string\n guardPost?: boolean\n cbe?: string\n bic?: string\n bankAccount?: string\n nihii?: string\n ssin?: string\n address?: Address\n agendaIds?: Array\n options?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Duration } from './Duration'\nimport { Medicinalproduct } from './Medicinalproduct'\nimport { ParagraphAgreement } from './ParagraphAgreement'\nimport { RegimenItem } from './RegimenItem'\nimport { Renewal } from './Renewal'\nimport { Substanceproduct } from './Substanceproduct'\nimport { Suspension } from './Suspension'\n\n/**\n * The details of prescribed or suggested medication\n */\nexport class Medication {\n constructor(json: JSON | any) {\n Object.assign(this as Medication, json)\n }\n\n compoundPrescription?: string\n substanceProduct?: Substanceproduct\n medicinalProduct?: Medicinalproduct\n numberOfPackages?: number\n batch?: string\n instructionForPatient?: string\n instructionForReimbursement?: string\n commentForDelivery?: string\n drugRoute?: string\n temporality?: string\n frequency?: CodeStub\n reimbursementReason?: CodeStub\n substitutionAllowed?: boolean\n beginMoment?: number\n endMoment?: number\n deliveryMoment?: number\n endExecutionMoment?: number\n duration?: Duration\n renewal?: Renewal\n knownUsage?: boolean\n regimen?: Array\n posology?: string\n options?: { [key: string]: Content }\n agreements?: { [key: string]: ParagraphAgreement }\n medicationSchemeIdOnSafe?: string\n medicationSchemeSafeVersion?: number\n medicationSchemeTimeStampOnSafe?: number\n medicationSchemeDocumentId?: string\n safeIdName?: string\n idOnSafes?: string\n timestampOnSafe?: number\n changeValidated?: boolean\n newSafeMedication?: boolean\n medicationUse?: string\n beginCondition?: string\n endCondition?: string\n origin?: string\n medicationChanged?: boolean\n posologyChanged?: boolean\n suspension?: Array\n prescriptionRID?: string\n status?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class MedicationSchemeExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as MedicationSchemeExportInfo, json)\n }\n\n secretForeignKeys?: Array\n services?: Array\n serviceAuthors?: Array\n recipient?: HealthcareParty\n comment?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Medicinalproduct {\n constructor(json: JSON | any) {\n Object.assign(this as Medicinalproduct, json)\n }\n\n intendedcds?: Array\n deliveredcds?: Array\n intendedname?: string\n deliveredname?: string\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { MessageReadStatus } from './MessageReadStatus'\n\n/**\n * This entity is a root level object. It represents a Message. It is serialized in JSON and saved in the underlying CouchDB database.\n */\nexport class Message {\n constructor(json: JSON | any) {\n Object.assign(this as Message, json)\n }\n\n /**\n * The ID of the message. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The revision of the message in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * Address of the sender of the message\n */\n fromAddress?: string\n /**\n * ID of the healthcare party sending the message\n */\n fromHealthcarePartyId?: string\n formId?: string\n /**\n * Status of the message\n */\n status?: number\n /**\n * The type of user who is the recipient of this message\n */\n recipientsType?: string\n /**\n * List of IDs of healthcare parties to whom the message is addressed\n */\n recipients?: Array\n /**\n * The address of the recipient of the message. Format is of an email address with extra domains defined for mycarenet and ehealth: (efact.mycarenet.be/eattest.mycarenet.be/chapter4.mycarenet.be/ehbox.ehealth.fgov.be)\n */\n toAddresses?: Array\n /**\n * The timestamp (unix epoch in ms) when the message was received\n */\n received?: number\n /**\n * The timestamp (unix epoch in ms) when the message was sent\n */\n sent?: number\n metas?: { [key: string]: string }\n /**\n * Status showing whether the message is read or not and the time of reading\n */\n readStatus?: { [key: string]: MessageReadStatus }\n transportGuid?: string\n remark?: string\n conversationGuid?: string\n /**\n * Subject for the message\n */\n subject?: string\n /**\n * Set of IDs for invoices in the message\n */\n invoiceIds?: Array\n /**\n * ID of a parent in a message conversation\n */\n parentId?: string\n externalRef?: string\n unassignedResults?: Array\n assignedResults?: { [key: string]: string }\n senderReferences?: { [key: string]: string }\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Status showing whether the message is read or not and the time of reading\n */\nexport class MessageReadStatus {\n constructor(json: JSON | any) {\n Object.assign(this as MessageReadStatus, json)\n }\n\n time?: number\n read?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { InvoicesBatch } from './InvoicesBatch'\nimport { Message } from './Message'\n\nexport class MessageWithBatch {\n constructor(json: JSON | any) {\n Object.assign(this as MessageWithBatch, json)\n }\n\n invoicesBatch?: InvoicesBatch\n message?: Message\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class MessagesReadStatusUpdate {\n constructor(json: JSON | any) {\n Object.assign(this as MessagesReadStatusUpdate, json)\n }\n\n ids?: Array\n time?: number\n status?: boolean\n userId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { b64_2ab } from './ModelHelper'\nexport class MimeAttachment {\n constructor(json: JSON | any) {\n Object.assign(this as MimeAttachment, json, json.data ? { data: b64_2ab(json.data) } : {})\n }\n\n data?: ArrayBuffer\n fileName?: string\n mimeType?: string\n}\n","export function ua2string(_ua: Uint8Array | ArrayBuffer): string {\n let str = ''\n const ab = new Uint8Array(_ua)\n const abLen = ab.length\n const CHUNK_SIZE = Math.pow(2, 8)\n let offset, len, subab\n for (offset = 0; offset < abLen; offset += CHUNK_SIZE) {\n len = Math.min(CHUNK_SIZE, abLen - offset)\n subab = ab.subarray(offset, offset + len)\n str += String.fromCharCode.apply(null, subab as any)\n }\n return str\n}\n\nexport function string2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length)\n for (let i = 0; i < s.length; i++) {\n ua[i] = s.charCodeAt(i) & 0xff\n }\n return ua\n}\n\nexport function string2ab(s: string): ArrayBuffer {\n return ua2ab(string2ua(s))\n}\n\nexport function ua2ab(ua: Uint8Array): ArrayBuffer {\n const buffer = ua.buffer\n return (buffer.byteLength > ua.byteLength ? buffer.slice(0, ua.byteLength) : buffer) as ArrayBuffer\n}\n\nexport function b64_2ab(s: string): ArrayBuffer {\n return ua2ab(string2ua(a2b(s)))\n}\n\nexport function b64_2ua(s: string): Uint8Array {\n return string2ua(a2b(s))\n}\n\nexport function ua2b64(_ua: Uint8Array | ArrayBuffer): string {\n return b2a(ua2string(_ua))\n}\n\nexport function b2a(a: string): string {\n if (typeof window !== 'undefined') {\n //Favour btoa in browser\n if (typeof btoa !== 'undefined') {\n return btoa(a)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(a, 'latin1')\n return buf.toString('base64')\n }\n } else {\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(a, 'latin1')\n return buf.toString('base64')\n }\n if (typeof btoa !== 'undefined') {\n return btoa(a)\n }\n }\n throw new Error('Unsupported operation b2a')\n}\n\nexport function a2b(s: string): string {\n if (typeof window !== 'undefined') {\n //Favour atob in browser\n if (typeof atob !== 'undefined') {\n return atob(s)\n }\n if (typeof Buffer !== 'undefined') {\n const buf = new Buffer(s, 'base64')\n return buf.toString('latin1')\n }\n } else {\n if (typeof Buffer !== 'undefined') {\n const buf = new Buffer(s, 'base64')\n return buf.toString('latin1')\n }\n if (typeof atob !== 'undefined') {\n return atob(s)\n }\n }\n throw new Error('Unsupported operation a2b')\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Nmp {\n constructor(json: JSON | any) {\n Object.assign(this as Nmp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n productId?: string\n category?: string\n commercialStatus?: string\n name?: SamText\n producer?: SamText\n distributor?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class NoGenericPrescriptionReason {\n constructor(json: JSON | any) {\n Object.assign(this as NoGenericPrescriptionReason, json)\n }\n\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class NoSwitchReason {\n constructor(json: JSON | any) {\n Object.assign(this as NoSwitchReason, json)\n }\n\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class NumeratorRange {\n constructor(json: JSON | any) {\n Object.assign(this as NumeratorRange, json)\n }\n\n min?: number\n max?: number\n unit?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class PackagingType {\n constructor(json: JSON | any) {\n Object.assign(this as PackagingType, json)\n }\n\n code?: string\n name?: SamText\n edqmCode?: string\n edqmDefinition?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PaginatedDocumentKeyIdPairObject {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedDocumentKeyIdPairObject, json)\n }\n\n startKey?: any\n startKeyDocId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AccessLog } from './AccessLog'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListAccessLog {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListAccessLog, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Amp } from './Amp'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListAmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListAmp, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Classification } from './Classification'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListClassification {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListClassification, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { ClassificationTemplate } from './ClassificationTemplate'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListClassificationTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListClassificationTemplate, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Code } from './Code'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListCode {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListCode, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Contact } from './Contact'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListContact {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListContact, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Device } from './Device'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListDevice {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListDevice, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Document } from './Document'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListDocument {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListDocument, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { EntityTemplate } from './EntityTemplate'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListEntityTemplate {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListEntityTemplate, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Form } from './Form'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListForm {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListForm, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Group } from './Group'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListGroup {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListGroup, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListHealthElement {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListHealthElement, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListHealthcareParty, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Invoice } from './Invoice'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListInvoice {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListInvoice, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListMaintenanceTask {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListMaintenanceTask, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Message } from './Message'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListMessage {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListMessage, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Nmp } from './Nmp'\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListNmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListNmp, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Patient } from './Patient'\n\nexport class PaginatedListPatient {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListPatient, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Service } from './Service'\n\nexport class PaginatedListService {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListService, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\n\nexport class PaginatedListString {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListString, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Tarification } from './Tarification'\n\nexport class PaginatedListTarification {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListTarification, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { User } from './User'\n\nexport class PaginatedListUser {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListUser, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { Vmp } from './Vmp'\n\nexport class PaginatedListVmp {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListVmp, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaginatedDocumentKeyIdPairObject } from './PaginatedDocumentKeyIdPairObject'\nimport { VmpGroup } from './VmpGroup'\n\nexport class PaginatedListVmpGroup {\n constructor(json: JSON | any) {\n Object.assign(this as PaginatedListVmpGroup, json)\n }\n\n pageSize?: number\n totalSize?: number\n rows?: Array\n nextKeyPair?: PaginatedDocumentKeyIdPairObject\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Paragraph {\n constructor(json: JSON | any) {\n Object.assign(this as Paragraph, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n chapterName?: string\n paragraphName?: string\n startDate?: number\n createdTms?: number\n createdUserId?: string\n endDate?: number\n keyStringNl?: string\n keyStringFr?: string\n agreementType?: string\n processType?: number\n legalReference?: string\n publicationDate?: number\n modificationDate?: number\n processTypeOverrule?: string\n paragraphVersion?: number\n agreementTypePro?: string\n modificationStatus?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AgreementAppendix } from './AgreementAppendix'\n\nexport class ParagraphAgreement {\n constructor(json: JSON | any) {\n Object.assign(this as ParagraphAgreement, json)\n }\n\n timestamp?: number\n paragraph?: string\n accepted?: boolean\n inTreatment?: boolean\n canceled?: boolean\n careProviderReference?: string\n decisionReference?: string\n start?: number\n end?: number\n cancelationDate?: number\n quantityValue?: number\n quantityUnit?: string\n ioRequestReference?: string\n responseType?: string\n refusalJustification?: { [key: string]: string }\n verses?: Array\n coverageType?: string\n unitNumber?: number\n strength?: number\n strengthUnit?: string\n agreementAppendices?: Array\n documentId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Part {\n constructor(json: JSON | any) {\n Object.assign(this as Part, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * A relationship between this patient and another person.\n */\nexport class Partnership {\n constructor(json: JSON | any) {\n Object.assign(this as Partnership, json)\n }\n\n /**\n * Type of relationship.\n */\n type?: Partnership.TypeEnum\n /**\n * Status of the relationship.\n */\n status?: Partnership.StatusEnum\n /**\n * UUID of the contact person or patient in this relationship.\n */\n partnerId?: string\n meToOtherRelationshipDescription?: string\n otherToMeRelationshipDescription?: string\n}\nexport namespace Partnership {\n export type TypeEnum =\n | 'primary_contact'\n | 'primary_contact_for'\n | 'family'\n | 'friend'\n | 'counselor'\n | 'contact'\n | 'brother'\n | 'brotherinlaw'\n | 'child'\n | 'daughter'\n | 'employer'\n | 'father'\n | 'grandchild'\n | 'grandparent'\n | 'husband'\n | 'lawyer'\n | 'mother'\n | 'neighbour'\n | 'notary'\n | 'partner'\n | 'sister'\n | 'sisterinlaw'\n | 'son'\n | 'spouse'\n | 'stepdaughter'\n | 'stepfather'\n | 'stepmother'\n | 'stepson'\n | 'tutor'\n | 'next_of_kin'\n | 'federal_agency'\n | 'insurance_company'\n | 'state_agency'\n | 'unknown'\n | 'seealso'\n | 'refer'\n export const TypeEnum = {\n PrimaryContact: 'primary_contact' as TypeEnum,\n PrimaryContactFor: 'primary_contact_for' as TypeEnum,\n Family: 'family' as TypeEnum,\n Friend: 'friend' as TypeEnum,\n Counselor: 'counselor' as TypeEnum,\n Contact: 'contact' as TypeEnum,\n Brother: 'brother' as TypeEnum,\n Brotherinlaw: 'brotherinlaw' as TypeEnum,\n Child: 'child' as TypeEnum,\n Daughter: 'daughter' as TypeEnum,\n Employer: 'employer' as TypeEnum,\n Father: 'father' as TypeEnum,\n Grandchild: 'grandchild' as TypeEnum,\n Grandparent: 'grandparent' as TypeEnum,\n Husband: 'husband' as TypeEnum,\n Lawyer: 'lawyer' as TypeEnum,\n Mother: 'mother' as TypeEnum,\n Neighbour: 'neighbour' as TypeEnum,\n Notary: 'notary' as TypeEnum,\n Partner: 'partner' as TypeEnum,\n Sister: 'sister' as TypeEnum,\n Sisterinlaw: 'sisterinlaw' as TypeEnum,\n Son: 'son' as TypeEnum,\n Spouse: 'spouse' as TypeEnum,\n Stepdaughter: 'stepdaughter' as TypeEnum,\n Stepfather: 'stepfather' as TypeEnum,\n Stepmother: 'stepmother' as TypeEnum,\n Stepson: 'stepson' as TypeEnum,\n Tutor: 'tutor' as TypeEnum,\n NextOfKin: 'next_of_kin' as TypeEnum,\n FederalAgency: 'federal_agency' as TypeEnum,\n InsuranceCompany: 'insurance_company' as TypeEnum,\n StateAgency: 'state_agency' as TypeEnum,\n Unknown: 'unknown' as TypeEnum,\n Seealso: 'seealso' as TypeEnum,\n Refer: 'refer' as TypeEnum,\n }\n export type StatusEnum = 'active' | 'complicated' | 'past'\n export const StatusEnum = {\n Active: 'active' as StatusEnum,\n Complicated: 'complicated' as StatusEnum,\n Past: 'past' as StatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { EmploymentInfo } from './EmploymentInfo'\nimport { FinancialInstitutionInformation } from './FinancialInstitutionInformation'\nimport { Identifier } from './Identifier'\nimport { Insurability } from './Insurability'\nimport { MedicalHouseContract } from './MedicalHouseContract'\nimport { Partnership } from './Partnership'\nimport { PatientHealthCareParty } from './PatientHealthCareParty'\nimport { PersonName } from './PersonName'\nimport { PropertyStub } from './PropertyStub'\nimport { SchoolingInfo } from './SchoolingInfo'\n\n/**\n * This entity is a root level object. It represents a patient It is serialized in JSON and saved in the underlying icure-patient CouchDB database.\n */\nimport { b64_2ab } from './ModelHelper'\nexport class Patient {\n constructor(json: JSON | any) {\n Object.assign(this as Patient, json, json.picture ? { picture: b64_2ab(json.picture) } : {})\n }\n\n /**\n * the Id of the patient. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the patient in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n identifier?: Array\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n /**\n * the firstname (name) of the patient.\n */\n firstName?: string\n /**\n * the lastname (surname) of the patient. This is the official lastname that should be used for official administrative purposes.\n */\n lastName?: string\n /**\n * the list of all names of the patient, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the patient in the application\n */\n names?: Array\n /**\n * the name of the company this patient is member of.\n */\n companyName?: string\n /**\n * the list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n languages?: Array\n /**\n * the list of addresses (with address type).\n */\n addresses?: Array
\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n civility?: string\n /**\n * the gender of the patient: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n gender?: Patient.GenderEnum\n /**\n * the birth sex of the patient: male, female, indeterminate, unknown\n */\n birthSex?: Patient.BirthSexEnum\n /**\n * The id of the patient this patient has been merged with.\n */\n mergeToPatientId?: string\n /**\n * The ids of the patients that have been merged inside this patient.\n */\n mergedIds?: Array\n /**\n * An alias of the person, nickname, ...\n */\n alias?: string\n /**\n * Is the patient active (boolean).\n */\n active?: boolean\n /**\n * When not active, the reason for deactivation.\n */\n deactivationReason?: Patient.DeactivationReasonEnum\n /**\n * Deactivation date of the patient\n */\n deactivationDate?: number\n /**\n * Social security inscription number.\n */\n ssin?: string\n /**\n * Lastname at birth (can be different of the current name), depending on the country, must be used to design the patient .\n */\n maidenName?: string\n /**\n * Lastname of the spouse for a married woman, depending on the country, can be used to design the patient.\n */\n spouseName?: string\n /**\n * Lastname of the partner, should not be used to design the patient.\n */\n partnerName?: string\n /**\n * any of `single`, `in_couple`, `married`, `separated`, `divorced`, `divorcing`, `widowed`, `widower`, `complicated`, `unknown`, `contract`, `other`.\n */\n personalStatus?: Patient.PersonalStatusEnum\n /**\n * The birthdate encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfBirth?: number\n /**\n * The date of death encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfDeath?: number\n /**\n * Timestamp of the latest validation of the eID of the person..\n */\n timestampOfLatestEidReading?: number\n /**\n * The place of birth.\n */\n placeOfBirth?: string\n /**\n * The place of death.\n */\n placeOfDeath?: string\n /**\n * Is the patient deceased.\n */\n deceased?: boolean\n /**\n * The level of education (college degree, undergraduate, phd).\n */\n education?: string\n /**\n * The current professional activity.\n */\n profession?: string\n /**\n * A text note (can be confidential, encrypted by default).\n */\n note?: string\n /**\n * An administrative note, not confidential.\n */\n administrativeNote?: string\n /**\n * The nationality of the patient.\n */\n nationality?: string\n /**\n * The race of the patient.\n */\n race?: string\n /**\n * The ethnicity of the patient.\n */\n ethnicity?: string\n /**\n * The id of the user that usually handles this patient.\n */\n preferredUserId?: string\n /**\n * A picture usually saved in JPEG format.\n */\n picture?: ArrayBuffer\n /**\n * An external (from another source) id with no guarantee or requirement for unicity .\n */\n externalId?: string\n /**\n * List of insurance coverages (of class Insurability, see below).\n */\n insurabilities?: Array\n /**\n * List of partners, or persons of contact (of class Partnership, see below).\n */\n partnerships?: Array\n /**\n * Links (usually for therapeutic reasons) between this patient and healthcare parties (of class PatientHealthcareParty).\n */\n patientHealthCareParties?: Array\n /**\n * Financial information (Bank, bank account) used to reimburse the patient.\n */\n financialInstitutionInformation?: Array\n /**\n * Contracts between the patient and the healthcare entity.\n */\n medicalHouseContracts?: Array\n /**\n * Codified list of professions exercised by this patient.\n */\n patientProfessions?: Array\n /**\n * Extra parameters\n */\n parameters?: { [key: string]: Array }\n /**\n * Extra properties\n */\n properties?: Array\n /**\n * For each couple of HcParties (delegator and delegate), this map contains the exchange AES key. The delegator is always this hcp, the key of the map is the id of the delegate.The AES exchange key is encrypted using RSA twice : once using this hcp public key (index 0 in the Array) and once using the other hcp public key (index 1 in the Array). For a pair of HcParties. Each HcParty always has one AES exchange key for himself.\n */\n hcPartyKeys?: { [key: string]: Array }\n /**\n * Extra AES exchange keys, usually the ones we lost access to at some point. The structure is { publicKey: { delegateId: { myPubKey1: aesExKey_for_this, delegatePubKey1: aesExKey_for_delegate } } }\n */\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n /**\n * Our private keys encrypted with our public keys. The structure is { publicKey1: { publicKey2: privateKey2_encrypted_with_publicKey1, publicKey3: privateKey3_encrypted_with_publicKey1 } }\n */\n transferKeys?: { [key: string]: { [key: string]: string } }\n /**\n * The privateKeyShamirPartitions are used to share this hcp's private RSA key with a series of other hcParties using Shamir's algorithm. The key of the map is the hcp Id with whom this partition has been shared. The value is \\\"threshold⎮partition in hex\\\" encrypted using the the partition's holder's public RSA key\n */\n privateKeyShamirPartitions?: { [key: string]: string }\n /**\n * The public key of this hcp\n */\n publicKey?: string\n /**\n * The public keys of this actor which should be used for RSA-OAEP with sha256 encryption.\n */\n publicKeysForOaepWithSha256?: string[]\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n nonDuplicateIds?: Array\n encryptedAdministrativesDocuments?: Array\n comment?: string\n warning?: string\n fatherBirthCountry?: CodeStub\n birthCountry?: CodeStub\n nativeCountry?: CodeStub\n socialStatus?: CodeStub\n mainSourceOfIncome?: CodeStub\n schoolingInfos?: Array\n employementInfos?: Array\n}\nexport namespace Patient {\n export type GenderEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const GenderEnum = {\n Male: 'male' as GenderEnum,\n Female: 'female' as GenderEnum,\n Indeterminate: 'indeterminate' as GenderEnum,\n Changed: 'changed' as GenderEnum,\n ChangedToMale: 'changedToMale' as GenderEnum,\n ChangedToFemale: 'changedToFemale' as GenderEnum,\n Unknown: 'unknown' as GenderEnum,\n }\n export type BirthSexEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\n export const BirthSexEnum = {\n Male: 'male' as BirthSexEnum,\n Female: 'female' as BirthSexEnum,\n Indeterminate: 'indeterminate' as BirthSexEnum,\n Changed: 'changed' as BirthSexEnum,\n ChangedToMale: 'changedToMale' as BirthSexEnum,\n ChangedToFemale: 'changedToFemale' as BirthSexEnum,\n Unknown: 'unknown' as BirthSexEnum,\n }\n export type DeactivationReasonEnum = 'deceased' | 'moved' | 'other_doctor' | 'retired' | 'no_contact' | 'unknown' | 'none'\n export const DeactivationReasonEnum = {\n Deceased: 'deceased' as DeactivationReasonEnum,\n Moved: 'moved' as DeactivationReasonEnum,\n OtherDoctor: 'other_doctor' as DeactivationReasonEnum,\n Retired: 'retired' as DeactivationReasonEnum,\n NoContact: 'no_contact' as DeactivationReasonEnum,\n Unknown: 'unknown' as DeactivationReasonEnum,\n None: 'none' as DeactivationReasonEnum,\n }\n export type PersonalStatusEnum =\n | 'single'\n | 'in_couple'\n | 'married'\n | 'separated'\n | 'divorced'\n | 'divorcing'\n | 'widowed'\n | 'widower'\n | 'complicated'\n | 'unknown'\n | 'contract'\n | 'other'\n | 'annulled'\n | 'polygamous'\n export const PersonalStatusEnum = {\n Single: 'single' as PersonalStatusEnum,\n InCouple: 'in_couple' as PersonalStatusEnum,\n Married: 'married' as PersonalStatusEnum,\n Separated: 'separated' as PersonalStatusEnum,\n Divorced: 'divorced' as PersonalStatusEnum,\n Divorcing: 'divorcing' as PersonalStatusEnum,\n Widowed: 'widowed' as PersonalStatusEnum,\n Widower: 'widower' as PersonalStatusEnum,\n Complicated: 'complicated' as PersonalStatusEnum,\n Unknown: 'unknown' as PersonalStatusEnum,\n Contract: 'contract' as PersonalStatusEnum,\n Other: 'other' as PersonalStatusEnum,\n Annulled: 'annulled' as PersonalStatusEnum,\n Polygamous: 'polygamous' as PersonalStatusEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { ReferralPeriod } from './ReferralPeriod'\n\n/**\n * One or several periods of care by an hcp for this patient\n */\nexport class PatientHealthCareParty {\n constructor(json: JSON | any) {\n Object.assign(this as PatientHealthCareParty, json)\n }\n\n /**\n * Type of care/relationship.\n */\n type?: PatientHealthCareParty.TypeEnum\n /**\n * UUID of the hcp.\n */\n healthcarePartyId?: string\n /**\n * Preferred format of exchange for diverse means of communication\n */\n sendFormats?: { [key: string]: string }\n /**\n * Time periods\n */\n referralPeriods?: Array\n referral?: boolean\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace PatientHealthCareParty {\n export type TypeEnum =\n | 'doctor'\n | 'referral'\n | 'medicalhouse'\n | 'retirementhome'\n | 'hospital'\n | 'other'\n | 'referringphysician'\n | 'managingorganization'\n export const TypeEnum = {\n Doctor: 'doctor' as TypeEnum,\n Referral: 'referral' as TypeEnum,\n Medicalhouse: 'medicalhouse' as TypeEnum,\n Retirementhome: 'retirementhome' as TypeEnum,\n Hospital: 'hospital' as TypeEnum,\n Other: 'other' as TypeEnum,\n Referringphysician: 'referringphysician' as TypeEnum,\n Managingorganization: 'managingorganization' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Payment {\n constructor(json: JSON | any) {\n Object.assign(this as Payment, json)\n }\n\n paymentDate?: number\n paymentType?: Payment.PaymentTypeEnum\n paid?: number\n}\nexport namespace Payment {\n export type PaymentTypeEnum = 'cash' | 'wired' | 'insurance' | 'creditcard' | 'debitcard' | 'paypal' | 'bitcoin' | 'other'\n export const PaymentTypeEnum = {\n Cash: 'cash' as PaymentTypeEnum,\n Wired: 'wired' as PaymentTypeEnum,\n Insurance: 'insurance' as PaymentTypeEnum,\n Creditcard: 'creditcard' as PaymentTypeEnum,\n Debitcard: 'debitcard' as PaymentTypeEnum,\n Paypal: 'paypal' as PaymentTypeEnum,\n Bitcoin: 'bitcoin' as PaymentTypeEnum,\n Other: 'other' as PaymentTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Periodicity {\n constructor(json: JSON | any) {\n Object.assign(this as Periodicity, json)\n }\n\n relatedCode?: CodeStub\n relatedPeriodicity?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PermissionItem } from './PermissionItem'\n\n/**\n * If permission to modify patient data is granted or revoked\n */\nexport class Permission {\n constructor(json: JSON | any) {\n Object.assign(this as Permission, json)\n }\n\n /**\n * Granted permissions.\n */\n grants?: Array\n /**\n * Revoked permissions.\n */\n revokes?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Predicate } from './Predicate'\n\n/**\n * Revoked permissions.\n */\nexport class PermissionItem {\n constructor(json: JSON | any) {\n Object.assign(this as PermissionItem, json)\n }\n\n itemType?: string\n type?: PermissionItem.TypeEnum\n predicate?: Predicate\n}\nexport namespace PermissionItem {\n export type TypeEnum =\n | 'AUTHENTICATE'\n | 'HCP'\n | 'PHYSICIAN'\n | 'ADMIN'\n | 'PATIENT_VIEW'\n | 'PATIENT_CREATE'\n | 'PATIENT_CHANGE_DELETE'\n | 'MEDICAL_DATA_VIEW'\n | 'MEDICAL_DATA_CREATE'\n | 'MEDICAL_CHANGE_DELETE'\n | 'FINANCIAL_DATA_VIEW'\n | 'FINANCIAL_DATA_CREATE'\n | 'FINANCIAL_CHANGE_DELETE'\n export const TypeEnum = {\n AUTHENTICATE: 'AUTHENTICATE' as TypeEnum,\n HCP: 'HCP' as TypeEnum,\n PHYSICIAN: 'PHYSICIAN' as TypeEnum,\n ADMIN: 'ADMIN' as TypeEnum,\n PATIENTVIEW: 'PATIENT_VIEW' as TypeEnum,\n PATIENTCREATE: 'PATIENT_CREATE' as TypeEnum,\n PATIENTCHANGEDELETE: 'PATIENT_CHANGE_DELETE' as TypeEnum,\n MEDICALDATAVIEW: 'MEDICAL_DATA_VIEW' as TypeEnum,\n MEDICALDATACREATE: 'MEDICAL_DATA_CREATE' as TypeEnum,\n MEDICALCHANGEDELETE: 'MEDICAL_CHANGE_DELETE' as TypeEnum,\n FINANCIALDATAVIEW: 'FINANCIAL_DATA_VIEW' as TypeEnum,\n FINANCIALDATACREATE: 'FINANCIAL_DATA_CREATE' as TypeEnum,\n FINANCIALCHANGEDELETE: 'FINANCIAL_CHANGE_DELETE' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Non preferred name information of a person\n */\nexport class PersonName {\n constructor(json: JSON | any) {\n Object.assign(this as PersonName, json)\n }\n\n /**\n * Family name (often called 'Surname')\n */\n lastName?: string\n /**\n * Given names (not always 'first'). Includes middle names. This repeating element order: Given Names appear in the correct order for presenting the name\n */\n firstNames?: Array\n /**\n * Starting date of time period when name is/was valid for use. Date encoded as a fuzzy date on 8 positions (YYYYMMDD)\n */\n start?: number\n /**\n * Ending date of time period when name is/was valid for use. Date encoded as a fuzzy date on 8 positions (YYYYMMDD)\n */\n end?: number\n /**\n * Parts that come before the name. This repeating element order: Prefixes appear in the correct order for presenting the name\n */\n prefix?: Array\n /**\n * Parts that come after the name. This repeating element order: Suffixes appear in the correct order for presenting the name\n */\n suffix?: Array\n /**\n * Text representation of the full name\n */\n text?: string\n /**\n * What is the use of this name\n */\n use?: PersonName.UseEnum\n}\nexport namespace PersonName {\n export type UseEnum = 'usual' | 'official' | 'temp' | 'nickname' | 'anonymous' | 'maiden' | 'old' | 'other'\n export const UseEnum = {\n Usual: 'usual' as UseEnum,\n Official: 'official' as UseEnum,\n Temp: 'temp' as UseEnum,\n Nickname: 'nickname' as UseEnum,\n Anonymous: 'anonymous' as UseEnum,\n Maiden: 'maiden' as UseEnum,\n Old: 'old' as UseEnum,\n Other: 'other' as UseEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class PharmaceuticalForm {\n constructor(json: JSON | any) {\n Object.assign(this as PharmaceuticalForm, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n code?: string\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class PharmaceuticalFormStub {\n constructor(json: JSON | any) {\n Object.assign(this as PharmaceuticalFormStub, json)\n }\n\n id?: string\n code?: string\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Address } from './Address'\n\nexport class Place {\n constructor(json: JSON | any) {\n Object.assign(this as Place, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n address?: Address\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CareTeamMembership } from './CareTeamMembership'\nimport { CodeStub } from './CodeStub'\n\n/**\n * List of healthcare approaches.\n */\nexport class PlanOfAction {\n constructor(json: JSON | any) {\n Object.assign(this as PlanOfAction, json)\n }\n\n id?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the hcp who prescribed this healthcare approach\n */\n prescriberId?: string\n /**\n * The date (unix epoch in ms) when the healthcare approach is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (unix epoch in ms) of the start of the healthcare approach.\n */\n openingDate?: number\n /**\n * The date (unix epoch in ms) marking the end of the healthcare approach.\n */\n closingDate?: number\n /**\n * The date (unix epoch in ms) when the healthcare approach has to be carried out.\n */\n deadlineDate?: number\n /**\n * The name of the healthcare approach.\n */\n name?: string\n /**\n * Description of the healthcare approach.\n */\n descr?: string\n /**\n * Note about the healthcare approach.\n */\n note?: string\n /**\n * Id of the opening contact when the healthcare approach was created.\n */\n idOpeningContact?: string\n /**\n * Id of the closing contact for the healthcare approach.\n */\n idClosingContact?: string\n /**\n * bit 0: active/inactive, bit 1: relevant/irrelevant, bit 2 : present/absent, ex: 0 = active,relevant and present\n */\n status?: number\n documentIds?: Array\n /**\n * The number of individual cares already performed in the course of this healthcare approach\n */\n numberOfCares?: number\n /**\n * Members of the careteam involved in this approach\n */\n careTeamMemberships?: Array\n relevant?: boolean\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Predicate {\n constructor(json: JSON | any) {\n Object.assign(this as Predicate, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Pricing {\n constructor(json: JSON | any) {\n Object.assign(this as Pricing, json)\n }\n\n quantity?: number\n label?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PropertyTypeStub } from './PropertyTypeStub'\nimport { TypedValueObject } from './TypedValueObject'\n\n/**\n * Extra properties\n */\nexport class PropertyStub {\n constructor(json: JSON | any) {\n Object.assign(this as PropertyStub, json)\n }\n\n id?: string\n type?: PropertyTypeStub\n typedValue?: TypedValueObject\n deletionDate?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PropertyTypeStub {\n constructor(json: JSON | any) {\n Object.assign(this as PropertyTypeStub, json)\n }\n\n identifier?: string\n type?: PropertyTypeStub.TypeEnum\n}\nexport namespace PropertyTypeStub {\n export type TypeEnum = 'BOOLEAN' | 'INTEGER' | 'DOUBLE' | 'STRING' | 'DATE' | 'CLOB' | 'JSON'\n export const TypeEnum = {\n BOOLEAN: 'BOOLEAN' as TypeEnum,\n INTEGER: 'INTEGER' as TypeEnum,\n DOUBLE: 'DOUBLE' as TypeEnum,\n STRING: 'STRING' as TypeEnum,\n DATE: 'DATE' as TypeEnum,\n CLOB: 'CLOB' as TypeEnum,\n JSON: 'JSON' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class PublicKey {\n constructor(json: JSON | any) {\n Object.assign(this as PublicKey, json)\n }\n\n hcPartyId?: string\n hexString?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Quantity {\n constructor(json: JSON | any) {\n Object.assign(this as Quantity, json)\n }\n\n value?: number\n unit?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\n\nexport class Receipt {\n constructor(json: JSON | any) {\n Object.assign(this as Receipt, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n attachmentIds?: { [key: string]: string }\n references?: Array\n documentId?: string\n category?: string\n subCategory?: string\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * Time periods\n */\nexport class ReferralPeriod {\n constructor(json: JSON | any) {\n Object.assign(this as ReferralPeriod, json)\n }\n\n /**\n * The date (unix epoch in ms) when the referral period initiated, will be filled instantaneously.\n */\n startDate?: number\n /**\n * The date (unix epoch in ms) the referral period ended, will be instantaneously filled.\n */\n endDate?: number\n /**\n * Comments made during the referral.\n */\n comment?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AdministrationQuantity } from './AdministrationQuantity'\nimport { CodeStub } from './CodeStub'\nimport { Weekday } from './Weekday'\n\nexport class RegimenItem {\n constructor(json: JSON | any) {\n Object.assign(this as RegimenItem, json)\n }\n\n date?: number\n dayNumber?: number\n weekday?: Weekday\n dayPeriod?: CodeStub\n timeOfDay?: number\n administratedQuantity?: AdministrationQuantity\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class RegistrationInformation {\n constructor(json: JSON | any) {\n Object.assign(this as RegistrationInformation, json)\n }\n\n firstName?: string\n lastName?: string\n emailAddress?: string\n userOptions?: string\n userRoles?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class RegistrationSuccess {\n constructor(json: JSON | any) {\n Object.assign(this as RegistrationSuccess, json)\n }\n\n groupId?: string\n userId?: string\n token?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Copayment } from './Copayment'\nimport { Pricing } from './Pricing'\nimport { ReimbursementCriterion } from './ReimbursementCriterion'\n\nexport class Reimbursement {\n constructor(json: JSON | any) {\n Object.assign(this as Reimbursement, json)\n }\n\n from?: number\n to?: number\n deliveryEnvironment?: Reimbursement.DeliveryEnvironmentEnum\n code?: string\n codeType?: Reimbursement.CodeTypeEnum\n multiple?: Reimbursement.MultipleEnum\n temporary?: boolean\n reference?: boolean\n legalReferencePath?: string\n flatRateSystem?: boolean\n reimbursementBasePrice?: number\n referenceBasePrice?: number\n copaymentSupplement?: number\n pricingUnit?: Pricing\n pricingSlice?: Pricing\n reimbursementCriterion?: ReimbursementCriterion\n copayments?: Array\n}\nexport namespace Reimbursement {\n export type DeliveryEnvironmentEnum = 'P' | 'A' | 'H' | 'R'\n export const DeliveryEnvironmentEnum = {\n P: 'P' as DeliveryEnvironmentEnum,\n A: 'A' as DeliveryEnvironmentEnum,\n H: 'H' as DeliveryEnvironmentEnum,\n R: 'R' as DeliveryEnvironmentEnum,\n }\n export type CodeTypeEnum = 'CNK' | 'PSEUDO'\n export const CodeTypeEnum = {\n CNK: 'CNK' as CodeTypeEnum,\n PSEUDO: 'PSEUDO' as CodeTypeEnum,\n }\n export type MultipleEnum = 'M' | 'V'\n export const MultipleEnum = {\n M: 'M' as MultipleEnum,\n V: 'V' as MultipleEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class ReimbursementCriterion {\n constructor(json: JSON | any) {\n Object.assign(this as ReimbursementCriterion, json)\n }\n\n category?: string\n code?: string\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { RemoteAuthentication } from './RemoteAuthentication'\n\nexport class Remote {\n constructor(json: JSON | any) {\n Object.assign(this as Remote, json)\n }\n\n url?: string\n auth?: RemoteAuthentication\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Basic } from './Basic'\n\nexport class RemoteAuthentication {\n constructor(json: JSON | any) {\n Object.assign(this as RemoteAuthentication, json)\n }\n\n basic?: Basic\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Duration } from './Duration'\n\nexport class Renewal {\n constructor(json: JSON | any) {\n Object.assign(this as Renewal, json)\n }\n\n decimal?: number\n duration?: Duration\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicateCommand {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicateCommand, json)\n }\n\n sourceUrl?: string\n sourceUsername?: string\n sourcePassword?: string\n targetUrl?: string\n targetUsername?: string\n targetPassword?: string\n id?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { DatabaseSynchronization } from './DatabaseSynchronization'\n\nexport class Replication {\n constructor(json: JSON | any) {\n Object.assign(this as Replication, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n context?: string\n databaseSynchronizations?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicationInfo {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicationInfo, json)\n }\n\n active?: boolean\n running?: boolean\n pendingFrom?: number\n pendingTo?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicationStats {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicationStats, json)\n }\n\n revisionsChecked?: number\n missingRevisionsFound?: number\n docsRead?: number\n docsWritten?: number\n changesPending?: number\n docWriteFailures?: number\n checkpointedSourceSeq?: string\n startTime?: number\n error?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Remote } from './Remote'\nimport { ReplicationStats } from './ReplicationStats'\n\nexport class ReplicatorDocument {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicatorDocument, json)\n }\n\n id?: string\n rev?: string\n source?: Remote\n target?: Remote\n owner?: string\n createTarget?: boolean\n continuous?: boolean\n docIds?: Array\n replicationState?: string\n replicationStateTime?: number\n replicationStats?: ReplicationStats\n errorCount?: number\n revsInfo?: Array<{ [key: string]: string }>\n revHistory?: { [key: string]: string }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class ReplicatorResponse {\n constructor(json: JSON | any) {\n Object.assign(this as ReplicatorResponse, json)\n }\n\n ok?: boolean\n id?: string\n rev?: string\n error?: string\n reason?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Service } from './Service'\n\nexport class ResultInfo {\n constructor(json: JSON | any) {\n Object.assign(this as ResultInfo, json)\n }\n\n ssin?: string\n lastName?: string\n firstName?: string\n dateOfBirth?: number\n sex?: string\n documentId?: string\n protocol?: string\n complete?: boolean\n demandDate?: number\n labo?: string\n engine?: string\n codes?: Array\n services?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Right {\n constructor(json: JSON | any) {\n Object.assign(this as Right, json)\n }\n\n userId?: string\n read?: boolean\n write?: boolean\n administration?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class RouteOfAdministration {\n constructor(json: JSON | any) {\n Object.assign(this as RouteOfAdministration, json)\n }\n\n name?: SamText\n standardRoutes?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SamText {\n constructor(json: JSON | any) {\n Object.assign(this as SamText, json)\n }\n\n fr?: string\n nl?: string\n de?: string\n en?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SamVersion {\n constructor(json: JSON | any) {\n Object.assign(this as SamVersion, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n version?: string\n date?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class SchoolingInfo {\n constructor(json: JSON | any) {\n Object.assign(this as SchoolingInfo, json)\n }\n\n startDate?: number\n endDate?: number\n school?: string\n typeOfEducation?: CodeStub\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { StructureElement } from './StructureElement'\n\nexport class Section {\n constructor(json: JSON | any) {\n Object.assign(this as Section, json)\n }\n\n section?: string\n fields?: Array\n description?: string\n keywords?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Annotation } from './Annotation'\nimport { CodeStub } from './CodeStub'\nimport { Content } from './Content'\nimport { Delegation } from './Delegation'\nimport { Identifier } from './Identifier'\n\n/**\n * This entity represents a Service. A Service is created in the course a contact. Services include subjective information provided by the patient, such as complaints, reason for visit, feelings, etc. or objective information like bio-metric measures (blood pressure, temperature, heart beat, etc.), or physical exam description, diagnosis, prescription, integration of lab reports from another healthcare party, action plan, etc. Any action performed by the healthcare party which is relevant for the healthcare element of a patient is considered a service. The services can be linked to healthcare elements or other structuring elements of the medical record\n */\nexport class Service {\n constructor(json: JSON | any) {\n Object.assign(this as Service, json)\n }\n\n /**\n * The Id of the Service. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The transactionId is used when a single service had to be split into parts for technical reasons. Several services with the same non null transaction id form one single service\n */\n transactionId?: string\n identifier?: Array\n /**\n * Id of the contact during which the service is provided\n */\n contactId?: string\n /**\n * List of IDs of all sub-contacts that link the service to structural elements. Only used when the Service is emitted outside of its contact\n */\n subContactIds?: Array\n /**\n * List of IDs of all plans of actions (healthcare approaches) as a part of which the Service is provided. Only used when the Service is emitted outside of its contact\n */\n plansOfActionIds?: Array\n /**\n * List of IDs of all healthcare elements for which the service is provided. Only used when the Service is emitted outside of its contact\n */\n healthElementsIds?: Array\n /**\n * List of Ids of all forms linked to the Service. Only used when the Service is emitted outside of its contact.\n */\n formIds?: Array\n /**\n * The secret patient key, encrypted in the patient document, in clear here.\n */\n secretForeignKeys?: Array\n /**\n * The public patient key, encrypted here for separate Crypto Actors.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * The delegations giving access to connected healthcare information.\n */\n delegations?: { [key: string]: Array }\n /**\n * The contact secret encryption key used to encrypt the secured properties (like services for example), encrypted for separate Crypto Actors.\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * Description / Unambiguous qualification (LOINC code) of the type of information contained in the service. Could be a code to qualify temperature, complaint, diagnostic, ...\n */\n label?: string\n dataClassName?: string\n /**\n * Used for sorting services inside an upper object (A contact, a transaction, a FHIR bundle, ...)\n */\n index?: number\n /**\n * Information contained in the service. Content is localized, using ISO language code as key\n */\n content?: { [key: string]: Content }\n encryptedContent?: string\n textIndexes?: { [key: string]: string }\n /**\n * The date (YYYYMMDDhhmmss) when the Service is noted to have started and also closes on the same date\n */\n valueDate?: number\n /**\n * The date (YYYYMMDDhhmmss) of the start of the Service\n */\n openingDate?: number\n /**\n * The date (YYYYMMDDhhmmss) marking the end of the Service\n */\n closingDate?: number\n /**\n * Id of the form used during the Service\n */\n formId?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * Text, comments on the Service provided\n */\n comment?: string\n status?: number\n /**\n * List of invoicing codes\n */\n invoicingCodes?: Array\n /**\n * Comments - Notes recorded by a HCP about this service\n */\n notes?: Array\n /**\n * Links towards related services (possibly in other contacts)\n */\n qualifiedLinks?: { [key: string]: { [key: string]: string } }\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * List of all services provided to the patient under a given contact which is linked by this sub-contact to other structuring elements.\n */\nexport class ServiceLink {\n constructor(json: JSON | any) {\n Object.assign(this as ServiceLink, json)\n }\n\n serviceId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SoftwareMedicalFileExport {\n constructor(json: JSON | any) {\n Object.assign(this as SoftwareMedicalFileExport, json)\n }\n\n secretForeignKeys?: Array\n comment?: string\n exportAsPMF?: boolean\n softwareName?: string\n softwareVersion?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class StandardSubstance {\n constructor(json: JSON | any) {\n Object.assign(this as StandardSubstance, json)\n }\n\n code?: string\n type?: StandardSubstance.TypeEnum\n name?: SamText\n definition?: SamText\n url?: string\n}\nexport namespace StandardSubstance {\n export type TypeEnum = 'CAS' | 'DM_D' | 'EDQM' | 'SNOMED_CT'\n export const TypeEnum = {\n CAS: 'CAS' as TypeEnum,\n DMD: 'DM_D' as TypeEnum,\n EDQM: 'EDQM' as TypeEnum,\n SNOMEDCT: 'SNOMED_CT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { NumeratorRange } from './NumeratorRange'\nimport { Quantity } from './Quantity'\n\nexport class StrengthRange {\n constructor(json: JSON | any) {\n Object.assign(this as StrengthRange, json)\n }\n\n numeratorRange?: NumeratorRange\n denominator?: Quantity\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class StructureElement {\n constructor(json: JSON | any) {\n Object.assign(this as StructureElement, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { ServiceLink } from './ServiceLink'\n\n/**\n * This entity represents a sub-contact. It is serialized in JSON and saved in the underlying icure-contact CouchDB database.\n */\nexport class SubContact {\n constructor(json: JSON | any) {\n Object.assign(this as SubContact, json)\n }\n\n /**\n * The Id of the sub-contact. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * Description of the sub-contact\n */\n descr?: string\n /**\n * Protocol based on which the sub-contact was used for linking services to structuring elements\n */\n protocol?: string\n status?: number\n /**\n * Id of the form used in the sub-contact. Several sub-contacts with the same form ID can coexist as long as they are in different contacts or they relate to a different planOfActionID\n */\n formId?: string\n /**\n * Id of the plan of action (healthcare approach) that is linked by the sub-contact to a service.\n */\n planOfActionId?: string\n /**\n * Id of the healthcare element that is linked by the sub-contact to a service\n */\n healthElementId?: string\n classificationId?: string\n /**\n * List of all services provided to the patient under a given contact which is linked by this sub-contact to other structuring elements.\n */\n services?: Array\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { StandardSubstance } from './StandardSubstance'\n\nexport class Substance {\n constructor(json: JSON | any) {\n Object.assign(this as Substance, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n code?: string\n chemicalForm?: string\n name?: SamText\n note?: SamText\n standardSubstances?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { StandardSubstance } from './StandardSubstance'\n\nexport class SubstanceStub {\n constructor(json: JSON | any) {\n Object.assign(this as SubstanceStub, json)\n }\n\n id?: string\n code?: string\n chemicalForm?: string\n name?: SamText\n note?: SamText\n standardSubstances?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Substanceproduct {\n constructor(json: JSON | any) {\n Object.assign(this as Substanceproduct, json)\n }\n\n intendedcds?: Array\n deliveredcds?: Array\n intendedname?: string\n deliveredname?: string\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Suggest {\n constructor(json: JSON | any) {\n Object.assign(this as Suggest, json)\n }\n\n filterKey?: string\n filterValue?: string\n entityClass?: string\n fieldValue?: string\n fieldDisplay?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { Partnership } from './Partnership'\nimport { PatientHealthCareParty } from './PatientHealthCareParty'\nimport { Service } from './Service'\n\nexport class SumehrContent {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrContent, json)\n }\n\n services?: Array\n healthElements?: Array\n partnerships?: Array\n patientHealthcareParties?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthElement } from './HealthElement'\nimport { HealthcareParty } from './HealthcareParty'\nimport { Service } from './Service'\n\nexport class SumehrExportInfo {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrExportInfo, json)\n }\n\n secretForeignKeys?: Array\n excludedIds?: Array\n recipient?: HealthcareParty\n softwareName?: string\n softwareVersion?: string\n comment?: string\n includeIrrelevantInformation?: boolean\n services?: Array\n healthElements?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class SumehrValidity {\n constructor(json: JSON | any) {\n Object.assign(this as SumehrValidity, json)\n }\n\n sumehrValid?: SumehrValidity.SumehrValidEnum\n}\nexport namespace SumehrValidity {\n export type SumehrValidEnum = 'absent' | 'uptodate' | 'outdated'\n export const SumehrValidEnum = {\n Absent: 'absent' as SumehrValidEnum,\n Uptodate: 'uptodate' as SumehrValidEnum,\n Outdated: 'outdated' as SumehrValidEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class SupplyProblem {\n constructor(json: JSON | any) {\n Object.assign(this as SupplyProblem, json)\n }\n\n from?: number\n to?: number\n reason?: SamText\n expectedEndOn?: number\n impact?: SamText\n additionalInformation?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Suspension {\n constructor(json: JSON | any) {\n Object.assign(this as Suspension, json)\n }\n\n beginMoment?: number\n endMoment?: number\n suspensionReason?: string\n lifecycle?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Tag {\n constructor(json: JSON | any) {\n Object.assign(this as Tag, json)\n }\n\n type?: string\n tag?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { LetterValue } from './LetterValue'\nimport { Periodicity } from './Periodicity'\nimport { Valorisation } from './Valorisation'\n\nexport class Tarification {\n constructor(json: JSON | any) {\n Object.assign(this as Tarification, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n label?: { [key: string]: string }\n context?: string\n type?: string\n code?: string\n version?: string\n author?: string\n regions?: Array\n periodicity?: Array\n level?: number\n links?: Array\n qualifiedLinks?: { [key: string]: Array }\n flags?: Array\n searchTerms?: { [key: string]: Array }\n data?: string\n appendices?: { [key: string]: string }\n disabled?: boolean\n valorisations?: Array\n category?: { [key: string]: string }\n consultationCode?: boolean\n hasRelatedCode?: boolean\n needsPrescriber?: boolean\n relatedCodes?: Array\n nGroup?: string\n letterValues?: Array\n ngroup?: string\n}\nexport namespace Tarification {\n export type FlagsEnum =\n | 'male_only'\n | 'female_only'\n | 'deptkinesitherapy'\n | 'deptnursing'\n | 'deptgeneralpractice'\n | 'deptsocialworker'\n | 'deptpsychology'\n | 'deptadministrative'\n | 'deptdietetics'\n | 'deptspeechtherapy'\n | 'deptdentistry'\n | 'deptoccupationaltherapy'\n | 'depthealthcare'\n | 'deptgynecology'\n | 'deptpediatry'\n | 'deptalgology'\n | 'deptanatomopathology'\n | 'deptanesthesiology'\n | 'deptbacteriology'\n | 'deptcardiacsurgery'\n | 'deptcardiology'\n | 'deptchildandadolescentpsychiatry'\n | 'deptdermatology'\n | 'deptdiabetology'\n | 'deptemergency'\n | 'deptendocrinology'\n | 'deptgastroenterology'\n | 'deptgenetics'\n | 'deptgeriatry'\n | 'depthandsurgery'\n | 'depthematology'\n | 'deptinfectiousdisease'\n | 'deptintensivecare'\n | 'deptlaboratory'\n | 'deptmajorburns'\n | 'deptmaxillofacialsurgery'\n | 'deptmedicine'\n | 'deptmolecularbiology'\n | 'deptneonatalogy'\n | 'deptnephrology'\n | 'deptneurology'\n | 'deptneurosurgery'\n | 'deptnte'\n | 'deptnuclear'\n | 'deptnutritiondietetics'\n | 'deptobstetrics'\n | 'deptoncology'\n | 'deptophtalmology'\n | 'deptorthopedy'\n | 'deptpalliativecare'\n | 'deptpediatricintensivecare'\n | 'deptpediatricsurgery'\n | 'deptpharmacy'\n | 'deptphysicalmedecine'\n | 'deptphysiotherapy'\n | 'deptplasticandreparatorysurgery'\n | 'deptpneumology'\n | 'deptpodiatry'\n | 'deptpsychiatry'\n | 'deptradiology'\n | 'deptradiotherapy'\n | 'deptrevalidation'\n | 'deptrheumatology'\n | 'deptrhumatology'\n | 'deptsenology'\n | 'deptsocialservice'\n | 'deptsportsmedecine'\n | 'deptstomatology'\n | 'deptsurgery'\n | 'deptthoracicsurgery'\n | 'depttoxicology'\n | 'depttropicalmedecine'\n | 'depturology'\n | 'deptvascularsurgery'\n | 'deptvisceraldigestiveabdominalsurgery'\n | 'depttransplantsurgery'\n | 'deptpercutaneous'\n | 'deptchildbirth'\n export const FlagsEnum = {\n MaleOnly: 'male_only' as FlagsEnum,\n FemaleOnly: 'female_only' as FlagsEnum,\n Deptkinesitherapy: 'deptkinesitherapy' as FlagsEnum,\n Deptnursing: 'deptnursing' as FlagsEnum,\n Deptgeneralpractice: 'deptgeneralpractice' as FlagsEnum,\n Deptsocialworker: 'deptsocialworker' as FlagsEnum,\n Deptpsychology: 'deptpsychology' as FlagsEnum,\n Deptadministrative: 'deptadministrative' as FlagsEnum,\n Deptdietetics: 'deptdietetics' as FlagsEnum,\n Deptspeechtherapy: 'deptspeechtherapy' as FlagsEnum,\n Deptdentistry: 'deptdentistry' as FlagsEnum,\n Deptoccupationaltherapy: 'deptoccupationaltherapy' as FlagsEnum,\n Depthealthcare: 'depthealthcare' as FlagsEnum,\n Deptgynecology: 'deptgynecology' as FlagsEnum,\n Deptpediatry: 'deptpediatry' as FlagsEnum,\n Deptalgology: 'deptalgology' as FlagsEnum,\n Deptanatomopathology: 'deptanatomopathology' as FlagsEnum,\n Deptanesthesiology: 'deptanesthesiology' as FlagsEnum,\n Deptbacteriology: 'deptbacteriology' as FlagsEnum,\n Deptcardiacsurgery: 'deptcardiacsurgery' as FlagsEnum,\n Deptcardiology: 'deptcardiology' as FlagsEnum,\n Deptchildandadolescentpsychiatry: 'deptchildandadolescentpsychiatry' as FlagsEnum,\n Deptdermatology: 'deptdermatology' as FlagsEnum,\n Deptdiabetology: 'deptdiabetology' as FlagsEnum,\n Deptemergency: 'deptemergency' as FlagsEnum,\n Deptendocrinology: 'deptendocrinology' as FlagsEnum,\n Deptgastroenterology: 'deptgastroenterology' as FlagsEnum,\n Deptgenetics: 'deptgenetics' as FlagsEnum,\n Deptgeriatry: 'deptgeriatry' as FlagsEnum,\n Depthandsurgery: 'depthandsurgery' as FlagsEnum,\n Depthematology: 'depthematology' as FlagsEnum,\n Deptinfectiousdisease: 'deptinfectiousdisease' as FlagsEnum,\n Deptintensivecare: 'deptintensivecare' as FlagsEnum,\n Deptlaboratory: 'deptlaboratory' as FlagsEnum,\n Deptmajorburns: 'deptmajorburns' as FlagsEnum,\n Deptmaxillofacialsurgery: 'deptmaxillofacialsurgery' as FlagsEnum,\n Deptmedicine: 'deptmedicine' as FlagsEnum,\n Deptmolecularbiology: 'deptmolecularbiology' as FlagsEnum,\n Deptneonatalogy: 'deptneonatalogy' as FlagsEnum,\n Deptnephrology: 'deptnephrology' as FlagsEnum,\n Deptneurology: 'deptneurology' as FlagsEnum,\n Deptneurosurgery: 'deptneurosurgery' as FlagsEnum,\n Deptnte: 'deptnte' as FlagsEnum,\n Deptnuclear: 'deptnuclear' as FlagsEnum,\n Deptnutritiondietetics: 'deptnutritiondietetics' as FlagsEnum,\n Deptobstetrics: 'deptobstetrics' as FlagsEnum,\n Deptoncology: 'deptoncology' as FlagsEnum,\n Deptophtalmology: 'deptophtalmology' as FlagsEnum,\n Deptorthopedy: 'deptorthopedy' as FlagsEnum,\n Deptpalliativecare: 'deptpalliativecare' as FlagsEnum,\n Deptpediatricintensivecare: 'deptpediatricintensivecare' as FlagsEnum,\n Deptpediatricsurgery: 'deptpediatricsurgery' as FlagsEnum,\n Deptpharmacy: 'deptpharmacy' as FlagsEnum,\n Deptphysicalmedecine: 'deptphysicalmedecine' as FlagsEnum,\n Deptphysiotherapy: 'deptphysiotherapy' as FlagsEnum,\n Deptplasticandreparatorysurgery: 'deptplasticandreparatorysurgery' as FlagsEnum,\n Deptpneumology: 'deptpneumology' as FlagsEnum,\n Deptpodiatry: 'deptpodiatry' as FlagsEnum,\n Deptpsychiatry: 'deptpsychiatry' as FlagsEnum,\n Deptradiology: 'deptradiology' as FlagsEnum,\n Deptradiotherapy: 'deptradiotherapy' as FlagsEnum,\n Deptrevalidation: 'deptrevalidation' as FlagsEnum,\n Deptrheumatology: 'deptrheumatology' as FlagsEnum,\n Deptrhumatology: 'deptrhumatology' as FlagsEnum,\n Deptsenology: 'deptsenology' as FlagsEnum,\n Deptsocialservice: 'deptsocialservice' as FlagsEnum,\n Deptsportsmedecine: 'deptsportsmedecine' as FlagsEnum,\n Deptstomatology: 'deptstomatology' as FlagsEnum,\n Deptsurgery: 'deptsurgery' as FlagsEnum,\n Deptthoracicsurgery: 'deptthoracicsurgery' as FlagsEnum,\n Depttoxicology: 'depttoxicology' as FlagsEnum,\n Depttropicalmedecine: 'depttropicalmedecine' as FlagsEnum,\n Depturology: 'depturology' as FlagsEnum,\n Deptvascularsurgery: 'deptvascularsurgery' as FlagsEnum,\n Deptvisceraldigestiveabdominalsurgery: 'deptvisceraldigestiveabdominalsurgery' as FlagsEnum,\n Depttransplantsurgery: 'depttransplantsurgery' as FlagsEnum,\n Deptpercutaneous: 'deptpercutaneous' as FlagsEnum,\n Deptchildbirth: 'deptchildbirth' as FlagsEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * This entity represents available contact details of a user, reachable by telecom methods\n */\nexport class Telecom {\n constructor(json: JSON | any) {\n Object.assign(this as Telecom, json)\n }\n\n /**\n * The type of telecom method being used, ex: landline phone, mobile phone, email, fax, etc.\n */\n telecomType?: Telecom.TelecomTypeEnum\n telecomNumber?: string\n telecomDescription?: string\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace Telecom {\n export type TelecomTypeEnum =\n | 'mobile'\n | 'phone'\n | 'email'\n | 'fax'\n | 'skype'\n | 'im'\n | 'medibridge'\n | 'ehealthbox'\n | 'apicrypt'\n | 'web'\n | 'print'\n | 'disk'\n | 'other'\n | 'pager'\n export const TelecomTypeEnum = {\n Mobile: 'mobile' as TelecomTypeEnum,\n Phone: 'phone' as TelecomTypeEnum,\n Email: 'email' as TelecomTypeEnum,\n Fax: 'fax' as TelecomTypeEnum,\n Skype: 'skype' as TelecomTypeEnum,\n Im: 'im' as TelecomTypeEnum,\n Medibridge: 'medibridge' as TelecomTypeEnum,\n Ehealthbox: 'ehealthbox' as TelecomTypeEnum,\n Apicrypt: 'apicrypt' as TelecomTypeEnum,\n Web: 'web' as TelecomTypeEnum,\n Print: 'print' as TelecomTypeEnum,\n Disk: 'disk' as TelecomTypeEnum,\n Other: 'other' as TelecomTypeEnum,\n Pager: 'pager' as TelecomTypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\n/**\n * A high frequency time-series containing the ts in ms from the start (double) and the values\n */\nexport class TimeSeries {\n constructor(json: JSON | any) {\n Object.assign(this as TimeSeries, json)\n }\n\n fields?: Array\n samples?: Array>\n min?: Array\n max?: Array\n mean?: Array\n median?: Array\n variance?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { Delegation } from './Delegation'\nimport { TimeTableItem } from './TimeTableItem'\n\nexport class TimeTable {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTable, json)\n }\n\n id?: string\n rev?: string\n /**\n * The timestamp (unix epoch in ms) of creation of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n created?: number\n /**\n * The date (unix epoch in ms) of the latest modification of this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n modified?: number\n /**\n * The id of the User that has created this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n author?: string\n /**\n * The id of the HealthcareParty that is responsible for this entity, will be filled automatically if missing. Not enforced by the application server.\n */\n responsible?: string\n /**\n * The id of the medical location where this entity was created.\n */\n medicalLocationId?: string\n /**\n * A tag is an item from a codification system that qualifies an entity as being member of a certain class, whatever the value it might have taken. If the tag qualifies the content of a field, it means that whatever the content of the field, the tag will always apply. For example, the label of a field is qualified using a tag. LOINC is a codification system typically used for tags.\n */\n tags?: Array\n /**\n * A code is an item from a codification system that qualifies the content of this entity. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n codes?: Array\n /**\n * Soft delete (unix epoch in ms) timestamp of the object.\n */\n endOfLife?: number\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n name?: string\n agendaId?: string\n startTime?: number\n endTime?: number\n items?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find all contacts for a specific patient. These keys are in clear. You can have several to partition the medical document space.\n */\n secretForeignKeys?: Array\n /**\n * The secretForeignKeys are filled at the to many end of a one to many relationship (for example inside Contact for the Patient -> Contacts relationship). Used when we want to find the patient for a specific contact. These keys are the encrypted id (using the hcParty key for the delegate) that can be found in clear inside the patient. ids encrypted using the hcParty keys.\n */\n cryptedForeignKeys?: { [key: string]: Array }\n /**\n * When a document is created, the responsible generates a cryptographically random master key (never to be used for something else than referencing from other entities). He/she encrypts it using his own AES exchange key and stores it as a delegation. The responsible is thus always in the delegations as well\n */\n delegations?: { [key: string]: Array }\n /**\n * When a document needs to be encrypted, the responsible generates a cryptographically random master key (different from the delegation key, never to appear in clear anywhere in the db. He/she encrypts it using his own AES exchange key and stores it as a delegation\n */\n encryptionKeys?: { [key: string]: Array }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TimeTableHour {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTableHour, json)\n }\n\n startHour?: number\n endHour?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { TimeTableHour } from './TimeTableHour'\n\nexport class TimeTableItem {\n constructor(json: JSON | any) {\n Object.assign(this as TimeTableItem, json)\n }\n\n rruleStartDate?: number\n rrule?: string\n days?: Array\n recurrenceTypes?: Array\n hours?: Array\n calendarItemTypeId?: string\n homeVisit?: boolean\n placeId?: string\n publicTimeTableItem?: boolean\n acceptsNewPatient?: boolean\n unavailable?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TokenWithGroup {\n constructor(json: JSON | any) {\n Object.assign(this as TokenWithGroup, json)\n }\n\n token?: string\n groupId?: string\n groupName?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class TypedValueObject {\n constructor(json: JSON | any) {\n Object.assign(this as TypedValueObject, json)\n }\n\n type?: TypedValueObject.TypeEnum\n booleanValue?: boolean\n integerValue?: number\n doubleValue?: number\n stringValue?: string\n dateValue?: number\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\nexport namespace TypedValueObject {\n export type TypeEnum = 'BOOLEAN' | 'INTEGER' | 'DOUBLE' | 'STRING' | 'DATE' | 'CLOB' | 'JSON'\n export const TypeEnum = {\n BOOLEAN: 'BOOLEAN' as TypeEnum,\n INTEGER: 'INTEGER' as TypeEnum,\n DOUBLE: 'DOUBLE' as TypeEnum,\n STRING: 'STRING' as TypeEnum,\n DATE: 'DATE' as TypeEnum,\n CLOB: 'CLOB' as TypeEnum,\n JSON: 'JSON' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Unit {\n constructor(json: JSON | any) {\n Object.assign(this as Unit, json)\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AuthenticationToken } from './AuthenticationToken'\nimport { Permission } from './Permission'\nimport { PropertyStub } from './PropertyStub'\n\n/**\n * This entity is a root level object. It represents an user that can log in to the iCure platform. It is serialized in JSON and saved in the underlying icure-base CouchDB database.\n */\nexport class User {\n constructor(json: JSON | any) {\n Object.assign(this as User, json)\n }\n\n /**\n * the Id of the user. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the user in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n created?: number\n /**\n * Last name of the user. This is the official last name that should be used for official administrative purposes.\n */\n name?: string\n /**\n * Extra properties for the user. Those properties are typed (see class Property)\n */\n properties?: Array\n /**\n * If permission to modify patient data is granted or revoked\n */\n permissions?: Array\n /**\n * Roles specified for the user\n */\n roles?: Array\n /**\n * Authorization source for user. 'Database', 'ldap' or 'token'\n */\n type?: User.TypeEnum\n /**\n * State of user's activeness: 'Active', 'Disabled' or 'Registering'\n */\n status?: User.StatusEnum\n /**\n * Username for this user. We encourage using an email address\n */\n login?: string\n /**\n * Hashed version of the password (BCrypt is used for hashing)\n */\n passwordHash?: string\n /**\n * Secret token used to verify 2fa\n */\n secret?: string\n /**\n * Whether the user has activated two factors authentication\n */\n use2fa?: boolean\n /**\n * id of the group (practice/hospital) the user is member of\n */\n groupId?: string\n /**\n * Id of the healthcare party if the user is a healthcare party.\n */\n healthcarePartyId?: string\n /**\n * Id of the patient if the user is a patient\n */\n patientId?: string\n /**\n * Id of the device if the user is a device\n */\n deviceId?: string\n /**\n * Delegations that are automatically generated client side when a new database object is created by this user\n */\n autoDelegations?: { [key in User.AutoDelegationTagEnum]?: Array }\n /**\n * the timestamp (unix epoch in ms) of creation of the user, will be filled automatically if missing. Not enforced by the application server.\n */\n createdDate?: number\n /**\n * the timestamp (unix epoch in ms) of the latest validation of the terms of use of the application\n */\n termsOfUseDate?: number\n /**\n * email address of the user (used for token exchange or password recovery).\n */\n email?: string\n /**\n * mobile phone of the user (used for token exchange or password recovery).\n */\n mobilePhone?: string\n applicationTokens?: { [key: string]: string }\n /**\n * Encrypted and time-limited Authentication tokens used for inter-applications authentication\n */\n authenticationTokens?: { [key: string]: AuthenticationToken }\n}\nexport namespace User {\n export type TypeEnum = 'database' | 'ldap' | 'token'\n export const TypeEnum = {\n Database: 'database' as TypeEnum,\n Ldap: 'ldap' as TypeEnum,\n Token: 'token' as TypeEnum,\n }\n export type StatusEnum = 'ACTIVE' | 'DISABLED' | 'REGISTERING'\n export const StatusEnum = {\n ACTIVE: 'ACTIVE' as StatusEnum,\n DISABLED: 'DISABLED' as StatusEnum,\n REGISTERING: 'REGISTERING' as StatusEnum,\n }\n export type AutoDelegationTagEnum =\n | 'all'\n | 'administrativeData'\n | 'generalInformation'\n | 'financialInformation'\n | 'medicalInformation'\n | 'sensitiveInformation'\n | 'confidentialInformation'\n | 'cdItemRisk'\n | 'cdItemFamilyRisk'\n | 'cdItemHealthcareelement'\n | 'cdItemHealthcareapproach'\n | 'cdItemAllergy'\n | 'cdItemDiagnosis'\n | 'cdItemLab'\n | 'cdItemResult'\n | 'cdItemParameter'\n | 'cdItemMedication'\n | 'cdItemTreatment'\n | 'cdItemVaccine'\n export const AutoDelegationTagEnum = {\n all: 'all' as AutoDelegationTagEnum,\n administrativeData: 'administrativeData' as AutoDelegationTagEnum,\n generalInformation: 'generalInformation' as AutoDelegationTagEnum,\n financialInformation: 'financialInformation' as AutoDelegationTagEnum,\n medicalInformation: 'medicalInformation' as AutoDelegationTagEnum,\n sensitiveInformation: 'sensitiveInformation' as AutoDelegationTagEnum,\n confidentialInformation: 'confidentialInformation' as AutoDelegationTagEnum,\n cdItemRisk: 'cdItemRisk' as AutoDelegationTagEnum,\n cdItemFamilyRisk: 'cdItemFamilyRisk' as AutoDelegationTagEnum,\n cdItemHealthcareelement: 'cdItemHealthcareelement' as AutoDelegationTagEnum,\n cdItemHealthcareapproach: 'cdItemHealthcareapproach' as AutoDelegationTagEnum,\n cdItemAllergy: 'cdItemAllergy' as AutoDelegationTagEnum,\n cdItemDiagnosis: 'cdItemDiagnosis' as AutoDelegationTagEnum,\n cdItemLab: 'cdItemLab' as AutoDelegationTagEnum,\n cdItemResult: 'cdItemResult' as AutoDelegationTagEnum,\n cdItemParameter: 'cdItemParameter' as AutoDelegationTagEnum,\n cdItemMedication: 'cdItemMedication' as AutoDelegationTagEnum,\n cdItemTreatment: 'cdItemTreatment' as AutoDelegationTagEnum,\n cdItemVaccine: 'cdItemVaccine' as AutoDelegationTagEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { HealthcareParty } from './HealthcareParty'\nimport { User } from './User'\n\n/**\n * This entity embeds a User and its linked Healthcare Party.\n */\nexport class UserAndHealthcareParty {\n constructor(json: JSON | any) {\n Object.assign(this as UserAndHealthcareParty, json)\n }\n\n user?: User\n healthcareParty?: HealthcareParty\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Group } from './Group'\n\nexport class UserGroup {\n constructor(json: JSON | any) {\n Object.assign(this as UserGroup, json)\n }\n\n groupId?: string\n groupName?: string\n groupsHierarchy?: Array\n userId?: string\n login?: string\n name?: string\n email?: string\n phone?: string\n patientId?: string\n healthcarePartyId?: string\n deviceId?: string\n nameOfParentOfTopmostGroupInHierarchy?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class Valorisation {\n constructor(json: JSON | any) {\n Object.assign(this as Valorisation, json)\n }\n\n startOfValidity?: number\n endOfValidity?: number\n predicate?: string\n totalAmount?: number\n reimbursement?: number\n patientIntervention?: number\n doctorSupplement?: number\n vat?: number\n label?: { [key: string]: string }\n /**\n * The base64 encoded data of this object, formatted as JSON and encrypted in AES using the random master key from encryptionKeys.\n */\n encryptedSelf?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AddedDocument } from './AddedDocument'\n\nexport class Verse {\n constructor(json: JSON | any) {\n Object.assign(this as Verse, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n chapterName?: string\n paragraphName?: string\n verseSeq?: number\n startDate?: number\n createdTms?: number\n createdUserId?: string\n endDate?: number\n verseNum?: number\n verseSeqParent?: number\n verseLevel?: number\n verseType?: string\n checkBoxInd?: string\n minCheckNum?: number\n andClauseNum?: number\n textFr?: string\n textNl?: string\n requestType?: string\n agreementTerm?: number\n agreementTermUnit?: string\n maxPackageNumber?: number\n purchasingAdvisorQualList?: string\n legalReference?: string\n modificationDate?: number\n addedDocuments?: Array\n agreementYearMax?: number\n agreementRenewalMax?: number\n sexRestricted?: string\n minimumAgeAuthorized?: number\n maximumAgeAuthorized?: number\n maximumContentQuantity?: number\n maximumContentUnit?: string\n maximumStrengthQuantity?: number\n maximumStrengthUnit?: string\n maximumDurationQuantity?: number\n maximumDurationUnit?: string\n otherAddedDocumentInd?: string\n minimumAgeAuthorizedUnit?: string\n maximumAgeAuthorizedUnit?: string\n modificationStatus?: string\n children?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\nimport { SamText } from './SamText'\n\nexport class VirtualForm {\n constructor(json: JSON | any) {\n Object.assign(this as VirtualForm, json)\n }\n\n name?: SamText\n standardForms?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { StrengthRange } from './StrengthRange'\nimport { SubstanceStub } from './SubstanceStub'\n\nexport class VirtualIngredient {\n constructor(json: JSON | any) {\n Object.assign(this as VirtualIngredient, json)\n }\n\n from?: number\n to?: number\n rank?: number\n type?: VirtualIngredient.TypeEnum\n strengthRange?: StrengthRange\n substance?: SubstanceStub\n}\nexport namespace VirtualIngredient {\n export type TypeEnum = 'ACTIVE_SUBSTANCE' | 'EXCIPIENT'\n export const TypeEnum = {\n ACTIVESUBSTANCE: 'ACTIVE_SUBSTANCE' as TypeEnum,\n EXCIPIENT: 'EXCIPIENT' as TypeEnum,\n }\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CommentedClassification } from './CommentedClassification'\nimport { SamText } from './SamText'\nimport { VmpComponent } from './VmpComponent'\nimport { VmpGroupStub } from './VmpGroupStub'\nimport { Vtm } from './Vtm'\nimport { Wada } from './Wada'\n\nexport class Vmp {\n constructor(json: JSON | any) {\n Object.assign(this as Vmp, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n code?: string\n vmpGroup?: VmpGroupStub\n name?: SamText\n abbreviation?: SamText\n vtm?: Vtm\n wadas?: Array\n components?: Array\n commentedClassifications?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { RouteOfAdministration } from './RouteOfAdministration'\nimport { SamText } from './SamText'\nimport { VirtualForm } from './VirtualForm'\nimport { VirtualIngredient } from './VirtualIngredient'\n\nexport class VmpComponent {\n constructor(json: JSON | any) {\n Object.assign(this as VmpComponent, json)\n }\n\n code?: string\n virtualForm?: VirtualForm\n routeOfAdministrations?: Array\n name?: SamText\n phaseNumber?: number\n virtualIngredients?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { NoGenericPrescriptionReason } from './NoGenericPrescriptionReason'\nimport { NoSwitchReason } from './NoSwitchReason'\nimport { SamText } from './SamText'\n\nexport class VmpGroup {\n constructor(json: JSON | any) {\n Object.assign(this as VmpGroup, json)\n }\n\n id?: string\n rev?: string\n /**\n * hard delete (unix epoch in ms) timestamp of the object. Filled automatically when deletePatient is called.\n */\n deletionDate?: number\n from?: number\n to?: number\n productId?: string\n code?: string\n name?: SamText\n noGenericPrescriptionReason?: NoGenericPrescriptionReason\n noSwitchReason?: NoSwitchReason\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class VmpGroupStub {\n constructor(json: JSON | any) {\n Object.assign(this as VmpGroupStub, json)\n }\n\n id?: string\n code?: string\n name?: SamText\n productId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\nimport { VmpGroupStub } from './VmpGroupStub'\n\nexport class VmpStub {\n constructor(json: JSON | any) {\n Object.assign(this as VmpStub, json)\n }\n\n id?: string\n code?: string\n vmpGroup?: VmpGroupStub\n name?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Vtm {\n constructor(json: JSON | any) {\n Object.assign(this as Vtm, json)\n }\n\n from?: number\n to?: number\n code?: string\n name?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { SamText } from './SamText'\n\nexport class Wada {\n constructor(json: JSON | any) {\n Object.assign(this as Wada, json)\n }\n\n code?: string\n name?: SamText\n description?: SamText\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CodeStub } from './CodeStub'\n\nexport class Weekday {\n constructor(json: JSON | any) {\n Object.assign(this as Weekday, json)\n }\n\n weekday?: CodeStub\n weekNumber?: number\n}\n","import { AccessLog } from './AccessLog'\nimport { Article } from './Article'\nimport { Classification } from './Classification'\nimport { Document } from './Document'\nimport { HealthElement } from './HealthElement'\nimport { Invoice } from './Invoice'\nimport { Form } from './Form'\nimport { Contact } from './Contact'\nimport { CalendarItem } from './CalendarItem'\nimport { MaintenanceTask } from './MaintenanceTask'\nimport { Message } from './Message'\nimport { Receipt } from './Receipt'\nimport { Patient } from './Patient'\nimport { Delegation } from './Delegation'\n\nexport * from './AbstractFilterCode'\nexport * from './AbstractFilterContact'\nexport * from './AbstractFilterDevice'\nexport * from './AbstractFilterHealthElement'\nexport * from './AbstractFilterHealthcareParty'\nexport * from './AbstractFilterInvoice'\nexport * from './AbstractFilterMaintenanceTask'\nexport * from './AbstractFilterPatient'\nexport * from './AbstractFilterService'\nexport * from './AbstractFilterUser'\nexport * from './AccessLog'\nexport * from './AddedDocument'\nexport * from './Address'\nexport * from './AdministrationQuantity'\nexport * from './Agenda'\nexport * from './AgreementAppendix'\nexport * from './Amp'\nexport * from './AmpComponent'\nexport * from './Ampp'\nexport * from './AmppComponent'\nexport * from './Annotation'\nexport * from './ApplicationSettings'\nexport * from './AppointmentTypeAndPlace'\nexport * from './Article'\nexport * from './Atc'\nexport * from './AttachmentMetadata'\nexport * from './AuthenticationResponse'\nexport * from './AuthenticationToken'\nexport * from './Basic'\nexport * from './Body'\nexport * from './BulkAttachmentUpdateOptions'\nexport * from './CalendarItem'\nexport * from './CalendarItemTag'\nexport * from './CalendarItemType'\nexport * from './CareTeamMember'\nexport * from './CareTeamMembership'\nexport * from './CheckSMFPatientResult'\nexport * from './Classification'\nexport * from './ClassificationTemplate'\nexport * from './Code'\nexport * from './CodeStub'\nexport * from './CodeType'\nexport * from './CommentedClassification'\nexport * from './Commercialization'\nexport * from './Company'\nexport * from './Contact'\nexport * from './Content'\nexport * from './Copayment'\nexport * from './Data'\nexport * from './DataAttachment'\nexport * from './DataOwnerRegistrationSuccess'\nexport * from './DataOwnerWithType'\nexport * from './DatabaseInfo'\nexport * from './DatabaseInitialisation'\nexport * from './DatabaseSynchronization'\nexport * from './Delegation'\nexport * from './DeletedAttachment'\nexport * from './Device'\nexport * from './DeviceType'\nexport * from './DiaryNoteExportInfo'\nexport * from './Dmpp'\nexport * from './DocIdentifier'\nexport * from './Document'\nexport * from './DocumentGroup'\nexport * from './DocumentTemplate'\nexport * from './Duration'\nexport * from './EIDItem'\nexport * from './Editor'\nexport * from './EfactInvoice'\nexport * from './Employer'\nexport * from './EmploymentInfo'\nexport * from './EntityReference'\nexport * from './EntityTemplate'\nexport * from './Episode'\nexport * from './FilterChainCode'\nexport * from './FilterChainContact'\nexport * from './FilterChainDevice'\nexport * from './FilterChainHealthElement'\nexport * from './FilterChainHealthcareParty'\nexport * from './FilterChainInvoice'\nexport * from './FilterChainMaintenanceTask'\nexport * from './FilterChainPatient'\nexport * from './FilterChainService'\nexport * from './FilterChainUser'\nexport * from './FinancialInstitutionInformation'\nexport * from './FlatRateTarification'\nexport * from './FlowItem'\nexport * from './Form'\nexport * from './FormColumn'\nexport * from './FormDataOption'\nexport * from './FormLayout'\nexport * from './FormLayoutData'\nexport * from './FormPlanning'\nexport * from './FormSection'\nexport * from './FormTemplate'\nexport * from './FormTemplateLayout'\nexport * from './Formula'\nexport * from './FrontEndMigration'\nexport * from './Group'\nexport * from './GroupDatabasesInfo'\nexport * from './GuiCode'\nexport * from './GuiCodeType'\nexport * from './GroupDeletionReport'\nexport * from './HealthElement'\nexport * from './HealthcareParty'\nexport * from './HealthcarePartyHistoryStatus'\nexport * from './IcureStub'\nexport * from './IdWithRev'\nexport * from './Identifier'\nexport * from './IdentityDocumentReader'\nexport * from './ImportMapping'\nexport * from './ImportResult'\nexport * from './IncapacityExportInfo'\nexport * from './IndexingInfo'\nexport * from './Ingredient'\nexport * from './Insurability'\nexport * from './Insurance'\nexport * from './Invoice'\nexport * from './InvoiceItem'\nexport * from './InvoiceSender'\nexport * from './InvoicesBatch'\nexport * from './InvoicingCode'\nexport * from './Keyword'\nexport * from './KeywordSubword'\nexport * from './LabelledOccurence'\nexport * from './LetterValue'\nexport * from './ListOfIds'\nexport * from './ListOfProperties'\nexport * from './LoginCredentials'\nexport * from './MaintenanceTask'\nexport * from './MapOfIds'\nexport * from './Measure'\nexport * from './MedexInfo'\nexport * from './MedicalHouseContract'\nexport * from './MedicalLocation'\nexport * from './Medication'\nexport * from './MedicationSchemeExportInfo'\nexport * from './Medicinalproduct'\nexport * from './Message'\nexport * from './MessageReadStatus'\nexport * from './MessageWithBatch'\nexport * from './MessagesReadStatusUpdate'\nexport * from './MimeAttachment'\nexport * from './Nmp'\nexport * from './NoGenericPrescriptionReason'\nexport * from './NoSwitchReason'\nexport * from './NumeratorRange'\nexport * from './PackagingType'\nexport * from './PaginatedDocumentKeyIdPairObject'\nexport * from './PaginatedListAccessLog'\nexport * from './PaginatedListAmp'\nexport * from './PaginatedListClassification'\nexport * from './PaginatedListClassificationTemplate'\nexport * from './PaginatedListCode'\nexport * from './PaginatedListContact'\nexport * from './PaginatedListDevice'\nexport * from './PaginatedListDocument'\nexport * from './PaginatedListEntityTemplate'\nexport * from './PaginatedListForm'\nexport * from './PaginatedListGroup'\nexport * from './PaginatedListHealthElement'\nexport * from './PaginatedListHealthcareParty'\nexport * from './PaginatedListInvoice'\nexport * from './PaginatedListMaintenanceTask'\nexport * from './PaginatedListMessage'\nexport * from './PaginatedListNmp'\nexport * from './PaginatedListPatient'\nexport * from './PaginatedListService'\nexport * from './PaginatedListString'\nexport * from './PaginatedListTarification'\nexport * from './PaginatedListUser'\nexport * from './PaginatedListVmp'\nexport * from './PaginatedListVmpGroup'\nexport * from './Paragraph'\nexport * from './ParagraphAgreement'\nexport * from './Part'\nexport * from './Partnership'\nexport * from './Patient'\nexport * from './PatientHealthCareParty'\nexport * from './Payment'\nexport * from './Periodicity'\nexport * from './Permission'\nexport * from './PermissionItem'\nexport * from './PersonName'\nexport * from './PharmaceuticalForm'\nexport * from './PharmaceuticalFormStub'\nexport * from './Place'\nexport * from './PlanOfAction'\nexport * from './Predicate'\nexport * from './Pricing'\nexport * from './PropertyStub'\nexport * from './PropertyTypeStub'\nexport * from './PublicKey'\nexport * from './Quantity'\nexport * from './Receipt'\nexport * from './ReferralPeriod'\nexport * from './RegimenItem'\nexport * from './RegistrationInformation'\nexport * from './RegistrationSuccess'\nexport * from './Reimbursement'\nexport * from './ReimbursementCriterion'\nexport * from './Remote'\nexport * from './RemoteAuthentication'\nexport * from './Renewal'\nexport * from './Replication'\nexport * from './ReplicateCommand'\nexport * from './ReplicationInfo'\nexport * from './ReplicationStats'\nexport * from './ReplicatorDocument'\nexport * from './ReplicatorResponse'\nexport * from './ResultInfo'\nexport * from './Right'\nexport * from './RouteOfAdministration'\nexport * from './SamText'\nexport * from './SamVersion'\nexport * from './SchoolingInfo'\nexport * from './Section'\nexport * from './Service'\nexport * from './ServiceLink'\nexport * from './SoftwareMedicalFileExport'\nexport * from './StandardSubstance'\nexport * from './StrengthRange'\nexport * from './StructureElement'\nexport * from './SubContact'\nexport * from './Substance'\nexport * from './SubstanceStub'\nexport * from './Substanceproduct'\nexport * from './Suggest'\nexport * from './SumehrContent'\nexport * from './SumehrExportInfo'\nexport * from './SumehrValidity'\nexport * from './SupplyProblem'\nexport * from './Suspension'\nexport * from './Tag'\nexport * from './Tarification'\nexport * from './Telecom'\nexport * from './TimeSeries'\nexport * from './TimeTable'\nexport * from './TimeTableHour'\nexport * from './TimeTableItem'\nexport * from './TokenWithGroup'\nexport * from './TypedValueObject'\nexport * from './Unit'\nexport * from './User'\nexport * from './UserAndHealthcareParty'\nexport * from './UserGroup'\nexport * from './Valorisation'\nexport * from './Verse'\nexport * from './VirtualForm'\nexport * from './VirtualIngredient'\nexport * from './Vmp'\nexport * from './VmpComponent'\nexport * from './VmpGroup'\nexport * from './VmpGroupStub'\nexport * from './VmpStub'\nexport * from './Vtm'\nexport * from './Wada'\nexport * from './Weekday'\n\nexport type EncryptedEntity =\n | AccessLog\n | Article\n | CalendarItem\n | Classification\n | Contact\n | Document\n | Form\n | HealthElement\n | Invoice\n | MaintenanceTask\n | Message\n | Patient\n | Receipt\n\nexport type EncryptedEntityStub = {\n secretForeignKeys?: Array\n cryptedForeignKeys?: { [key: string]: Delegation[] }\n delegations?: { [key: string]: Delegation[] }\n encryptionKeys?: { [key: string]: Delegation[] }\n encryptedSelf?: string\n}\n\nexport type EncryptedParentEntity = Message | Patient\n","import { AuthService } from './AuthService'\nimport { IccAuthApi, OAuthThirdParty } from '../../icc-api'\nimport { EnsembleAuthService } from './EnsembleAuthService'\nimport { JwtBridgedAuthService } from './JwtBridgedAuthService'\nimport { NoAuthService } from './NoAuthService'\nimport { BasicAuthService } from './BasicAuthService'\nimport { JwtAuthService } from './JwtAuthService'\nimport { UserGroup } from '../../icc-api/model/UserGroup'\n\n/**\n * @internal you should not instantiate implementations of this interface directly.\n */\nexport interface AuthenticationProvider {\n /**\n * @internal this method is meant for internal use only and may be changed without notice\n */\n getAuthService(): AuthService\n\n /**\n * @internal this method is meant for internal use only and may be changed without notice\n * Gives a new authentication provider for the same user and authentication method but for a different iCure group\n * @param newGroupId id of the new group to switch to\n * @param matches the list of groups the user is in, containing also the group-specific id of the user. Note that users with same login username but\n * different password are considered as if they are different users and should not appear in these matches. You can get this list by calling\n * {@link IccUserApi.getMatchingUsers} authenticated.\n * @return a new authentication provider\n */\n switchGroup(newGroupId: string, matches: Array): Promise\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined>\n}\n\nexport class EnsembleAuthenticationProvider implements AuthenticationProvider {\n private readonly basicAuth: BasicAuthService\n private jwtAuth: JwtAuthService | JwtBridgedAuthService\n private suspensionEnd: Date | undefined\n\n constructor(\n private readonly authApi: IccAuthApi,\n private readonly username: string,\n private readonly password: string,\n private readonly jwtTimeout: number = 3600,\n jwtAuth?: JwtAuthService | JwtBridgedAuthService,\n basicAuth?: BasicAuthService,\n thirdPartyTokens: { [thirdParty: string]: string } = {}\n ) {\n this.jwtAuth = jwtAuth ?? new JwtBridgedAuthService(this.authApi, this.username, this.password)\n this.basicAuth = basicAuth ?? new BasicAuthService(this.username, this.password)\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.jwtAuth.getIcureTokens()\n }\n\n getAuthService(): AuthService {\n // If the jwtAuth is in an error state, it instantiates a new one,\n // but it will not use it until the suspension ends\n if (this.jwtAuth.isInErrorState()) {\n console.warn('Error state in JWT, I will skip it')\n this.jwtAuth = new JwtBridgedAuthService(this.authApi, this.username, this.password)\n this.suspensionEnd = new Date(new Date().getTime() + this.jwtTimeout * 1000)\n }\n\n return !!this.suspensionEnd && new Date() <= this.suspensionEnd\n ? new EnsembleAuthService(null, new NoAuthService(), this.basicAuth)\n : new EnsembleAuthService(this.jwtAuth, new NoAuthService(), this.basicAuth)\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n const switchInfo = await switchJwtAuth(this.authApi, this.jwtAuth, this.username, this.password, newGroupId, matches)\n return new EnsembleAuthenticationProvider(\n this.authApi,\n switchInfo.loginForGroup,\n this.password,\n this.jwtTimeout,\n switchInfo.switchedJwtAuth,\n new BasicAuthService(switchInfo.loginForGroup, this.password)\n )\n }\n}\n\nexport class JwtAuthenticationProvider implements AuthenticationProvider {\n getIcureTokens(): Promise<{ token: string; refreshToken: string }> {\n return Promise.resolve({ refreshToken: '', token: '' })\n }\n\n private readonly jwtAuth: JwtAuthService | JwtBridgedAuthService\n\n /**\n * @internal\n * @param authApi\n * @param username\n * @param password\n * @param jwtAuth\n * @param icureToken\n */\n constructor(\n private readonly authApi: IccAuthApi,\n private readonly username?: string,\n private readonly password?: string,\n jwtAuth?: JwtAuthService | JwtBridgedAuthService,\n private readonly icureToken?: { token: string; refreshToken: string }\n ) {\n const composedAuth =\n jwtAuth ??\n (icureToken\n ? new JwtAuthService(authApi, { authJwt: icureToken.token, refreshJwt: icureToken.refreshToken })\n : !!username && !!password\n ? new JwtBridgedAuthService(authApi, username!, password!)\n : undefined)\n if (!composedAuth) {\n throw new Error('No authentication method provided')\n }\n this.jwtAuth = composedAuth\n }\n\n getAuthService(): AuthService {\n return this.jwtAuth\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n const switchInfo = await switchJwtAuth(this.authApi, this.jwtAuth, this.username, this.password, newGroupId, matches)\n return new JwtAuthenticationProvider(this.authApi, switchInfo.loginForGroup, this.password, switchInfo.switchedJwtAuth)\n }\n}\n\nexport class BasicAuthenticationProvider implements AuthenticationProvider {\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return Promise.resolve() as Promise\n }\n\n constructor(private username: string, private password: string) {}\n\n getAuthService(): AuthService {\n return new BasicAuthService(this.username, this.password)\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n return Promise.resolve(new BasicAuthenticationProvider(loginForGroup(newGroupId, matches), this.password))\n }\n}\n\nexport class NoAuthenticationProvider implements AuthenticationProvider {\n getAuthService(): AuthService {\n return new NoAuthService()\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return Promise.resolve() as Promise\n }\n\n async switchGroup(newGroupId: string, matches: Array): Promise {\n return this\n }\n}\n\n/**\n * @internal\n */\nfunction loginForGroup(groupId: string, matches: Array): string {\n const matchForGroup = matches.find((x) => x.groupId === groupId)\n if (!matchForGroup?.userId) {\n throw new Error(`Can't switch to group ${groupId} for the current user.`)\n }\n return `${groupId}/${matchForGroup.userId}`\n}\n\n/**\n * @internal\n * Creates a jwtAuth from an existing one in order to switch group\n */\nasync function switchJwtAuth(\n authApi: IccAuthApi,\n jwtAuth: JwtAuthService | JwtBridgedAuthService,\n username: string | undefined,\n password: string | undefined,\n newGroupId: string,\n matches: Array\n): Promise<{ loginForGroup: string; switchedJwtAuth: JwtAuthService | JwtBridgedAuthService }> {\n const refreshToken = jwtAuth.isInErrorState() ? undefined : await jwtAuth.refreshToken\n const switchedJwtInfo = refreshToken ? await authApi.switchGroup(refreshToken, newGroupId).catch(() => undefined as any) : undefined\n const updatedLogin = loginForGroup(newGroupId, matches)\n const switchedJwtAuth =\n !!username && !!password\n ? new JwtBridgedAuthService(\n authApi,\n updatedLogin,\n password,\n switchedJwtInfo?.token && switchedJwtInfo?.refreshToken\n ? { authJwt: switchedJwtInfo.token, refreshJwt: switchedJwtInfo.refreshToken }\n : undefined\n )\n : new JwtAuthService(\n authApi,\n switchedJwtInfo?.token && switchedJwtInfo?.refreshToken\n ? { authJwt: switchedJwtInfo.token, refreshJwt: switchedJwtInfo.refreshToken }\n : undefined\n )\n return { loginForGroup: updatedLogin, switchedJwtAuth }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport Header = XHR.Header\nimport { b2a } from '../utils'\n\nexport class BasicAuthService implements AuthService {\n private error: Error | null = null\n\n constructor(private username: string, private password: string) {}\n\n getAuthHeaders(): Promise> {\n if (!!this.error) {\n throw this.error\n }\n return Promise.resolve([new Header('Authorization', `Basic ${this._base64Encode(`${this.username}:${this.password}`)}`)])\n }\n\n private _base64Encode(decodedString: string): string {\n return b2a(decodedString)\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { JwtBridgedAuthService } from './JwtBridgedAuthService'\nimport { NoAuthService } from './NoAuthService'\nimport { BasicAuthService } from './BasicAuthService'\nimport Header = XHR.Header\nimport XHRError = XHR.XHRError\nimport { JwtAuthService } from './JwtAuthService'\n\nexport class EnsembleAuthService implements AuthService {\n private currentState: string | null\n private error: Error | null = null\n private stateMap: { [key: string]: { state: AuthService | null; next: string | null } }\n\n constructor(\n private readonly jwtAuth: JwtBridgedAuthService | JwtAuthService | null,\n private readonly sessionAuth: NoAuthService,\n private readonly basicAuth: BasicAuthService\n ) {\n this.stateMap = {\n start: { state: null, next: 'jwt' },\n jwt: { state: this.jwtAuth, next: 'session' },\n session: { state: this.sessionAuth, next: 'basic' },\n basic: { state: this.basicAuth, next: null },\n }\n this.currentState = 'start'\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.jwtAuth?.getIcureTokens() ?? (Promise.resolve() as Promise)\n }\n\n async getAuthHeaders(): Promise> {\n this.currentState = !!this.currentState ? this.stateMap[this.currentState].next : this.currentState\n\n if (!!this.currentState) {\n // If I have a state I return the headers, otherwise I return empty headers\n // And delegate the responsibility of handling the error to the next call\n return !!this.stateMap[this.currentState].state\n ? this.stateMap[this.currentState].state!.getAuthHeaders().catch((e) => {\n if (e instanceof XHRError && e.statusCode === 417) {\n throw e\n }\n // If I get an error, it is also responsibility of the next call, but I give a warning\n console.warn(e.message)\n this.error = e\n\n return []\n })\n : Promise.resolve([])\n } else if (!!this.error) {\n // If I have no more states, I throw the last error or a default one\n throw this.error\n } else {\n throw new Error('Cannot authenticate')\n }\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n if (!!this.currentState) {\n this.stateMap[this.currentState].state?.invalidateHeader(error)\n }\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { IccAuthApi, OAuthThirdParty } from '../../icc-api'\nimport { LoginCredentials } from '../../icc-api/model/LoginCredentials'\nimport Header = XHR.Header\nimport { a2b } from '../utils'\nimport { AuthenticationResponse } from '../../icc-api/model/AuthenticationResponse'\nimport XHRError = XHR.XHRError\n\nexport class JwtAuthService implements AuthService {\n private _error: Error | null = null\n private _currentPromise: Promise<{ authJwt: string; refreshJwt: string } | undefined> = Promise.resolve(undefined as any)\n\n constructor(private readonly authApi: IccAuthApi, initialJwt?: { authJwt: string; refreshJwt: string }) {\n if (!!initialJwt) {\n this._currentPromise = Promise.resolve(initialJwt)\n }\n }\n\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this._currentPromise.then((x) => (x ? { token: x.authJwt, refreshToken: x.refreshJwt } : undefined) as any)\n }\n\n get refreshToken(): Promise {\n return this._currentPromise.then((x) => x?.refreshJwt as any)\n }\n\n async getAuthHeaders(): Promise> {\n return this._currentPromise\n .then((x) => {\n const authJwt = x?.authJwt\n const refreshJwt = x?.refreshJwt\n\n if ((!authJwt || this._isJwtExpired(authJwt)) && refreshJwt) {\n // If it does not have the JWT, tries to get it\n // If the JWT is expired, tries to refresh it\n\n this._currentPromise = this._refreshAuthJwt(refreshJwt).then((updatedTokens) => {\n // If here the token is null,\n // it goes in a suspension status\n if (!updatedTokens.authJwt) {\n throw new Error('Your iCure back-end version does not support JWT authentication')\n }\n\n return updatedTokens\n })\n } else {\n throw this._error ?? 'Expired JWT refresh token in pure JwtAuthService incapable of relogging'\n }\n return this._currentPromise\n })\n .then((x) => {\n return x?.authJwt ? [new XHR.Header('Authorization', `Bearer ${x.authJwt}`)] : Promise.reject('Cannot provide auth: No JWT')\n })\n }\n\n private async _refreshAuthJwt(refreshJwt: string): Promise<{ authJwt: string; refreshJwt: string }> {\n // If I do not have a refresh JWT or the refresh JWT is expired,\n // I have to log in again\n if (this._isJwtExpired(refreshJwt)) {\n throw Error('Missing or expired refresh token: please log in again')\n } else {\n return this.authApi.refreshAuthenticationJWT(refreshJwt).then((refreshResponse) => ({\n authJwt: refreshResponse.token!,\n refreshJwt: refreshJwt,\n }))\n }\n }\n\n private _isJwtExpired(jwt: string): boolean {\n const parts = jwt.split('.')\n if (parts.length !== 3) {\n return false\n }\n const payload = this._base64Decode(parts[1])\n return !('exp' in payload) || payload['exp'] * 1000 < new Date().getTime()\n }\n\n private _base64Decode(encodedString: string): any {\n return JSON.parse(a2b(encodedString))\n }\n\n invalidateHeader(error: Error): void {\n this._error = error\n }\n\n isInErrorState(): boolean {\n return !!this._error\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport { IccAuthApi, OAuthThirdParty } from '../../icc-api'\nimport { LoginCredentials } from '../../icc-api/model/LoginCredentials'\nimport Header = XHR.Header\nimport { a2b } from '../utils'\nimport { AuthenticationResponse } from '../../icc-api/model/AuthenticationResponse'\nimport XHRError = XHR.XHRError\n\nexport class JwtBridgedAuthService implements AuthService {\n private _error: Error | null = null\n private _currentPromise: Promise<{ authJwt?: string; refreshJwt?: string }> = Promise.resolve({})\n\n constructor(\n private authApi: IccAuthApi,\n private username: string,\n private password: string,\n private thirdPartyTokens: { [thirdParty: string]: string } = {}\n ) {}\n\n get refreshToken(): Promise {\n return this._currentPromise.then((x) => x.refreshJwt as any)\n }\n getIcureTokens(): Promise<{ token: string; refreshToken: string } | undefined> {\n return this.getAuthHeaders().then(() => this._currentPromise.then(({ authJwt, refreshJwt }) => ({ token: authJwt!, refreshToken: refreshJwt! })))\n }\n\n async getAuthHeaders(): Promise> {\n return this._currentPromise\n .then(({ authJwt, refreshJwt }) => {\n if (!authJwt || this._isJwtExpired(authJwt)) {\n // If it does not have the JWT, tries to get it\n // If the JWT is expired, tries to refresh it\n\n this._currentPromise = this._refreshAuthJwt(refreshJwt).then((updatedTokens) => {\n // If here the token is null,\n // it goes in a suspension status\n if (!updatedTokens.authJwt) {\n throw new Error('Your iCure back-end version does not support JWT authentication')\n }\n\n return updatedTokens\n })\n } else if (!!this._error) {\n throw this._error\n }\n return this._currentPromise\n })\n .then(({ authJwt }) => {\n return [new XHR.Header('Authorization', `Bearer ${authJwt}`)]\n })\n }\n\n private async _refreshAuthJwt(refreshJwt: string | undefined): Promise<{ authJwt?: string; refreshJwt?: string }> {\n // If I do not have a refresh JWT or the refresh JWT is expired,\n // I have to log in again\n if (!refreshJwt || this._isJwtExpired(refreshJwt)) {\n return this._loginAndGetTokens()\n } else {\n return this.authApi.refreshAuthenticationJWT(refreshJwt).then((refreshResponse) => ({\n authJwt: refreshResponse.token,\n refreshJwt: refreshJwt,\n }))\n }\n }\n\n private async _loginAndGetTokens(): Promise<{ authJwt?: string; refreshJwt?: string }> {\n let authResponse: AuthenticationResponse | undefined\n let firstError: XHRError | undefined\n if (this.username && this.password) {\n try {\n authResponse = await this.authApi.login(\n new LoginCredentials({\n username: this.username,\n password: this.password,\n })\n )\n } catch (e) {\n firstError = e as XHRError\n }\n }\n if (!authResponse) {\n authResponse = await (Object.entries(this.thirdPartyTokens) as [OAuthThirdParty, string][]).reduce(async (acc, [thirdParty, token]) => {\n const prev = await acc\n return (\n prev ??\n (token\n ? this.authApi.loginWithThirdPartyToken(thirdParty, token).catch((e) => {\n if (!firstError) {\n firstError = e as XHRError\n }\n return Promise.resolve() as Promise\n })\n : undefined)\n )\n }, Promise.resolve() as Promise)\n }\n\n if (!authResponse) {\n if (firstError) throw firstError\n throw new XHRError('', 'Unknown error', 401, 'Unauthorized', new Headers())\n }\n\n return {\n authJwt: authResponse.token,\n refreshJwt: authResponse.refreshToken,\n }\n }\n\n private _isJwtExpired(jwt: string): boolean {\n const parts = jwt.split('.')\n if (parts.length !== 3) {\n return false\n }\n const payload = this._base64Decode(parts[1])\n return !('exp' in payload) || payload['exp'] * 1000 < new Date().getTime()\n }\n\n private _base64Decode(encodedString: string): any {\n return JSON.parse(a2b(encodedString))\n }\n\n invalidateHeader(error: Error): void {\n this._error = error\n }\n\n isInErrorState(): boolean {\n return !!this._error\n }\n}\n","import { AuthService } from './AuthService'\nimport { XHR } from '../../icc-api/api/XHR'\nimport Header = XHR.Header\n\nexport class NoAuthService implements AuthService {\n private error: Error | null = null\n\n async getAuthHeaders(): Promise> {\n if (!!this.error) {\n throw this.error\n }\n return Promise.resolve([])\n }\n\n invalidateHeader(error: Error): void {\n this.error = error\n }\n}\n","import { appendBuffer, hex2ua, ua2hex } from '../utils'\n\nexport class AESUtils {\n /********* AES Config **********/\n ivLength = 16\n aesAlgorithmEncryptName = 'AES-CBC'\n\n aesKeyGenParams: AesKeyGenParams = {\n name: 'AES-CBC',\n length: 256,\n }\n private crypto: Crypto\n private _debug: boolean = false\n\n set debug(value: boolean) {\n this._debug = value\n }\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this.crypto = crypto\n }\n\n async encryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n return this.encrypt(\n await this.importKey('raw', hex2ua(rawKey.replace(/-/g, ''))),\n plainData,\n rawKey // Used for logging only if debug is enabled, ok to always pass\n )\n }\n\n encrypt(cryptoKey: CryptoKey, plainData: ArrayBuffer | Uint8Array, rawKey = ''): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject: (reason: any) => any) => {\n if (plainData instanceof Uint8Array) {\n const buffer = plainData.buffer\n plainData = (buffer.byteLength > plainData.byteLength ? buffer.slice(0, plainData.byteLength) : buffer) as ArrayBuffer\n }\n const aesAlgorithmEncrypt = {\n name: this.aesAlgorithmEncryptName,\n iv: this.generateIV(this.ivLength),\n }\n this._debug && console.log(`encrypt ${ua2hex(plainData)} with ${rawKey}`)\n this.crypto.subtle\n .encrypt(\n {\n ...aesAlgorithmEncrypt,\n } /* some ill behaved implementations change the values in place */,\n cryptoKey,\n plainData\n )\n .then(\n (cipherData) => {\n this._debug && console.log(`cipherData: ${ua2hex(cipherData)}`)\n return resolve(appendBuffer(aesAlgorithmEncrypt.iv.buffer as ArrayBuffer, cipherData))\n },\n (err) => reject('AES encryption failed: ' + err)\n )\n })\n }\n\n async decryptWithRawKey(rawKey: string, plainData: ArrayBuffer | Uint8Array): Promise {\n return this.decrypt(\n await this.importKey('raw', hex2ua(rawKey.replace(/-/g, ''))),\n plainData,\n rawKey // Used for logging only if debug is enabled, ok to always pass\n )\n }\n\n /**\n *\n * @param cryptoKey (CryptoKey)\n * @param encryptedData (ArrayBuffer)\n * @param rawKey\n * @returns {Promise} will be ArrayBuffer\n */\n decrypt(cryptoKey: CryptoKey, encryptedData: ArrayBuffer | Uint8Array, rawKey = ''): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject: (reason: any) => any) => {\n if (!cryptoKey) {\n return reject('No crypto key provided for decryption')\n }\n const encryptedDataUint8 = encryptedData instanceof ArrayBuffer ? new Uint8Array(encryptedData) : encryptedData\n const aesAlgorithmEncrypt = {\n name: this.aesAlgorithmEncryptName,\n iv: encryptedDataUint8.subarray(0, this.ivLength),\n\n /*\n * IF THIS BIT OF CODE PRODUCES A DOMEXCEPTION CODE 0 ERROR, IT MIGHT BE RELATED TO THIS:\n *\n * NOTOK:\n * if (!hcparty.hcPartyKeys && !hcparty.hcPartyKeys[hcpartyId] && hcparty.hcPartyKeys[hcpartyId].length !== 2) {\n * throw 'No hcPartyKey for this Healthcare party(' + hcpartyId + ').';\n * }\n * var delegateHcPartyKey = hcparty.hcPartyKeys[hcpartyId][1];\n *\n * SHOULD BE:\n * var delegatorId = patient.delegations[hcpartyId][0].owner;\n * if (!hcparty.hcPartyKeys && !hcparty.hcPartyKeys[delegatorId] && hcparty.hcPartyKeys[delegatorId].length !== 2) {\n * throw 'No hcPartyKey for this Healthcare party(' + delegatorId + ').';\n * }\n * var delegateHcPartyKey = hcparty.hcPartyKeys[delegatorId][1];\n */\n }\n this._debug && console.log(`decrypt ${ua2hex(encryptedData)} with ${rawKey}`)\n this.crypto.subtle.decrypt(aesAlgorithmEncrypt, cryptoKey, encryptedDataUint8.subarray(this.ivLength, encryptedDataUint8.length)).then(\n (decipheredData) => {\n this._debug && console.log(`decipheredData: ${ua2hex(decipheredData)}`)\n resolve(decipheredData)\n },\n (err) => {\n reject('AES decryption failed: ' + err)\n }\n )\n })\n }\n\n async decryptSome(cryptoKeys: CryptoKey[], uint8Array: Uint8Array): Promise {\n try {\n return this.decrypt(cryptoKeys[0], uint8Array)\n } catch (e) {\n if (cryptoKeys.length > 1) {\n return this.decryptSome(cryptoKeys.slice(1), uint8Array)\n } else {\n throw e\n }\n }\n }\n\n // generate an AES key\n // noinspection JSUnusedGlobalSymbols\n /**\n *\n * @param toHex boolean, if true, it returns hex String\n * @returns {Promise} either Hex string or CryptoKey\n */\n generateCryptoKey(toHex: false): Promise\n generateCryptoKey(toHex: true): Promise\n generateCryptoKey(toHex: boolean): Promise {\n return new Promise((resolve: (value: CryptoKey | string) => any, reject: (reason: any) => any) => {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n const cryptoKeyPromise: Promise = this.crypto.subtle.generateKey(this.aesKeyGenParams, extractable, keyUsages) as Promise\n return toHex === undefined || !toHex\n ? cryptoKeyPromise.then(resolve, reject)\n : cryptoKeyPromise.then((k) => this.exportKey(k, 'raw'), reject).then((raw) => resolve(ua2hex(raw)), reject)\n })\n }\n\n // noinspection JSMethodCanBeStatic\n generateIV(ivByteLength: number): Uint8Array {\n return new Uint8Array(this.crypto.getRandomValues(new Uint8Array(ivByteLength)))\n }\n\n /**\n * This function return a promise which will be the key Format will be either 'raw' or 'jwk'.\n * JWK: Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n *\n * @param cryptoKey CryptoKey\n * @param format will be 'raw' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKey(cryptoKey: CryptoKey, format: 'raw'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'jwk' | 'raw'): Promise {\n return new Promise((resolve: (value: ArrayBuffer | JsonWebKey) => any, reject: (reason: any) => any) => {\n return this.crypto.subtle.exportKey(format as any, cryptoKey).then(resolve, reject)\n })\n }\n\n /**\n * the ability to import a key that have already been created elsewhere, for use within the web\n * application that is invoking the import function, for use within the importing web application's\n * origin. This necessiates an interoperable key format, such as JSON Web Key [JWK] which may be\n * represented as octets.\n *\n * https://chromium.googlesource.com/chromium/blink.git/+/6b902997e3ca0384c8fa6fe56f79ecd7589d3ca6/LayoutTests/crypto/resources/common.js\n *\n * @param format 'raw' or 'jwk'\n * @param aesKey\n * @returns {*}\n */\n importKey(format: 'jwk' | 'raw', aesKey: JsonWebKey | ArrayBuffer | Uint8Array): Promise {\n return new Promise((resolve: (value: CryptoKey) => any, reject: (reason: any) => any) => {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n return this.crypto.subtle\n .importKey(format as any, aesKey as any, this.aesKeyGenParams, extractable, keyUsages)\n .catch((err) => {\n if (format == 'raw' && (aesKey instanceof ArrayBuffer || ArrayBuffer.isView(aesKey))) {\n console.warn(`Import of key ${ua2hex(aesKey)} failed`)\n }\n throw err\n })\n .then(resolve, reject)\n })\n }\n}\n\nexport const AES = new AESUtils()\n","import { KeyPair } from './RSA'\nimport { hex2ua, notConcurrent, ua2hex } from '../utils'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IccDeviceApi, IccHcpartyApi, IccPatientApi } from '../../icc-api'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\n\n/**\n * @internal This class is meant only for internal use and may be changed without notice.\n * Functions to create and get exchange keys.\n * The methods of this api require to pass the appropriate keys for encryption/decryption manually.\n */\nexport class BaseExchangeKeysManager {\n private readonly generateKeyConcurrencyMap: { [key: string]: PromiseLike } = {}\n private readonly primitives: CryptoPrimitives\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly hcpartyBaseApi: IccHcpartyApi\n private readonly patientBaseApi: IccPatientApi\n private readonly deviceBaseApi: IccDeviceApi\n\n constructor(\n primitives: CryptoPrimitives,\n dataOwnerApi: IccDataOwnerXApi,\n hcpartyBaseApi: IccHcpartyApi,\n patientBaseApi: IccPatientApi,\n deviceBaseApi: IccDeviceApi\n ) {\n this.primitives = primitives\n this.dataOwnerApi = dataOwnerApi\n this.hcpartyBaseApi = hcpartyBaseApi\n this.patientBaseApi = patientBaseApi\n this.deviceBaseApi = deviceBaseApi\n }\n\n /**\n * Creates a new exchange key from the current data owner to a delegate, or updates an existing one allowing additional public keys to access it.\n * @param delegateId the delegate data owner id.\n * @param delegatorMainKeyPair main key pair for the delegator. The private key will be used for the decryption of the existing key in case of\n * update, and the public key will be used as entry key of the aesExchangeKey map\n * @param additionalPublicKeys all public keys of key pairs other than {@link delegatorMainKeyPair} that need to have access to the exchange key.\n * Can be a mix of crypto keys and full hex-encoded spki format (no fingerprints).\n * @return the exchange key for the delegator-delegate-delegatorKey triple (new or existing) and the updated delegator.\n */\n async createOrUpdateEncryptedExchangeKeyTo(\n delegateId: string,\n delegatorMainKeyPair: KeyPair,\n additionalPublicKeys: { [keyFingerprint: string]: CryptoKey }\n ): Promise<{\n updatedDelegator: CryptoActorStubWithType\n key: CryptoKey\n }> {\n const delegatorId = await this.dataOwnerApi.getCurrentDataOwnerId()\n return await notConcurrent(this.generateKeyConcurrencyMap, delegatorId, async () => {\n const delegator = CryptoActorStubWithType.fromDataOwner(await this.dataOwnerApi.getCurrentDataOwner())\n const delegate = delegatorId === delegateId ? delegator : await this.dataOwnerApi.getCryptoActorStub(delegateId)\n const mainDelegatorKeyPairPubHex = ua2hex(await this.primitives.RSA.exportKey(delegatorMainKeyPair.publicKey, 'spki'))\n let exchangeKey: { raw: string; key: CryptoKey } | undefined = undefined\n const existingExchangeKey =\n delegator.stub.aesExchangeKeys?.[mainDelegatorKeyPairPubHex]?.[delegateId]?.[mainDelegatorKeyPairPubHex.slice(-32)] ??\n (mainDelegatorKeyPairPubHex === delegator.stub.publicKey ? delegator.stub.hcPartyKeys?.[delegateId]?.[0] : undefined)\n if (existingExchangeKey) {\n exchangeKey = await this.tryDecryptExchangeKeyWith(existingExchangeKey, delegatorMainKeyPair, undefined)\n if (!exchangeKey)\n throw new Error(\n `Failed to decrypt existing exchange key for update of ${mainDelegatorKeyPairPubHex.slice(-32)}@${delegatorId}->${delegateId}`\n )\n const existingAesExchangeKey = delegator.stub.aesExchangeKeys?.[mainDelegatorKeyPairPubHex]?.[delegateId]\n if (existingAesExchangeKey) {\n const existingPublicKeysSet = new Set(existingExchangeKey)\n if (Object.keys(additionalPublicKeys).every((fp) => existingPublicKeysSet.has(fp)))\n return {\n updatedDelegator: delegator,\n key: exchangeKey.key,\n }\n }\n }\n const allPublicKeys = {\n ...additionalPublicKeys,\n [mainDelegatorKeyPairPubHex.slice(-32)]: delegatorMainKeyPair.publicKey,\n }\n const encryptedKeyInfo = await this.encryptExchangeKey(exchangeKey, allPublicKeys)\n const updatedStub: CryptoActorStub = {\n ...delegator.stub,\n aesExchangeKeys: await this.updateExchangeKeys(delegator, delegate, mainDelegatorKeyPairPubHex, encryptedKeyInfo.encryptedExchangeKey),\n publicKey: delegator.stub.publicKey ?? mainDelegatorKeyPairPubHex,\n }\n if (delegator.stub.publicKey === mainDelegatorKeyPairPubHex) {\n updatedStub.hcPartyKeys = this.updateLegacyExchangeKeys(delegator, delegate, encryptedKeyInfo.encryptedExchangeKey)\n }\n const updatedDelegator = await this.dataOwnerApi.modifyCryptoActorStub({\n type: delegator.type,\n stub: updatedStub,\n })\n return {\n key: encryptedKeyInfo.exchangeKey,\n updatedDelegator,\n }\n })\n }\n\n /**\n * Updates the aes exchange keys between the current data owner and another data owner to allow the other data owner to access the exchange key\n * using his new public key. Note that this will make existing exchange keys from the other data owner to the current data owner invalid for\n * encryption.\n * @param otherDataOwner the other data owner.\n * @param newDataOwnerPublicKey a new public key of the other data owner.\n * @param keyPairsByFingerprint all available key pairs to use for the decryption of existing aes exchange keys.\n */\n async giveAccessBackTo(\n otherDataOwner: string,\n newDataOwnerPublicKey: string,\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ) {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const newPublicKey = await this.primitives.RSA.importKey('spki', hex2ua(newDataOwnerPublicKey), ['encrypt'])\n await this.extendForGiveAccessBackTo(selfId, otherDataOwner, newDataOwnerPublicKey.slice(-32), newPublicKey, keyPairsByFingerprint)\n await this.extendForGiveAccessBackTo(otherDataOwner, selfId, newDataOwnerPublicKey.slice(-32), newPublicKey, keyPairsByFingerprint)\n }\n\n /**\n * Get the encrypted exchange keys for a delegator-delegate pair.\n * @param delegatorId id of the delegator data owner.\n * @param delegateId id of the delegate data owner.\n * @return an array of exchange keys from the delegator to delegate where each key is encrypted with one or more public keys.\n */\n async getEncryptedExchangeKeysFor(delegatorId: string, delegateId: string): Promise<{ [publicKeyFingerprint: string]: string }[]> {\n const delegator = await this.dataOwnerApi.getCryptoActorStub(delegatorId)\n const res: { [publicKeyFingerprint: string]: string }[] = Object.values(delegator.stub.aesExchangeKeys ?? {}).flatMap((delegateToKey) => {\n const encryptedKeyForDelegate = delegateToKey[delegateId]\n if (encryptedKeyForDelegate) {\n return [encryptedKeyForDelegate]\n } else {\n return []\n }\n })\n const legacyDelegation = delegator.stub.hcPartyKeys?.[delegateId]?.[1]\n if (legacyDelegation) res.push({ '': legacyDelegation })\n return res\n }\n\n /**\n * Get all exchange keys where the provided data owner is involved either as the delegator or as the delegate.\n * @param dataOwnerId id of a data owner.\n * @param otherOwnerTypes only exchange keys between the current data owner and data owners of this type will be included in the result.\n * @return all exchange keys involving the provided data owner. Note that there may be an overlap between some keys to and from the data owner.\n */\n async getAllExchangeKeysWith(\n dataOwnerId: string,\n otherOwnerTypes: DataOwnerTypeEnum[]\n ): Promise<{\n keysToOwner: { [delegatorId: string]: { [delegatorFp: string]: { [entryFp: string]: string } } }\n keysFromOwner: { [delegatorFp: string]: { [delegateId: string]: { [entryFp: string]: string } } }\n }> {\n if (otherOwnerTypes.length === 0) throw new Error('otherOwnerTypes must not be empty!')\n const keysToOwner = await Promise.all([\n otherOwnerTypes.find((x) => x === DataOwnerTypeEnum.Hcp)\n ? this.hcpartyBaseApi.getAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n otherOwnerTypes.find((x) => x === DataOwnerTypeEnum.Patient)\n ? this.patientBaseApi.getPatientAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n otherOwnerTypes.find((x) => x === DataOwnerTypeEnum.Device)\n ? this.deviceBaseApi.getDeviceAesExchangeKeysForDelegate(dataOwnerId).catch(() => {})\n : Promise.resolve({}),\n ]).then(([a, b, c]) => ({ ...a, ...b, ...c } as { [delegatorId: string]: { [delegatorFp: string]: { [entryFp: string]: string } } }))\n const dataOwner = await this.dataOwnerApi.getCryptoActorStub(dataOwnerId)\n const allOwnerKeys = await this.combineLegacyHcpKeysWithAesExchangeKeys(dataOwner.stub, undefined)\n const filteredDelegates = new Set(\n await Array.from(new Set(Object.values(allOwnerKeys).flatMap((x) => Object.keys(x)))).reduce(async (acc, ownerId) => {\n const awaitedAcc = await acc\n if (ownerId === dataOwnerId) {\n return [...awaitedAcc, ownerId]\n } else {\n const dataOwnerType: DataOwnerTypeEnum = (await this.dataOwnerApi.getCryptoActorStub(ownerId)).type\n if (otherOwnerTypes.some((x) => x === dataOwnerType)) {\n return [...awaitedAcc, ownerId]\n } else return awaitedAcc\n }\n }, Promise.resolve([] as string[]))\n )\n const keysFromOwner = Object.fromEntries(\n Object.entries(allOwnerKeys)\n .map(([delegatorPubKey, delegateToKeys]) => [\n delegatorPubKey,\n Object.fromEntries(\n Object.entries(delegateToKeys).filter(([delegateId]) => filteredDelegates.has(delegateId)) as [string, { [k: string]: string }][]\n ),\n ])\n .filter(([, x]) => Object.keys(x).length > 0) as [string, { [k: string]: { [k: string]: string } }][]\n )\n return { keysToOwner, keysFromOwner }\n }\n\n /**\n * Attempts to decrypt many exchange keys using any of the provided key pairs.\n * @param encryptedExchangeKeys an array of exchange keys where each key is encrypted with one or more public keys.\n * @param keyPairsByFingerprint rsa key pairs to use for decryption.\n * @return an array all successfully decrypted exchange keys and an array containing all exchange keys which could not be decrypted.\n */\n async tryDecryptExchangeKeys(\n encryptedExchangeKeys: { [publicKeyFingerprint: string]: string }[],\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{\n successfulDecryptions: CryptoKey[]\n failedDecryptions: { [publicKeyFingerprint: string]: string }[]\n }> {\n const raws = new Set()\n const res: {\n successfulDecryptions: CryptoKey[]\n failedDecryptions: { [publicKeyFingerprint: string]: string }[]\n } = { successfulDecryptions: [], failedDecryptions: [] }\n for (const encryptedExchangeKey of encryptedExchangeKeys) {\n const decrypted = await this.tryDecryptExchangeKey(encryptedExchangeKey, keyPairsByFingerprint)\n if (decrypted !== undefined && !raws.has(decrypted.raw)) {\n raws.add(decrypted.raw)\n res.successfulDecryptions.push(decrypted.key)\n } else {\n res.failedDecryptions.push(encryptedExchangeKey)\n }\n }\n return res\n }\n\n private async extendForGiveAccessBackTo(\n delegatorId: string,\n delegateId: string,\n newPublicKeyFp: string,\n newPublicKey: CryptoKey,\n decryptionKeyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ) {\n await notConcurrent(this.generateKeyConcurrencyMap, delegatorId, async () => {\n const delegator = await this.dataOwnerApi.getCryptoActorStub(delegatorId)\n const delegate = await this.dataOwnerApi.getCryptoActorStub(delegateId)\n let didUpdateSomeKey = false\n const combinedKeys = await this.combineLegacyHcpKeysWithAesExchangeKeys(delegator.stub, delegate.stub)\n const updatedExchangeKeys: { [delegatorKey: string]: { [delegateId: string]: { [keyFp: string]: string } } } = {}\n const newEncryptionKeys = { [newPublicKeyFp]: newPublicKey }\n for (const [currDelegatorKey, currDelegatesToKeys] of Object.entries(combinedKeys)) {\n const updatedDelegatesToKeys: { [delegateId: string]: { [keyFp: string]: string } } = {}\n for (const [currDelegateId, currEncryptedKey] of Object.entries(currDelegatesToKeys)) {\n if (delegateId !== currDelegateId || newPublicKeyFp in currEncryptedKey) {\n updatedDelegatesToKeys[currDelegateId] = currEncryptedKey\n } else {\n const decrypted = await this.tryDecryptExchangeKey(currEncryptedKey, decryptionKeyPairsByFingerprint)\n if (decrypted) {\n didUpdateSomeKey = true\n updatedDelegatesToKeys[currDelegateId] = {\n ...currEncryptedKey,\n ...(await this.encryptExchangeKey(decrypted, newEncryptionKeys)).encryptedExchangeKey,\n }\n } else {\n updatedDelegatesToKeys[currDelegateId] = currEncryptedKey\n }\n }\n }\n updatedExchangeKeys[currDelegatorKey] = updatedDelegatesToKeys\n }\n if (didUpdateSomeKey) {\n await this.dataOwnerApi.modifyCryptoActorStub({\n type: delegator.type,\n stub: {\n ...delegator.stub,\n aesExchangeKeys: updatedExchangeKeys,\n },\n })\n }\n })\n }\n\n /**\n * Attempts to decrypt an exchange key using any of the provided key pairs.\n * @param encryptedExchangeKey an encrypted exchange key, in the form publicKeyXyzFingerprint -> hex(exchangeKeyEncryptedByPrivateKeyXyz).\n * @param keyPairsByFingerprint rsa key pairs to use for decryption.\n * @return the decrypted exchange key, in raw and key format (to allow deduplication), or undefined if the key could not be decrypted using the\n * provided keys.\n */\n private async tryDecryptExchangeKey(\n encryptedExchangeKey: { [publicKeyFingerprint: string]: string },\n keyPairsByFingerprint: { [publicKeyFingerprint: string]: KeyPair }\n ): Promise<{ raw: string; key: CryptoKey } | undefined> {\n for (const [entryKey, encrypted] of Object.entries(encryptedExchangeKey)) {\n // Due to bugs in past version the entry may actually contain the full public key instead of just the fingerprint.\n const fp = entryKey.slice(-32)\n const keyPair = keyPairsByFingerprint[fp]\n if (keyPair !== undefined) {\n const res = await this.tryDecryptExchangeKeyWith(encrypted, keyPair, fp)\n if (res !== undefined) return res\n }\n }\n const defaultEncryptedKey = encryptedExchangeKey['']\n if (defaultEncryptedKey !== undefined) {\n for (const keyPair of Object.values(keyPairsByFingerprint)) {\n // disable error logging, we are not sure keyPair is the correct key\n const res = await this.tryDecryptExchangeKeyWith(defaultEncryptedKey, keyPair, undefined)\n if (res !== undefined) return res\n }\n }\n return undefined\n }\n\n /**\n * Creates an encrypted exchange key for the provided public keys.\n * @param exchangeKey the exchange key in raw and imported format. If undefined a new key will be automatically created.\n * @param publicKeys additional public keys that will have access to the exchange key in spki format, hex-encoded.\n * @return the exchangeKey and an object with the exchange key encrypted with each of the provided public keys, hex-encoded, by fingerprint.\n */\n private async encryptExchangeKey(\n exchangeKey: { raw: string; key: CryptoKey } | undefined,\n publicKeys: { [keyFingerprint: string]: CryptoKey }\n ): Promise<{\n exchangeKey: CryptoKey\n encryptedExchangeKey: { [pubKeyFp: string]: string }\n }> {\n const exchangeKeyCrypto = exchangeKey?.key ?? (await this.primitives.AES.generateCryptoKey(false))\n const exchangeKeyBytes = exchangeKey !== undefined ? hex2ua(exchangeKey.raw) : await this.primitives.AES.exportKey(exchangeKeyCrypto, 'raw')\n const encryptedExchangeKey = await Object.entries(publicKeys).reduce(\n async (acc, [currKeyFp, currKey]) => ({\n ...(await acc),\n [currKeyFp]: ua2hex(await this.primitives.RSA.encrypt(currKey, new Uint8Array(exchangeKeyBytes))),\n }),\n Promise.resolve({} as { [pubKeyFp: string]: string })\n )\n return { exchangeKey: exchangeKeyCrypto, encryptedExchangeKey }\n }\n\n /**\n * Attempts to decrypt an exchange key using the provided key pairs.\n * If you are confident that the provided {@link keyPair} was used to encrypt {@link encryptedByOneKey} you should also provide {@link keyPairFp},\n * so that if the decryption fail an error will be logged to console before returning undefined.\n * @param encryptedByOneKey an exchange key which may be encrypted with {@link keyPair}.\n * @param keyPair an rsa key pair.\n * @param keyPairFp the fingerprint of the provided key pair or undefined to disable logging of error if the decryption failed.\n * @return the decrypted exchange key, in raw and key format (to allow deduplication), or undefined if the key could not be decrypted using the\n * provided key.\n */\n private async tryDecryptExchangeKeyWith(\n encryptedByOneKey: string,\n keyPair: KeyPair,\n keyPairFp: string | undefined // if undefined will not log errors, when we are not sure the key to be used is the provided key.\n ): Promise<{ raw: string; key: CryptoKey } | undefined> {\n try {\n const decrypted = await this.primitives.RSA.decrypt(keyPair.privateKey, hex2ua(encryptedByOneKey))\n return { raw: ua2hex(decrypted), key: await this.primitives.AES.importKey('raw', decrypted) }\n } catch (e) {\n if (keyPairFp) {\n console.error(`Failed to decrypt or import exchange key ${encryptedByOneKey} using key with fingerprint ${keyPairFp}.`, e)\n }\n }\n }\n\n private updateLegacyExchangeKeys(\n delegator: CryptoActorStubWithType,\n delegate: CryptoActorStubWithType,\n encryptedKeyMap: { [fp: string]: string }\n ): { [delegateId: string]: string[] } | undefined {\n const legacyEncryptedKeyDelegator = delegator.stub.publicKey ? encryptedKeyMap[delegator.stub.publicKey] : undefined\n const legacyEncryptedKeyDelegate = delegate.stub.publicKey ? encryptedKeyMap[delegate.stub.publicKey] : undefined\n if (legacyEncryptedKeyDelegator && legacyEncryptedKeyDelegate) {\n return {\n ...(delegator.stub.hcPartyKeys ?? {}),\n [delegate.stub.id!]: [legacyEncryptedKeyDelegator, legacyEncryptedKeyDelegate],\n }\n } else return delegator.stub.hcPartyKeys\n }\n\n private async updateExchangeKeys(\n delegator: CryptoActorStubWithType,\n delegate: CryptoActorStubWithType,\n mainDelegatorKeyPairPubHex: string,\n encryptedKeyMap: { [fp: string]: string }\n ): Promise<{ [ownerPublicKey: string]: { [delegateId: string]: { [fingerprint: string]: string } } }> {\n const combinedAesExchangeKeys = await this.combineLegacyHcpKeysWithAesExchangeKeys(delegator.stub, delegate.stub)\n return this.fixAesExchangeKeyEntriesToFingerprints({\n ...combinedAesExchangeKeys,\n [mainDelegatorKeyPairPubHex]: {\n ...(combinedAesExchangeKeys[mainDelegatorKeyPairPubHex] ?? {}),\n [delegate.stub.id!]: {\n ...(combinedAesExchangeKeys[mainDelegatorKeyPairPubHex]?.[delegate.stub.id!] ?? {}),\n ...encryptedKeyMap,\n },\n },\n })\n }\n\n // Copy all legacy hcp exchange keys into the new aes exchange keys\n private async combineLegacyHcpKeysWithAesExchangeKeys(\n owner: CryptoActorStub,\n delegate: CryptoActorStub | undefined\n ): Promise<{ [ownerPublicKey: string]: { [delegateId: string]: { [fingerprint: string]: string } } }> {\n const ownerLegacyPublicKey = owner.publicKey\n if (ownerLegacyPublicKey && !(owner.aesExchangeKeys ?? {})[ownerLegacyPublicKey]) {\n /*\n * This condition would technically prevent new updates to the hcPartyKeys to be migrated to the aes exchange keys, but since I can only update\n * data for self data owner and parent entities this is not an issue, because I will always be using the new api from now on and I won't have\n * a situation where the legacy keys are updated but the aes exchange keys are not.\n */\n const unknownDataOwnerCounterPartIds = Object.keys(owner.hcPartyKeys ?? {}).filter((x) => x !== owner.id && x !== delegate?.id)\n const counterPartsById = [\n owner,\n ...(delegate ? [delegate] : []),\n ...(await Promise.all(unknownDataOwnerCounterPartIds.map(async (cpid) => (await this.dataOwnerApi.getCryptoActorStub(cpid)).stub))),\n ].reduce((acc, dataOwner) => {\n acc[dataOwner.id!] = dataOwner\n return acc\n }, {} as { [id: string]: CryptoActorStub })\n return {\n [ownerLegacyPublicKey]: Object.entries(owner.hcPartyKeys ?? {}).reduce((acc, [hcpId, keys]) => {\n acc[hcpId] = { [ownerLegacyPublicKey.slice(-32)]: keys[0], [counterPartsById[hcpId]?.publicKey?.slice(-32) ?? '']: keys[1] }\n return acc\n }, {} as { [delegateId: string]: { [fingerprint: string]: string } }),\n ...(owner.aesExchangeKeys ?? {}),\n }\n } else return owner.aesExchangeKeys ?? {}\n }\n\n private fixAesExchangeKeyEntriesToFingerprints(aesExchangeKeys: {\n [delegatorPubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } }\n }): { [delegatorPubKey: string]: { [delegateId: string]: { [pubKeyFp: string]: string } } } {\n return Object.fromEntries(\n Object.entries(aesExchangeKeys).map(([delegatorPubKey, allDelegates]) => [\n delegatorPubKey,\n Object.fromEntries(\n Object.entries(allDelegates).map(([delegateId, keyEntries]) => [\n delegateId,\n Object.fromEntries(Object.entries(keyEntries).map(([publicKey, encryptedValue]) => [publicKey.slice(-32), encryptedValue])),\n ])\n ),\n ])\n )\n }\n}\n","import { EncryptedEntity } from '../../icc-api/model/models'\nimport { EntitiesEncryption } from './EntitiesEncryption'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\n\n/**\n * This class helps to create confidential medical data in systems where multiple hcps share data with each other using parent hcps: while normally\n * the hcps would share all data with other hcps part of the same \"family\" (e.g. an hospital) there are situations where the medical data is\n * confidential and should only be known by the doctor which created the data. In these situations it is also important that the secret foreign key\n * used in the confidential data is not known by other members of the hcp family, otherwise they may be able to draw some links between the medical\n * data and the patient.\n */\nexport class ConfidentialEntities {\n constructor(\n private readonly entitiesEncryption: EntitiesEncryption,\n private readonly primitives: CryptoPrimitives,\n private readonly dataOwnerApi: IccDataOwnerXApi\n ) {}\n\n /**\n * Ensures that the current data owner has access to a confidential secret id for the provided entity: this is an id that is known to the data owner\n * but is not known by any of his parents. If there is currently no confidential secret id for this entity the method returns a copy of the entity\n * with a new confidential secret id for the current data owner (the entity in the database won't be updated), else this method returns undefined.\n * New confidential secret ids will have an appropriate tag, but existing confidential secret ids may not necessarily have it.\n * @param entity an entity which needs to have a confidential secret id for the current data owner\n * @return undefined if the entity already had a confidential secret id for the current user, or the updated entity with the new confidential secret\n * id.\n */\n async entityWithInitialisedConfidentialSecretId(entity: T): Promise {\n if (await this.getConfidentialSecretId(entity)) return undefined\n const confidentialSecretId = this.primitives.randomUuid()\n return await this.entitiesEncryption.entityWithExtendedEncryptedMetadata(\n entity,\n await this.dataOwnerApi.getCurrentDataOwnerId(),\n [confidentialSecretId],\n [],\n [],\n ['confidential']\n )\n }\n\n /**\n * Get an existing confidential secret id of the provided entity for the provided data owner (current data owner by default). A confidential secret\n * id is a secret id known by the data owner but not known by any of his parents: note however that children will know confidential secret ids.\n * @param entity an entity for which you want to retrieve the confidential secret id.\n * @param dataOwnerId (current data owner by default) a data owner for which you want to get a confidential secret id.\n * @return the confidential secret id or undefined if there is no confidential secret id for the provided data owner.\n */\n async getConfidentialSecretId(entity: EncryptedEntity, dataOwnerId?: string): Promise {\n return this.getConfidentialSecretIds(entity, dataOwnerId).then((x) => x[0])\n }\n\n /**\n * Gets a secret id known by the topmost parent of the current data owner hierarchy. If there is multiple secret ids shared with the topmost parent\n * there is no guarantee on which one will be chosen.\n * @param entity an entity.\n * @return a secret id known by the topmost parent of the current data owner hierarchy, or undefined if there is no secret id currently available\n * for the topmost parent.\n */\n async getAnySecretIdSharedWithParents(entity: EncryptedEntity): Promise {\n return (await this.getSecretIdsSharedWithParents(entity))[0]\n }\n\n /**\n * Get all existing confidential secret ids of the provided entity for the provided data owner (current data owner by default). A confidential secret\n * id is a secret id known by the data owner but not known by any of his parents: note however that children will know confidential secret ids.\n * @param entity an entity for which you want to retrieve the confidential secret id.\n * @param dataOwnerId (current data owner by default) a data owner for which you want to get a confidential secret id.\n * @return the confidential secret ids for the data owner (may be empty).\n */\n async getConfidentialSecretIds(entity: EncryptedEntity, dataOwnerId?: string): Promise {\n // TODO throw exception if any parent key is not available? if we are missing even only one single parent key we can't be sure it is confidential\n const chosenDataOwnerId = dataOwnerId ?? (await this.dataOwnerApi.getCurrentDataOwnerId())\n const dataOwnerHierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIdsFrom(chosenDataOwnerId)\n const hierarchySecretIds = (await this.entitiesEncryption.secretIdsForHcpHierarchyOf(entity)).filter((x) =>\n dataOwnerHierarchy.includes(x.ownerId)\n )\n const keysForDataOwner = hierarchySecretIds.find((x) => x.ownerId === chosenDataOwnerId)\n\n if (!keysForDataOwner) return []\n return keysForDataOwner.extracted.filter((k) => !hierarchySecretIds.some((x) => x.ownerId !== chosenDataOwnerId && x.extracted.includes(k)))\n }\n\n /**\n * Gets all secret ids known by the topmost parent of the current data owner hierarchy (or all secret ids known by the current data owner if he is\n * not part of any data owner hierarchy).\n * @param entity an entity.\n * @return all secret ids known by the topmost parent of the current data owner hierarchy, may be empty.\n */\n async getSecretIdsSharedWithParents(entity: EncryptedEntity): Promise {\n return (await this.entitiesEncryption.secretIdsForHcpHierarchyOf(entity))[0].extracted\n }\n}\n","import { RSAUtils } from './RSA'\nimport { AESUtils } from './AES'\nimport { ShamirClass } from './shamir'\n\n/**\n * Gives access to cryptographic primitives.\n */\nexport class CryptoPrimitives {\n private readonly _rsa: RSAUtils\n private readonly _aes: AESUtils\n private readonly _shamir: ShamirClass\n private readonly _crypto: Crypto\n\n get crypto(): Crypto {\n return this._crypto\n }\n\n get shamir(): ShamirClass {\n return this._shamir\n }\n\n get RSA(): RSAUtils {\n return this._rsa\n }\n\n get AES(): AESUtils {\n return this._aes\n }\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this._crypto = crypto\n this._rsa = new RSAUtils(crypto)\n this._aes = new AESUtils(crypto)\n this._shamir = new ShamirClass(crypto)\n }\n\n /**\n * Generates a UUID using a cryptographically secure random number generator.\n */\n randomUuid() {\n return ((1e7).toString() + -1e3 + -4e3 + -8e3 + -1e11).replace(\n /[018]/g,\n //Keep next inlined or you will lose the random\n (c) => (Number(c) ^ ((this.crypto.getRandomValues(new Uint8Array(1))! as Uint8Array)[0] & (15 >> (Number(c) / 4)))).toString(16)\n )\n }\n\n /**\n * @param data some data\n * @return the sha256 hash of {@link data}\n */\n sha256(data: ArrayBuffer | Uint8Array): Promise {\n return this.crypto.subtle.digest('SHA-256', data)\n }\n\n /**\n * @param n how many bytes to generate\n * @return an array with n random bytes\n */\n randomBytes(n: number): Uint8Array {\n const res = new Uint8Array(n)\n this.crypto.getRandomValues(res)\n return res\n }\n}\n","import { Delegation, EncryptedEntity, EncryptedEntityStub } from '../../icc-api/model/models'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { ExchangeKeysManager } from './ExchangeKeysManager'\nimport { b2a, crypt, decrypt, hex2ua, string2ua, truncateTrailingNulls, ua2hex, ua2string, ua2utf8, utf8_2ua } from '../utils'\nimport * as _ from 'lodash'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { arrayEquals } from '../utils/collection-utils'\nimport { ShareMetadataBehaviour } from './ShareMetadataBehaviour'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\n/**\n * @internal this class is for internal use only and may be changed without notice\n * Give access to functions for retrieving encryption metadata of entities.\n */\nexport class EntitiesEncryption {\n private readonly primitives: CryptoPrimitives\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly exchangeKeysManager: ExchangeKeysManager\n\n constructor(primitives: CryptoPrimitives, dataOwnerApi: IccDataOwnerXApi, exchangeKeysManager: ExchangeKeysManager) {\n this.primitives = primitives\n this.dataOwnerApi = dataOwnerApi\n this.exchangeKeysManager = exchangeKeysManager\n }\n\n /**\n * Get the data owners which can access the entity\n * @param entity an entity.\n */\n async getDataOwnersWithAccessTo(entity: EncryptedEntity): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: 'WRITE' }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n return {\n permissionsByDataOwnerId: Object.fromEntries(Object.keys(entity.delegations ?? {}).map((x) => [x, 'WRITE'])),\n hasUnknownAnonymousDataOwners: false,\n }\n }\n\n /**\n * Get the encryption keys of an entity that the provided data owner can access, potentially using the keys for his parent.\n * There should only be one encryption key for each entity, but the method supports more to allow to deal with conflicts and merged duplicate data.\n * @param entity an encrypted entity.\n * @param dataOwnerId optionally a data owner part of the hierarchy for the current data owner, defaults to the current data owner.\n * @param tagsFilter allows to obtain only encryption keys associated to tags which satisfy the provided filter.\n * @return the encryption keys that the provided data owner can decrypt, deduplicated.\n */\n async encryptionKeysOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n dataOwnerId?: string,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise {\n // Legacy entities may have encryption keys in delegations.\n return this.extractMergedHierarchyFromDelegationAndOwner(\n Object.keys(entity.encryptionKeys ?? {}).length > 0 ? entity.encryptionKeys! : entity.delegations ?? {},\n dataOwnerId,\n (k) => this.validateEncryptionKey(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * Get the encryption keys of an entity that the current data owner and his parents can access. The resulting array contains the keys for each data\n * owner in the hierarchy which can be decrypted using only that data owner keys (excludes keys accessible through the parent keys). The order of\n * the array is the same as in {@link IccDataOwnerXApi.getCurrentDataOwnerHierarchyIds}.\n * Note that different data owners may have access to the same keys, but the keys extracted for each data owner are deduplicated.\n * There should only be one encryption key for each entity, but the method supports more to allow to deal with conflicts and merged duplicate data.\n * @param entity an encrypted entity.\n * @param tagsFilter allows to obtain only encryption keys associated to tags which satisfy the provided filter.\n * @return the encryption keys that each member of the current data owner hierarchy can decrypt using only his keys and not keys of his parents.\n */\n async encryptionKeysForHcpHierarchyOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.extractedHierarchyFromDelegation(\n entity.encryptionKeys ?? {},\n (k) => this.validateEncryptionKey(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * Get the secret ids (SFKs) of an entity that the provided data owner can access, potentially using the keys for his parent.\n * @param entity an encrypted entity.\n * @param dataOwnerId optionally a data owner part of the hierarchy for the current data owner, defaults to the current data owner.\n * @param tagsFilter allows to obtain only secret ids associated to tags which satisfy the provided filter.\n * @return the secret ids (SFKs) that the provided data owner can decrypt, deduplicated.\n */\n async secretIdsOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n dataOwnerId?: string,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise {\n return this.extractMergedHierarchyFromDelegationAndOwner(\n entity.delegations ?? {},\n dataOwnerId,\n (k) => this.validateSecretId(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * Get the secret ids (SFKs) of an entity that the current data owner and his parents can access. The resulting array contains the ids for each data\n * owner in the hierarchy which can be decrypted using only that data owner keys (excludes ids accessible through the parent keys). The order of\n * the array is the same as in {@link IccDataOwnerXApi.getCurrentDataOwnerHierarchyIds}.\n * Note that different data owners may have access to the same secret ids, but the secret ids extracted for each data owner are deduplicated.\n * @param entity an encrypted entity.\n * @param tagsFilter allows to obtain only secret ids associated to tags which satisfy the provided filter.\n * @return the secret ids that each member of the current data owner hierarchy can decrypt using only his keys and not keys of his parents.\n */\n async secretIdsForHcpHierarchyOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.extractedHierarchyFromDelegation(\n entity.delegations ?? {},\n (k) => this.validateSecretId(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * Get the decrypted owning entity ids (formerly CFKs) for the provided entity that can be decrypted using the private keys of the current data\n * owner and his parents. The owning entity id would be, for example, the id of a patient for contact and healthcare elements, or the id of a\n * message for documents.\n * There should only be one owning entity id for each entity, but the method supports more to allow to deal with conflicts and merged duplicate\n * data.\n * @param entity an encrypted entity.\n * @param dataOwnerId optionally a data owner part of the hierarchy for the current data owner, defaults to the current data owner.\n * @param tagsFilter allows to obtain only owning entity ids associated to tags which satisfy the provided filter.\n * @return the owning entity ids (CFKs) that the provided data owner can decrypt, deduplicated.\n */\n async owningEntityIdsOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n dataOwnerId?: string,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise {\n return this.extractMergedHierarchyFromDelegationAndOwner(\n entity.cryptedForeignKeys ?? {},\n dataOwnerId,\n (k) => this.validateOwningEntityId(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * Get the decrypted owning entity ids (formerly CFKs) for the provided entity that can be decrypted using the private keys of the current data\n * owner and his parents. The owning entity id would be, for example, the id of a patient for contact and healthcare elements, or the id of a\n * message for documents.\n * The resulting array contains the ids for each data owner in the hierarchy which can be decrypted using only that data owner keys (excludes ids\n * accessible through the parent keys). The order of the array is the same as in {@link IccDataOwnerXApi.getCurrentDataOwnerHierarchyIds}.\n * Note that different data owners may have access to the same owning entity ids, but the owning entity ids extracted for each data owner are\n * deduplicated in case they could be accessed through different delegations.\n * There should only be one owning entity id for each entity, but the method supports more to allow to deal with conflicts and merged duplicate\n * data.\n * @param entity an encrypted entity.\n * @param tagsFilter allows to obtain only owning entity ids associated to tags which satisfy the provided filter.\n * @return the owning entity ids that each member of the current data owner hierarchy can decrypt using only his keys and not keys of his parents.\n */\n async owningEntityIdsForHcpHierarchyOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n return this.extractedHierarchyFromDelegation(\n entity.cryptedForeignKeys ?? {},\n (k) => this.validateOwningEntityId(k),\n (t) => tagsFilter(t)\n )\n }\n\n /**\n * @internal this method is intended only for internal use and may be changed without notice.\n * Initializes encryption metadata for an entity. This includes the encrypted secret id, owning entity id, and encryption key for the entity, and\n * the clear text secret foreign key of the parent entity.\n * This method returns a modified copy of the entity.\n * @param entity entity which requires encryption metadata initialisation.\n * @param owningEntity id of the owning entity, if any (e.g. patient id for Contact/HealtchareElement, message id for Document, ...).\n * @param owningEntitySecretId secret id of the parent entity, to use in the secret foreign keys for the provided entity, if any.\n * @param initialiseEncryptionKeys if false this method will not initialize any encryption keys. Use only for entities which use delegations for\n * access control but don't actually have any encrypted content.\n * @param additionalDelegations automatically shares the\n * @param tags tags to associate with the initial encryption keys and metadata\n * @throws if the entity already has non-empty values for encryption metadata.\n * @return an updated copy of the entity.\n */\n async entityWithInitialisedEncryptedMetadata(\n entity: T,\n owningEntity: string | undefined,\n owningEntitySecretId: string | undefined,\n initialiseEncryptionKeys: boolean,\n additionalDelegations: string[] = [],\n tags: string[] = []\n ): Promise<{\n updatedEntity: T\n rawEncryptionKey: string | undefined\n secretId: string\n }> {\n this.throwDetailedExceptionForInvalidParameter('entity.id', entity.id, 'entityWithInitialisedEncryptedMetadata', arguments)\n this.checkEmptyEncryptionMetadata(entity)\n const secretId = this.primitives.randomUuid()\n const rawEncryptionKey = initialiseEncryptionKeys ? ua2hex(this.primitives.randomBytes(16)) : undefined\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const allIds = [selfId, ...new Set(additionalDelegations.filter((x) => x !== selfId))]\n const loadKeysResult = await this.loadEncryptionKeysForDelegates(entity, allIds)\n const updatedEntity = await allIds.reduce>(\n async (prevUpdate, delegateId) =>\n await this.createOrUpdateEntityDelegations(\n await prevUpdate,\n delegateId,\n [],\n [],\n [],\n [secretId],\n initialiseEncryptionKeys ? [rawEncryptionKey!] : [],\n owningEntity ? [owningEntity] : [],\n tags,\n loadKeysResult.keysForDelegates\n ),\n Promise.resolve(loadKeysResult.updatedEntity)\n )\n if (owningEntitySecretId) {\n updatedEntity.secretForeignKeys = [owningEntitySecretId]\n }\n return { updatedEntity, secretId, rawEncryptionKey }\n }\n\n async entityWithAutoExtendedEncryptedMetadata(\n entity: T,\n autoShareSecretIds: boolean,\n delegatesShareInfo: {\n [delegateId: string]: {\n shareSecretIds?: string[]\n shareEncryptionKey?: ShareMetadataBehaviour\n shareOwningEntityIds?: ShareMetadataBehaviour\n }\n }\n ): Promise {\n if (!Object.keys(delegatesShareInfo).length) {\n throw new Error('Must specify at least a delegate')\n }\n let defaultSecretIds: string[] | undefined\n if (autoShareSecretIds) {\n const availableSecretIds = await this.secretIdsOf(entity)\n if (availableSecretIds.length) {\n defaultSecretIds = availableSecretIds\n } else {\n defaultSecretIds = [this.primitives.randomUuid()]\n }\n }\n const availableEncryptionKeys = await this.encryptionKeysOf(entity)\n const availableOwningEntityIds = await this.owningEntityIdsOf(entity)\n let updatedEntity = undefined\n for (const [delegateId, requests] of Object.entries(delegatesShareInfo)) {\n let shareSecretIds: string[] = autoShareSecretIds ? defaultSecretIds! : requests.shareSecretIds ?? []\n let actualShareEncryptionKeys: string[] = []\n if (requests.shareEncryptionKey !== ShareMetadataBehaviour.NEVER) {\n if (!availableEncryptionKeys.length && requests.shareEncryptionKey === ShareMetadataBehaviour.REQUIRED) {\n throw new Error(`Entity ${JSON.stringify(entity)} has no encryption keys or the current data owner can't access any encryption keys.`)\n }\n actualShareEncryptionKeys = availableEncryptionKeys\n }\n let actualShareOwningEntityIds: string[] = []\n if (requests.shareOwningEntityIds !== ShareMetadataBehaviour.NEVER) {\n if (!availableOwningEntityIds.length && requests.shareOwningEntityIds === ShareMetadataBehaviour.REQUIRED) {\n throw new Error(`Entity ${JSON.stringify(entity)} has no owning entity ids or the current data owner can't access any owning entity ids.`)\n }\n actualShareOwningEntityIds = availableOwningEntityIds\n }\n updatedEntity =\n (await this.entityWithExtendedEncryptedMetadata(\n updatedEntity ?? entity,\n delegateId,\n shareSecretIds,\n actualShareEncryptionKeys,\n actualShareOwningEntityIds\n )) ?? updatedEntity\n }\n return updatedEntity\n }\n\n /**\n * Updates encryption metadata for an entity in order to share it with a delegate or in order to add additional encrypted metadata for an existing\n * delegate.\n * The first time this method is used for a specific delegate it will give access to all unencrypted content of the entity to the delegate data\n * owner. Additionally, this method also allows to share new or existing secret ids (shareSecretId), encryption keys (shareEncryptionKeys) and\n * owning entity ids (shareOwningEntityIds) for the entity.\n * You can use methods like {@link secretIdsOf}, {@link secretIdsForHcpHierarchyOf}, {@link encryptionKeysOf}, ... to retrieve the data you want to\n * share. In most cases you may want to share everything related to the entity, but note that if you use confidential delegations for patients you\n * may want to avoid sharing the confidential secret ids of the current user with other hcps.\n * This method returns a modified copy of the entity.\n * @param entity entity which requires encryption metadata initialisation.\n * @param delegateId id of the delegate to share data with.\n * @param shareSecretIds secret ids to share.\n * @param shareEncryptionKeys encryption keys to share.\n * @param shareOwningEntityIds owning enttiy ids to share.\n * @param newTags tags to associate with the new encryption keys and metadata. Existing data won't be changed.\n * @throws if any of the shareX parameters is set to `true` but the corresponding piece of data could not be retrieved.\n * @return an updated copy of the entity.\n */\n async entityWithExtendedEncryptedMetadata(\n entity: T,\n delegateId: string,\n shareSecretIds: string[],\n shareEncryptionKeys: string[],\n shareOwningEntityIds: string[],\n newTags: string[] = []\n ): Promise {\n this.throwDetailedExceptionForInvalidParameter('entity.id', entity.id, 'entityWithSharedEncryptedMetadata', arguments)\n async function checkInputAndGet(input: string[], inputName: string, validate: (x: string) => boolean | Promise): Promise {\n for (const x of input) {\n const validation = validate(x)\n if (validation !== true && validation !== false && !(await validation)) throw new Error(`Invalid input for ${inputName}.`)\n }\n return input\n }\n const secretIdsToShare = await checkInputAndGet(shareSecretIds, 'secretIds', (x) => this.validateSecretId(x))\n const encryptionKeysToShare = await checkInputAndGet(shareEncryptionKeys, 'encryptionKeys', (x) => this.validateEncryptionKey(x))\n const owningEntityIdsToShare = await checkInputAndGet(shareOwningEntityIds, 'owningEntityIds', (x) => this.validateOwningEntityId(x))\n const deduplicateInfoSecretIds = await this.deduplicateDelegationsAndFilterRequiredEntries(\n delegateId,\n entity.delegations ?? {},\n secretIdsToShare,\n (x) => this.validateSecretId(x)\n )\n const deduplicateInfoEncryptionKeys = await this.deduplicateDelegationsAndFilterRequiredEntries(\n delegateId,\n entity.encryptionKeys ?? {},\n encryptionKeysToShare,\n (x) => this.validateEncryptionKey(x)\n )\n const deduplicateInfoOwningEntityIds = await this.deduplicateDelegationsAndFilterRequiredEntries(\n delegateId,\n entity.cryptedForeignKeys ?? {},\n owningEntityIdsToShare,\n (x) => this.validateOwningEntityId(x)\n )\n /*TODO\n * Temporary hack since secret id is necessary to create a delegation for access control: if there is no delegation existing from me to the\n * delegate and there is no new secret id to be created create a new random id.\n */\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n if (deduplicateInfoSecretIds.missingEntries.length === 0 && !deduplicateInfoSecretIds.deduplicatedDelegations.some((d) => d.owner === selfId)) {\n deduplicateInfoSecretIds.missingEntries.push(this.primitives.randomUuid())\n }\n if (\n deduplicateInfoSecretIds.missingEntries.length === 0 &&\n deduplicateInfoEncryptionKeys.missingEntries.length === 0 &&\n deduplicateInfoOwningEntityIds.missingEntries.length === 0\n )\n return undefined\n const { updatedEntity, keysForDelegates } = await this.loadEncryptionKeysForDelegates(entity, [delegateId])\n return this.createOrUpdateEntityDelegations(\n updatedEntity,\n delegateId,\n deduplicateInfoSecretIds.deduplicatedDelegations,\n deduplicateInfoEncryptionKeys.deduplicatedDelegations,\n deduplicateInfoOwningEntityIds.deduplicatedDelegations,\n deduplicateInfoSecretIds.missingEntries,\n deduplicateInfoEncryptionKeys.missingEntries,\n deduplicateInfoOwningEntityIds.missingEntries,\n newTags,\n keysForDelegates\n )\n }\n\n /**\n * Encrypts data using a key of the entity that the provided data owner can access (current data owner by default). If the provided data owner can\n * access multiple encryption keys of the entity there is no guarantee on which key will be used.\n * Note: you should not use this method to encrypt the `encryptedSelf` of iCure entities, since that will be automatically handled by the extended\n * apis. You should use this method only to encrypt additional data, such as document attachments.\n * @param entity an entity.\n * @param content data of the entity which you want to encrypt.\n * @param dataOwnerId optionally a data owner part of the hierarchy for the current data owner, defaults to the current data owner.\n * @param tagsFilter allows to use for encryption only keys associated to tags which pass the filter.\n * @return the encrypted data.\n * @throws if the provided data owner can't access any encryption keys for the entity.\n */\n async encryptDataOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n content: ArrayBuffer | Uint8Array,\n dataOwnerId?: string,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise {\n const keys = await this.encryptionKeysOf((await this.ensureEncryptionKeysInitialised(entity)) ?? entity, dataOwnerId, tagsFilter)\n if (keys.length === 0)\n throw new Error(\n `Could not extract any encryption keys of entity ${entity} for data owner ${\n dataOwnerId ?? (await this.dataOwnerApi.getCurrentDataOwnerId())\n }.`\n )\n return this.primitives.AES.encryptWithRawKey(keys[0], content)\n }\n\n /**\n * Decrypts data using a key of the entity that the provided data owner can access (current data owner by default). If the provided data owner can\n * access multiple encryption keys each of them will be tried for decryption until one of them gives a result that is valid according to the\n * provided validator.\n * Note: you should not use this method to decrypt the `encryptedSelf` of iCure entities, since that will be automatically handled by the extended\n * apis. You should use this method only to decrypt additional data, such as document attachments.\n * @param entity an entity.\n * @param content data of the entity which you want to decrypt.\n * @param dataOwnerId optionally a data owner part of the hierarchy for the current data owner, defaults to the current data owner.\n * @param validator a function which verifies the correctness of decrypted content: helps to identify decryption with the wrong key without relying\n * solely on padding.\n * @param tagsFilter allows to use for decryption only keys associated to tags which pass the filter.\n * @return the decrypted data.\n * @throws if the provided data owner can't access any encryption keys for the entity, or if no key could be found which provided valid decrypted\n * content according to the validator.\n */\n async tryDecryptDataOf(\n entity: EncryptedEntity | EncryptedEntityStub,\n content: ArrayBuffer | Uint8Array,\n validator: (decryptedData: ArrayBuffer) => Promise = () => Promise.resolve(true),\n dataOwnerId?: string,\n tagsFilter: (tags: string[]) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n const keys = await this.encryptionKeysOf(entity, dataOwnerId, tagsFilter)\n for (const key of keys) {\n try {\n const decrypted = await this.primitives.AES.decryptWithRawKey(key, content)\n if (await validator(decrypted)) return { data: decrypted, wasDecrypted: true }\n } catch (e) {\n /* ignore */\n }\n }\n return { data: content, wasDecrypted: false }\n }\n\n /**\n * @internal this method is intended for internal use only and may be changed without notice.\n * Decrypts the content of an encrypted entity.\n */\n async decryptEntity(\n entity: T,\n ownerId: string | undefined,\n constructor: (json: any) => T\n ): Promise<{ entity: T; decrypted: boolean }> {\n if (!entity.encryptedSelf) return { entity, decrypted: true }\n const encryptionKeys = await this.importAllValidKeys(await this.encryptionKeysOf(entity, ownerId))\n if (!encryptionKeys.length) return { entity, decrypted: false }\n return {\n entity: constructor(\n await decrypt(entity, async (encrypted) => {\n return (await this.tryDecryptJson(encryptionKeys, encrypted, false)) ?? {}\n })\n ),\n decrypted: true,\n }\n }\n\n /**\n * @internal this method is intended for internal use only and may be changed without notice.\n * Tries using the provided keys to decrypt some json.\n */\n async tryDecryptJson(\n potentialKeys: { key: CryptoKey; raw: string }[],\n encrypted: Uint8Array,\n truncateTrailingDecryptedNulls: boolean\n ): Promise<{} | undefined> {\n for (const key of potentialKeys) {\n try {\n const decrypted = (await this.primitives.AES.decrypt(key.key, encrypted, key.raw)) ?? encrypted\n const text = ua2utf8(truncateTrailingDecryptedNulls ? truncateTrailingNulls(new Uint8Array(decrypted)) : decrypted)\n return JSON.parse(text)\n } catch (e) {}\n }\n return undefined\n }\n\n /**\n * @internal this method is intended for internal use only and may be changed without notice.\n * Tries to encrypt the content of an encrypted entity.\n * 1. If valid key for encryption is found the method returns the entity with the encrypted fields specified by cryptedKeys\n * 2. If requireEncryption is true and no key could be found for encryption of the entity the method fails.\n * 3. If requireEncryption is false and no key could be found for encryption the method will only check that the entity does not specify any value\n * for fields which should be encrypted according to cryptedKeys (e.g. note in a patient by default). If the entity specifies a value for any field\n * which should be encrypted the method throws an error, otherwise the method returns the original entity.\n */\n async tryEncryptEntity(\n entity: T,\n dataOwnerId: string | undefined,\n cryptedKeys: string[],\n encodeBinaryData: boolean,\n requireEncryption: boolean,\n constructor: (json: any) => T\n ): Promise {\n const entityWithInitialisedEncryptionKeys = await this.ensureEncryptionKeysInitialised(entity)\n const encryptionKey = await this.tryImportFirstValidKey(await this.encryptionKeysOf(entity, dataOwnerId), entity.id!)\n if (!!encryptionKey) {\n return constructor(\n await crypt(\n entityWithInitialisedEncryptionKeys,\n (obj) => {\n const json = encodeBinaryData\n ? JSON.stringify(obj, (k, v) => {\n return v instanceof ArrayBuffer || v instanceof Uint8Array\n ? b2a(new Uint8Array(v).reduce((d, b) => d + String.fromCharCode(b), ''))\n : v\n })\n : JSON.stringify(obj)\n return this.primitives.AES.encrypt(encryptionKey.key, utf8_2ua(json), encryptionKey.raw)\n },\n cryptedKeys\n )\n )\n } else if (requireEncryption) {\n throw new Error(`No key found for encryption of entity ${entity}`)\n } else {\n const cryptedCopyWithRandomKey = await crypt(\n _.cloneDeep(entity),\n async (obj: { [key: string]: string }) => Promise.resolve(new ArrayBuffer(1)),\n cryptedKeys\n )\n if (\n !_.isEqual(\n _.omitBy({ ...cryptedCopyWithRandomKey, encryptedSelf: undefined }, _.isNil),\n _.omitBy({ ...entity, encryptedSelf: undefined }, _.isNil)\n )\n ) {\n throw new Error(`Impossible to modify encrypted value of an entity if no encryption key is known.\\n${entity}`)\n }\n return entity\n }\n }\n\n /**\n * @internal This method is for internal use only and may be changed without notice.\n * Ensures that the encryption keys of an entity are initialised. If not will throw an exception or initialise them depending on the content of\n * the entity. This function supports migration of entities using older encryption schemes (delegation only without encrypted keys) or entities\n * which were previously not encrypted.\n */\n async ensureEncryptionKeysInitialised(entity: T): Promise {\n if (Object.keys(entity.encryptionKeys ?? {}).length > 0) return entity\n if (!entity.rev) {\n throw new Error(\n 'New encrypted entity is lacking encryption metadata. ' +\n 'Please instantiate new entities using the `newInstance` method from the respective extended api.'\n )\n }\n /*\n * If entity was using delegations as legacy encryption keys we will essentially revoke the access to the encrypted data for all other data\n * owners. This however should not be a problem as this form of legacy entities should not exist anymore, and it should be present only in the\n * databases of hcps without collaborators.\n */\n return await this.entityWithExtendedEncryptedMetadata(\n entity,\n await this.dataOwnerApi.getCurrentDataOwnerId(),\n [],\n [ua2hex(this.primitives.randomBytes(16))],\n []\n )\n }\n\n /**\n * Get the decrypted content of a delegation-like object which the provided data owner would be able to access using ONLY HIS EXCHANGE KEYS (does\n * not consider exchange keys for parents).\n * Note that the retrieved exchange keys are decrypted using the private keys available on the device, and results may vary from other devices.\n * @param dataOwnerId id of a data owner, he should be part of the current data owner hierarchy.\n * @param delegations a delegation-like object containing the encrypted key\n * @param includeFromDelegations if true also considers delegation from the provided data owner (or parents) to look for values. This allows to\n * decrypt delegations associated to exchange keys recovered after a giveAccessBack request.\n * @param validateDecrypted validates the decrypted result, to drop decryption results with wrong key that still gave a valid checksum.\n * @param tagsFilter allows to obtain only encryption keys associated to tags which satisfy the provided filter.\n * @return the key which could be decrypted using only keys available on the current device and delegations from/to the provided data owner. May\n * contain duplicates.\n */\n private async extractFromDelegationsForDataOwner(\n dataOwnerId: string,\n delegations: { [delegateId: string]: Delegation[] },\n includeFromDelegations: boolean,\n validateDecrypted: (result: string) => boolean | Promise,\n tagsFilter: (tags: string[]) => Promise\n ): Promise {\n const delegationsWithOwner = includeFromDelegations\n ? Object.entries(delegations).flatMap(([delegateId, delegations]) =>\n dataOwnerId === delegateId\n ? this.populateDelegatedTo(delegateId, delegations)\n : this.populateDelegatedTo(\n delegateId,\n delegations.filter((d) => d.owner === dataOwnerId)\n )\n )\n : delegations[dataOwnerId] ?? []\n const res = []\n for (const delegation of delegationsWithOwner) {\n if (await tagsFilter(delegation.tags ?? [])) {\n const decrypted = await this.tryDecryptDelegation(delegation, (k) => validateDecrypted(k))\n if (decrypted) res.push(decrypted)\n }\n }\n return res\n }\n\n // Ensures that the delegatedTo field of delegations has the appropriate values, else returns a copy of the delegations with the appropriate value.\n private populateDelegatedTo(delegateId: string, delegations: Delegation[]): Delegation[] {\n return delegations.map((d) => (d.delegatedTo === delegateId ? d : { ...d, delegatedTo: delegateId }))\n }\n\n private async extractedHierarchyFromDelegation(\n delegations: { [delegateId: string]: Delegation[] },\n validateDecrypted: (result: string) => boolean | Promise,\n tagsFilter: (tags: string[]) => Promise\n ): Promise<{ ownerId: string; extracted: string[] }[]> {\n return Promise.all(\n (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()).map(async (ownerId) => {\n const extracted = this.deduplicate(\n await this.extractFromDelegationsForDataOwner(\n ownerId,\n delegations,\n true,\n (k) => validateDecrypted(k),\n (t) => tagsFilter(t)\n )\n )\n return { ownerId, extracted }\n })\n )\n }\n\n /**\n * @internal This method should be private but is currently public/internal to allow to continue supporting legacy methods\n */\n async extractMergedHierarchyFromDelegationAndOwner(\n delegations: { [delegateId: string]: Delegation[] },\n dataOwnerId: string | undefined,\n validateDecrypted: (result: string) => boolean | Promise,\n tagsFilter: (tags: string[]) => Promise\n ): Promise {\n const hierarchy = dataOwnerId\n ? await this.dataOwnerApi.getCurrentDataOwnerHierarchyIdsFrom(dataOwnerId)\n : await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n const extractedByOwner = await Promise.all(\n // Reverse is just to keep method behaviour as close as possible to the legacy behaviour, in case someone depended on the ordering.\n [...hierarchy].reverse().map((ownerId) =>\n this.extractFromDelegationsForDataOwner(\n ownerId,\n delegations,\n true,\n (k) => validateDecrypted(k),\n (t) => tagsFilter(t)\n )\n )\n )\n return this.deduplicate(extractedByOwner.flatMap((x) => x))\n }\n\n private async tryDecryptDelegation(\n delegation: Delegation,\n validateDecrypted: (result: string) => boolean | Promise\n ): Promise {\n const exchangeKeys = await this.exchangeKeysManager.getDecryptionExchangeKeysFor(delegation.owner!, delegation.delegatedTo!)\n for (const key of exchangeKeys) {\n try {\n // Format of encrypted key for any delegation should be entityId:key, but with the merging of entities the entityId might not match the\n // current id. As a checksum we are only verifying that the decrypted bytes can be represented as a string with exactly one ':'.\n // Additionally, we also have a validator that is specific for each type of delegation content (encryption key, secret id, ...)\n const decrypted = ua2string(await this.primitives.AES.decrypt(key, hex2ua(delegation.key!)))\n const decryptedSplit = decrypted.split(':')\n if (decryptedSplit.length === 2) {\n const validation = validateDecrypted(decryptedSplit[1])\n if (validation === true || (validation !== false && (await validation))) return decryptedSplit[1]\n } else {\n console.warn(\"Error in the decrypted delegation: content should contain exactly 1 ':', the delegation is ignored.\")\n }\n } catch (e) {\n // Do nothing: the delegation uses another exchange key owner->delegator\n }\n }\n }\n\n private async tryImportKey(key: string): Promise {\n if (!/^[0-9A-Fa-f\\-]+$/g.test(key)) return undefined\n try {\n return await this.primitives.AES.importKey('raw', hex2ua(key.replace(/-/g, '')))\n } catch (e) {\n console.warn(`Could not import key ${key} as an encryption key.`, e)\n return undefined\n }\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice.\n */\n async importFirstValidKey(keys: string[], entityId: string): Promise<{ key: CryptoKey; raw: string }> {\n const res = await this.tryImportFirstValidKey(keys, entityId)\n if (!res) throw new Error(`Could not find any valid key for entity ${entityId}.`)\n return res\n }\n\n private async tryImportFirstValidKey(keys: string[], entityId: string): Promise<{ key: CryptoKey; raw: string } | undefined> {\n for (const key of keys) {\n const imported = await this.tryImportKey(key)\n if (imported) return { key: imported, raw: key }\n }\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice.\n */\n async importAllValidKeys(keys: string[]): Promise<{ key: CryptoKey; raw: string }[]> {\n const res = []\n for (const key of keys) {\n const imported = await this.tryImportKey(key)\n if (imported) res.push({ key: imported, raw: key })\n }\n return res\n }\n\n private async validateEncryptionKey(key: string): Promise {\n return !!(await this.tryImportKey(key))\n }\n\n private validateSecretId(key: string): boolean {\n return !!key\n }\n\n private validateOwningEntityId(key: string): boolean {\n return !!key\n }\n\n private async createEncryptionKeyDelegation(\n entityId: string,\n delegateId: string,\n exchangeKey: CryptoKey,\n encryptionKey: string,\n newTags: string[]\n ): Promise {\n if (!(await this.validateEncryptionKey(encryptionKey))) throw new Error(`Invalid encryption key ${encryptionKey}`)\n return this.createDelegation(entityId, delegateId, exchangeKey, encryptionKey, newTags)\n }\n\n private async createSecretIdDelegation(\n entityId: string,\n delegateId: string,\n exchangeKey: CryptoKey,\n secretId: string,\n newTags: string[]\n ): Promise {\n if (!this.validateSecretId(secretId)) throw new Error(`Invalid secret id ${secretId}`)\n return this.createDelegation(entityId, delegateId, exchangeKey, secretId, newTags)\n }\n\n private async createOwningEntityIdDelegation(\n entityId: string,\n delegateId: string,\n exchangeKey: CryptoKey,\n owningEntityId: string,\n newTags: string[]\n ): Promise {\n if (!this.validateOwningEntityId(owningEntityId)) throw new Error(`Invalid owning id ${owningEntityId}`)\n return this.createDelegation(entityId, delegateId, exchangeKey, owningEntityId, newTags)\n }\n\n private async createDelegation(\n entityId: string,\n delegateId: string,\n exchangeKey: CryptoKey,\n content: string,\n newTags: string[]\n ): Promise {\n if (entityId.includes(':')) throw new Error(\"Ids for encrypted entities are not allowed to contain ':'\")\n if (content.includes(':')) throw new Error(\"Content of delegations can not contain ':'\")\n return {\n delegatedTo: delegateId,\n owner: await this.dataOwnerApi.getCurrentDataOwnerId(),\n key: ua2hex(await this.primitives.AES.encrypt(exchangeKey, string2ua(entityId + ':' + content))),\n tags: newTags,\n }\n }\n\n private async loadEncryptionKeysForDelegates(\n entity: T,\n delegates: string[]\n ): Promise<{ updatedEntity: T; keysForDelegates: { [delegateId: string]: CryptoKey[] } }> {\n const { updatedDelegator, keysForDelegates } = await delegates.reduce(\n async (acc, delegateId) => {\n const awaitedAcc = await acc\n const currUpdateResult = await this.exchangeKeysManager.getOrCreateEncryptionExchangeKeysTo(delegateId)\n return {\n updatedDelegator: currUpdateResult.updatedDelegator ?? awaitedAcc.updatedDelegator,\n keysForDelegates: {\n ...awaitedAcc.keysForDelegates,\n [delegateId]: currUpdateResult.keys,\n },\n }\n },\n Promise.resolve({\n updatedDelegator: undefined as CryptoActorStubWithType | undefined,\n keysForDelegates: {} as { [delegateId: string]: CryptoKey[] },\n })\n )\n const updatedEntity =\n entity.id === updatedDelegator?.stub?.id\n ? {\n ...entity,\n rev: updatedDelegator!.stub.rev,\n hcPartyKeys: updatedDelegator!.stub.hcPartyKeys,\n aesExchangeKeys: updatedDelegator!.stub.aesExchangeKeys,\n }\n : entity\n return { updatedEntity, keysForDelegates }\n }\n\n private async createOrUpdateEntityDelegations(\n entity: T,\n delegateId: string,\n existingSecretIds: Delegation[],\n existingEncryptionKeys: Delegation[],\n existingOwningEntityIds: Delegation[],\n newSecretIds: string[],\n newEncryptionKeys: string[],\n newOwningEntityIds: string[],\n newTags: string[],\n keysForDelegates: { [delegateId: string]: CryptoKey[] }\n ): Promise {\n const entityCopy = _.cloneDeep(entity)\n if (newSecretIds.length === 0 && newEncryptionKeys.length === 0 && newOwningEntityIds.length === 0) return entityCopy\n const chosenKey = keysForDelegates[delegateId][0]\n const updatedSecretIds = [\n ...existingSecretIds,\n ...(await Promise.all(newSecretIds.map((x) => this.createSecretIdDelegation(entity.id!, delegateId, chosenKey, x, newTags)))),\n ]\n const updatedEncryptionKeys = [\n ...existingEncryptionKeys,\n ...(await Promise.all(newEncryptionKeys.map((x) => this.createEncryptionKeyDelegation(entity.id!, delegateId, chosenKey, x, newTags)))),\n ]\n const updatedOwningEntityIds = [\n ...existingOwningEntityIds,\n ...(await Promise.all(newOwningEntityIds.map((x) => this.createOwningEntityIdDelegation(entity.id!, delegateId, chosenKey, x, newTags)))),\n ]\n if (updatedSecretIds.length > 0) {\n entityCopy.delegations = {\n ...(entity.delegations ?? {}),\n [delegateId]: updatedSecretIds,\n }\n }\n if (updatedEncryptionKeys.length > 0) {\n entityCopy.encryptionKeys = {\n ...(entity.encryptionKeys ?? {}),\n [delegateId]: updatedEncryptionKeys,\n }\n }\n if (updatedOwningEntityIds.length > 0) {\n entityCopy.cryptedForeignKeys = {\n ...(entity.cryptedForeignKeys ?? {}),\n [delegateId]: updatedOwningEntityIds,\n }\n }\n return entityCopy\n }\n\n /**\n * De-duplicates all currently accessible delegations, by removing any delegations created by the current data owner which have duplicated content,\n * and checks if any of the required entries are currently available to the delegate through the existing delegations.\n * @param delegateId id of the delegate.\n * @param allDelegations delegations of the entity.\n * @param requiredEntries potentially new entries that the delegate needs to be able to access from the delegations.\n * @param validateDecrypted validator for decrypted delegation content\n * @return the deduplicated delegations\n */\n private async deduplicateDelegationsAndFilterRequiredEntries(\n delegateId: string,\n allDelegations: { [delegateId: string]: Delegation[] },\n requiredEntries: string[],\n validateDecrypted: (x: string) => boolean | Promise\n ): Promise<{\n deduplicatedDelegations: Delegation[]\n missingEntries: string[]\n }> {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const delegationsToDelegate = allDelegations[delegateId] ?? []\n const decryptedDelegations = await Promise.all(\n delegationsToDelegate.map(async (d) => ({\n delegation: d,\n content: d.owner === selfId ? await this.tryDecryptDelegation(d, (x) => validateDecrypted(x)) : undefined,\n }))\n )\n const deduplicatedDelegations: Delegation[] = []\n const deduplicatedContent = new Map()\n decryptedDelegations.forEach(({ delegation, content }) => {\n if (content === undefined) {\n // Keep all delegations we could not decrypt or from other data owners\n deduplicatedDelegations.push(delegation)\n } else {\n const deduplicatedTags = deduplicatedContent.get(content)\n if (!deduplicatedTags) {\n deduplicatedContent.set(content, [delegation.tags ?? []])\n deduplicatedDelegations.push(delegation)\n } else if (!deduplicatedTags.some((t) => arrayEquals(t, delegation.tags ?? []))) {\n deduplicatedTags.push(delegation.tags ?? [])\n deduplicatedDelegations.push(delegation)\n }\n }\n })\n const delegationsFromDelegateToSelf = (allDelegations[selfId] ?? []).filter((d) => d.owner === delegateId)\n const decryptedDelegationsFromDelegate = new Set(\n await Promise.all(delegationsFromDelegateToSelf.map((d) => this.tryDecryptDelegation(d, (x) => validateDecrypted(x)))).then((dels) =>\n dels.flatMap((x) => (x ? [x] : []))\n )\n )\n return {\n deduplicatedDelegations,\n missingEntries: requiredEntries.filter((entry) => !(deduplicatedContent.has(entry) || decryptedDelegationsFromDelegate.has(entry))),\n }\n }\n\n private deduplicate(values: T[]): T[] {\n return [...new Set(values)]\n }\n\n private throwDetailedExceptionForInvalidParameter(argName: string, argValue: any, methodName: string, methodArgs: IArguments) {\n if (argValue) return\n\n let details = '\\nMethod name: icc-crypto-x-api.' + methodName + '()\\nArguments:'\n\n if (methodArgs) {\n try {\n const argsArray = [...methodArgs]\n _.each(argsArray, (arg, index) => (details += '\\n[' + index + ']: ' + JSON.stringify(arg)))\n } catch (ex) {\n details += '; a problem occured while logging arguments details: ' + ex\n }\n }\n\n throw new Error('### THIS SHOULD NOT HAPPEN: ' + argName + ' has an invalid value: ' + argValue + details)\n }\n\n private checkEmptyEncryptionMetadata(entity: EncryptedEntity) {\n const existingMetadata = []\n if (entity.delegations && Object.keys(entity.delegations).length) existingMetadata.push('delegations')\n if (entity.cryptedForeignKeys && Object.keys(entity.cryptedForeignKeys).length) existingMetadata.push('cryptedForeignKeys')\n if (entity.encryptionKeys && Object.keys(entity.encryptionKeys).length) existingMetadata.push('encryptionKeys')\n if (entity.secretForeignKeys && entity.secretForeignKeys.length) existingMetadata.push('secretForeignKeys')\n if (existingMetadata.length > 0) {\n throw new Error(\n `Entity should have no encryption metadata on initialisation, but the following fields already have some values: ${existingMetadata}\\n` +\n JSON.stringify(entity, undefined, 2)\n )\n }\n }\n}\n","import { KeyManager } from './KeyManager'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { LruTemporisedAsyncCache } from '../utils/lru-temporised-async-cache'\nimport { loadPublicKeys } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\n/**\n * @internal This class is meant only for internal use and may be changed without notice.\n * More powerful version of {@link BaseExchangeKeysManager} with a simplified interface. Has the following functionalities:\n * - Caches results\n * - Automatically creates new exchange keys if none is available\n * - Automatically choose the public keys to use during the creation of new exchange keys\n * - Automatically retrieves the private keys to use during decryption.\n */\nexport class ExchangeKeysManager {\n private readonly keyManager: KeyManager\n private readonly baseExchangeKeysManager: BaseExchangeKeysManager\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly cryptoStrategies: CryptoStrategies\n private readonly primitives: CryptoPrimitives\n private readonly icureStorage: IcureStorageFacade\n /*\n * Exchange keys cache where the current user is the delegator. The keys where the delegator is the current user should never change without\n * an action from the delegator (unless he does this action from another device), so it should be safe to store them without expiration. However,\n * the delegator may still have a lot of exchange keys (e.g. doctor -> all patients), so it is not safe to have a cache with unlimited size.\n */\n private delegatorExchangeKeysCache: LruTemporisedAsyncCache\n /*\n * Exchange keys cache where the current user is not the delegator. There may be many keys where the current user is the delegate,\n * and they may change over time without any action from the current data owner, since the delegator is someone else. For this reason the cache must\n * be limited in size and it should not use data that is too old, as it may be outdated.\n */\n private delegatedExchangeKeysCache: LruTemporisedAsyncCache\n\n get base(): BaseExchangeKeysManager {\n return this.baseExchangeKeysManager\n }\n\n constructor(\n delegatorKeysCacheSize: number,\n delegatedKeysCacheSize: number,\n delegatedKeysCacheLifetimeMsBase: number,\n delegatedKeysCacheLifetimeMsNoKeys: number,\n cryptoStrategies: CryptoStrategies,\n primitives: CryptoPrimitives,\n keyManager: KeyManager,\n baseExchangeKeysManager: BaseExchangeKeysManager,\n dataOwnerApi: IccDataOwnerXApi,\n icureStorage: IcureStorageFacade\n ) {\n this.primitives = primitives\n this.cryptoStrategies = cryptoStrategies\n this.keyManager = keyManager\n this.baseExchangeKeysManager = baseExchangeKeysManager\n this.dataOwnerApi = dataOwnerApi\n this.delegatedExchangeKeysCache = new LruTemporisedAsyncCache(delegatedKeysCacheSize, (keys) =>\n keys.length > 0 ? delegatedKeysCacheLifetimeMsBase : delegatedKeysCacheLifetimeMsNoKeys\n )\n this.delegatorExchangeKeysCache = new LruTemporisedAsyncCache(delegatorKeysCacheSize, () => -1)\n this.icureStorage = icureStorage\n }\n\n /**\n * Get exchange keys from the current data owner to the provided delegate which are safe for encryption according to the locally verified keys.\n * If currently there is no exchange key towards the provided delegate which is safe for encryption a new one will be automatically created.\n * @param delegateId a delegate\n * @return an object with the following fields:\n * - keys: all available exchange keys which are safe for encryption.\n * - updatedDelegator (optional): if a new key creation job was started when the function was invoked the updated delegator, else undefined.\n */\n async getOrCreateEncryptionExchangeKeysTo(delegateId: string): Promise<{ updatedDelegator?: CryptoActorStubWithType; keys: CryptoKey[] }> {\n const currentKeys = await this.getSelfExchangeKeysTo(delegateId)\n if (currentKeys.length > 0) {\n return { keys: currentKeys }\n } else {\n while (true) {\n let updatedDelegatorJob: Promise | undefined = undefined\n const keysWithNew = await this.delegatorExchangeKeysCache.get(\n delegateId,\n async (previous) => {\n const fullJob = this.forceCreateVerifiedExchangeKeyTo(delegateId)\n updatedDelegatorJob = fullJob.then(({ updatedDelegator }) => updatedDelegator)\n let existingKeys = previous ? previous : await this.forceGetSelfExchangeKeysTo(delegateId)\n return fullJob.then(({ key }) => [...existingKeys, key])\n },\n (v) => !v.length\n )\n if (keysWithNew.length > 0) {\n const updatedDelegator = updatedDelegatorJob ? await updatedDelegatorJob : undefined\n return updatedDelegator ? { keys: keysWithNew, updatedDelegator } : { keys: keysWithNew }\n }\n }\n /*NOTE:\n * in case of two concurrent calls to `getOrCreateEncryptionExchangeKeysTo` only one of the calls will receive the updated delegator. This could\n * be a problem if one of the callers would want to update the delegator for other reasons as well, as the request would result in a database\n * conflict. This situation however should be very rare and will be fully resolved in the near future when delegations will be moved out of the\n * data owner objects and into a specific database.\n */\n }\n }\n\n /**\n * Get all keys currently available for a delegator-delegate pair. At least one of the two data owners must be part of the hierarchy for the current\n * data owner.\n * @param delegatorId id of a delegator\n * @param delegateId id of a delegate\n * @throws if neither the delegator nor the delegate is part of the hierarchy of the current data owner.\n * @return all available exchange keys from the delegator-delegate pair.\n */\n async getDecryptionExchangeKeysFor(delegatorId: string, delegateId: string): Promise {\n if (delegatorId === (await this.dataOwnerApi.getCurrentDataOwnerId())) {\n return await this.getSelfExchangeKeysTo(delegateId)\n } else {\n const key = `${delegatorId}->${delegateId}`\n const hierarchyIds = await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()\n if (!hierarchyIds.some((x) => x === delegateId || x === delegatorId))\n throw new Error(`Trying to retrieve exchange key ${key} but current data owner hierarchy is ${hierarchyIds}`)\n return await this.delegatedExchangeKeysCache.get(key, () => this.forceGetExchangeKeysFor(delegatorId, delegateId))\n }\n }\n\n /**\n * Empties the exchange keys cache.\n * @param includeKeysFromCurrentDataOwner if true also clears the\n */\n clearCache(includeKeysFromCurrentDataOwner: boolean) {\n if (includeKeysFromCurrentDataOwner) this.delegatorExchangeKeysCache.clear()\n this.delegatedExchangeKeysCache.clear()\n }\n\n private async forceGetExchangeKeysFor(delegatorId: string, delegateId: string): Promise {\n const encKeys = await this.baseExchangeKeysManager.getEncryptedExchangeKeysFor(delegatorId, delegateId)\n return (await this.baseExchangeKeysManager.tryDecryptExchangeKeys(encKeys, this.keyManager.getDecryptionKeys())).successfulDecryptions\n }\n\n private async getSelfExchangeKeysTo(delegateId: string): Promise {\n return await this.delegatorExchangeKeysCache.get(delegateId, () => this.forceGetSelfExchangeKeysTo(delegateId))\n }\n\n private async forceGetSelfExchangeKeysTo(delegateId: string): Promise {\n // Retrieve then try to decrypt with own and parent key pairs\n const encKeys = await this.baseExchangeKeysManager.getEncryptedExchangeKeysFor(await this.dataOwnerApi.getCurrentDataOwnerId(), delegateId)\n const { successfulDecryptions } = await this.baseExchangeKeysManager.tryDecryptExchangeKeys(encKeys, this.keyManager.getDecryptionKeys())\n return successfulDecryptions\n }\n\n private async forceCreateVerifiedExchangeKeyTo(delegateId: string): Promise<{ updatedDelegator: CryptoActorStubWithType; key: CryptoKey }> {\n const [mainKey, ...otherSelfKeys] = this.keyManager.getSelfVerifiedKeys()\n let otherPublicKeys = Object.fromEntries(otherSelfKeys.map((x) => [x.fingerprint, x.pair.publicKey]))\n if (delegateId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) {\n const delegate = await this.dataOwnerApi.getCryptoActorStub(delegateId)\n const delegatePublicKeys = Array.from(this.dataOwnerApi.getHexPublicKeysOf(delegate.stub))\n let verifiedDelegatePublicKeys: string[]\n if ((await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds()).includes(delegateId)) {\n verifiedDelegatePublicKeys = await this.keyManager.getVerifiedPublicKeysFor(delegate.stub)\n } else {\n verifiedDelegatePublicKeys = await this.cryptoStrategies.verifyDelegatePublicKeys(delegate, delegatePublicKeys, this.primitives)\n }\n if (!verifiedDelegatePublicKeys || verifiedDelegatePublicKeys.length == 0)\n throw new Error(`No verified public keys for delegate ${delegateId}: impossible to create new exchange key.`)\n otherPublicKeys = {\n ...otherPublicKeys,\n ...(await loadPublicKeys(this.primitives.RSA, verifiedDelegatePublicKeys)),\n }\n }\n return await this.baseExchangeKeysManager.createOrUpdateEncryptedExchangeKeyTo(delegateId, mainKey.pair, otherPublicKeys)\n }\n}\n","import { DataOwner, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyPair } from './RSA'\nimport { ua2hex } from '../utils'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { fingerprintToPublicKeysMapOf, loadPublicKeys } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { KeyRecovery } from './KeyRecovery'\nimport { CryptoStrategies } from './CryptoStrategies'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\ntype KeyPairData = { pair: KeyPair; isVerified: boolean; isDevice: boolean }\ntype KeyRecovererAndVerifier = (\n keysData: {\n dataOwner: DataOwnerWithType\n unknownKeys: string[]\n unavailableKeys: string[]\n }[]\n) => Promise<{\n [dataOwnerId: string]: {\n recoveredKeys: { [keyPairFingerprint: string]: KeyPair }\n keyAuthenticity: { [keyPairFingerprint: string]: boolean }\n }\n}>\ntype CurrentOwnerKeyGenerator = (self: DataOwnerWithType) => Promise | boolean>\n\n/**\n * Allows to manage public and private keys for the current user and his parent hierarchy.\n */\nexport class KeyManager {\n private readonly primitives: CryptoPrimitives\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly keyRecovery: KeyRecovery\n private readonly icureStorage: IcureStorageFacade\n private readonly baseExchangeKeyManager: BaseExchangeKeysManager\n private readonly strategies: CryptoStrategies\n\n private selfId: string | undefined\n private selfLegacyPublicKey: string | undefined\n private keysCache: { [selfOrParentId: string]: { [pubKeyFingerprint: string]: KeyPairData } } | undefined = undefined\n\n constructor(\n primitives: CryptoPrimitives,\n dataOwnerApi: IccDataOwnerXApi,\n icureStorage: IcureStorageFacade,\n keyRecovery: KeyRecovery,\n baseExchangeKeyManager: BaseExchangeKeysManager,\n strategies: CryptoStrategies\n ) {\n this.primitives = primitives\n this.icureStorage = icureStorage\n this.dataOwnerApi = dataOwnerApi\n this.keyRecovery = keyRecovery\n this.baseExchangeKeyManager = baseExchangeKeyManager\n this.strategies = strategies\n }\n\n /**\n * Get the public keys of available key pairs for the current user in hex-encoded spki representation (uses cached keys: no request is done to the\n * server).\n * By setting {@link verifiedOnly} to true only the public keys for verified key pairs will be returned: these will include only key pairs created\n * on this device or which have been verified using {@link CryptoStrategies} on this device.\n * @param verifiedOnly if true only the verified public keys will be returned.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise {\n this.ensureInitialised()\n let selectedData = Object.values(this.keysCache![this.selfId!])\n if (verifiedOnly) {\n selectedData = selectedData.filter((data) => data.isVerified || data.isDevice)\n }\n return await Promise.all(selectedData.map(async (keyData) => ua2hex(await this.primitives.RSA.exportKey(keyData.pair.publicKey, 'spki'))))\n }\n\n /**\n * Get the public keys of available key pairs for the current user and his parents in hex-encoded spki representation (uses cached keys: no request\n * is done to the server).\n * Note that this will also include unverified keys.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise {\n return await Promise.all(\n Object.values(this.keysCache!)\n .flatMap((pairsForParent) => Object.values(pairsForParent))\n .map(async (keyPairData) => ua2hex(await this.primitives.RSA.exportKey(keyPairData.pair.publicKey, 'spki')))\n )\n }\n\n /**\n * Get a key pair with the provided fingerprint if present.\n * @param fingerprint a key-pair/public-key fingerprint\n * @return the pair associated to the fingerprint and a boolean indicating if the pair is verified, if present, else undefined\n */\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair; verified: boolean } | undefined {\n const foundVerified = this.getSelfVerifiedKeys().find((x) => x.fingerprint === fingerprint)\n if (foundVerified) return { pair: foundVerified.pair, verified: true }\n const foundOther = this.getDecryptionKeys()[fingerprint]\n if (foundOther) return { pair: foundOther, verified: false }\n return undefined\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Initializes all keys for the current data owner. This method needs to be called before any other method of this class can be used.\n * @throws if the current user is not a data owner, or if there is no key and no new key could be created according to this manager crypt\n * strategies.\n * @return if a new key was created during initialisation the newly created key, else undefined.\n */\n async initialiseKeys(): Promise<{ newKeyPair: KeyPair; newKeyFingerprint: string } | undefined> {\n const newKey = await this.doLoadKeys(\n (x) => this.strategies.recoverAndVerifySelfHierarchyKeys(x, this.primitives),\n (x) => this.strategies.generateNewKeyForDataOwner(x, this.primitives)\n )\n return newKey ? { newKeyPair: newKey.pair, newKeyFingerprint: newKey.fingerprint } : undefined\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Forces to reload keys for the current data owner. This could be useful if the data owner has logged in from another device in order to update the\n * transfer keys.\n * This method will complete only after keys have been reloaded successfully.\n */\n async reloadKeys(): Promise {\n await this.doLoadKeys(\n (x) =>\n Promise.resolve(\n x.reduce(\n (acc, { dataOwner }) => ({ ...acc, [dataOwner.dataOwner.id!]: { recoveredKeys: {}, keyAuthenticity: {} } }),\n {} as {\n [dataOwnerId: string]: {\n recoveredKeys: { [keyPairFingerprint: string]: KeyPair }\n keyAuthenticity: { [keyPairFingerprint: string]: boolean }\n }\n }\n )\n ),\n (x) => {\n throw new Error(\"Can't create new keys at reload time: it should have already been created on initialisation\")\n }\n )\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Get all verified key pairs for the current data owner which can safely be used for encryption. This includes all key pairs created on the current\n * device and all recovered key pairs which have been verified.\n * The keys returned by this method will be in the following order:\n * 1. Legacy key pair if it is verified\n * 2. All device key pais, in alphabetical order according to the fingerprint\n * 3. Other verified key pairs, in alphabetical order according to the fingerprint\n * @return all verified keys, in order.\n */\n getSelfVerifiedKeys(): { fingerprint: string; pair: KeyPair }[] {\n this.ensureInitialised()\n const selfKeys = this.keysCache![this.selfId!]\n const allKeysEntries = Object.entries(selfKeys)\n\n const legacyKeyFp = this.selfLegacyPublicKey?.slice(-32)\n const legacyKeyData = legacyKeyFp ? selfKeys[legacyKeyFp] : undefined\n const legacyEntry = legacyKeyData?.isVerified && legacyKeyFp ? [{ fingerprint: legacyKeyFp, pair: legacyKeyData.pair }] : []\n\n function filteredEntries(filterFunction: (fp: string, data: KeyPairData) => boolean) {\n return allKeysEntries\n .filter(([fp, data]) => filterFunction(fp, data) && fp !== legacyKeyFp)\n .sort(([a], [b]) => {\n // need to make sure that the comparison is independent of the locale, but the actual ordering is not that important\n return a == b ? 0 : a > b ? 1 : -1\n })\n .map(([fingerprint, { pair }]) => ({ fingerprint, pair }))\n }\n return [...legacyEntry, ...filteredEntries((_, data) => data.isDevice), ...filteredEntries((_, data) => !data.isDevice && data.isVerified)]\n }\n\n /**\n * Get all verified keys for a member of the current data owner hierarchy in no particular order.\n * @param dataOwner the current data owner or a member of his hierarchy.\n * @throws if the provided data owner is not part of the current data owner hierarchy\n */\n async getVerifiedPublicKeysFor(dataOwner: DataOwner): Promise {\n this.ensureInitialised()\n const availableKeys = this.keysCache![dataOwner.id!]\n if (!availableKeys) throw new Error(`Data owner ${dataOwner.id} is not part of the hierarchy of the current data owner ${this.selfId}`)\n const availableVerifiedKeysFp = new Set(Object.entries(availableKeys).flatMap(([fp, info]) => (info.isVerified || info.isDevice ? [fp] : [])))\n const otherVerifiedFp = new Set(\n Object.entries(await this.icureStorage.loadSelfVerifiedKeys(dataOwner.id!)).flatMap(([fp, verified]) => (verified ? [fp] : []))\n )\n return Array.from(this.dataOwnerApi.getHexPublicKeysOf(dataOwner)).filter((key) => {\n const fp = key.slice(-32)\n return availableVerifiedKeysFp.has(fp) || otherVerifiedFp.has(fp)\n })\n }\n\n /**\n * @internal This method is intended for internal use only and may be changed without notice.\n * Get all key pairs for the current data owner and his parents. These keys should be used only for decryption as they may have not been verified.\n * @return all key pairs available for decryption.\n */\n getDecryptionKeys(): { [fingerprint: string]: KeyPair } {\n this.ensureInitialised()\n return Object.values(this.keysCache!).reduce((acc, curr) => {\n return {\n ...acc,\n ...this.plainKeysByFingerprint(curr),\n }\n }, {} as { [fp: string]: KeyPair })\n }\n\n private async doLoadKeys(\n keyRecovererAndVerifier: KeyRecovererAndVerifier,\n currentOwnerKeyGenerator: CurrentOwnerKeyGenerator\n ): Promise<{ pair: KeyPair; fingerprint: string } | undefined> {\n // Load all keys for self from key store\n const hierarchy = await this.dataOwnerApi.getCurrentDataOwnerHierarchy()\n const self = hierarchy[hierarchy.length - 1]\n this.selfId = self.dataOwner.id!\n const keysData = []\n for (const dowt of hierarchy) {\n const availableKeys = await this.loadAndRecoverKeysFor(dowt)\n const verifiedKeysMap = await this.icureStorage.loadSelfVerifiedKeys(dowt.dataOwner.id!)\n const allPublicKeys = this.dataOwnerApi.getHexPublicKeysOf(dowt.dataOwner)\n const fpToFullMap = fingerprintToPublicKeysMapOf(dowt.dataOwner)\n const unavailableKeys = Object.keys(availableKeys).flatMap((fp) => {\n const fullPublicKey = fpToFullMap[fp]\n return allPublicKeys.has(fullPublicKey) ? [] : [fullPublicKey]\n })\n const unknownKeys = Array.from(allPublicKeys).filter(\n (x) => !(x.slice(-32) in verifiedKeysMap) && !(availableKeys?.[x.slice(-32)]?.isDevice === true)\n )\n keysData.push({ dowt, availableKeys, unavailableKeys, unknownKeys })\n }\n const recoveryAndVerificationResult = await keyRecovererAndVerifier(\n keysData.map(({ dowt, unavailableKeys, unknownKeys }) => ({ dataOwner: dowt, unavailableKeys, unknownKeys }))\n )\n const keysCache: { [dataOwnerId: string]: { [fp: string]: KeyPairData } } = {}\n for (const keyData of keysData) {\n const currAuthenticity = this.ensureFingerprintKeys(recoveryAndVerificationResult[keyData.dowt.dataOwner.id!].keyAuthenticity)\n const currExternallyRecovered = this.ensureFingerprintKeys(recoveryAndVerificationResult[keyData.dowt.dataOwner.id!].recoveredKeys)\n for (const [fp, keyPair] of Object.entries(currExternallyRecovered)) {\n const jwkPair = await this.primitives.RSA.exportKeys(keyPair, 'jwk', 'jwk')\n await this.icureStorage.saveKey(keyData.dowt.dataOwner.id!, fp, jwkPair, true)\n }\n const updatedVerifiedMap = await this.icureStorage.saveSelfVerifiedKeys(\n keyData.dowt.dataOwner.id!,\n [...Object.keys(currAuthenticity), ...Object.keys(currExternallyRecovered)].reduce(\n (acc, currFp) => ({\n ...acc,\n [currFp]: currFp in currExternallyRecovered || currAuthenticity[currFp],\n }),\n {}\n )\n )\n const keysWithExternallyRecovered = {\n ...keyData.availableKeys,\n ...Object.fromEntries(Object.entries(currExternallyRecovered).map(([k, v]) => [k, { pair: v, isDevice: false }])),\n }\n const additionallyRecovered = await this.recoverAndCacheKeys(keyData.dowt, this.plainKeysByFingerprint(keysWithExternallyRecovered))\n const keys = {\n ...keysWithExternallyRecovered,\n ...Object.fromEntries(Object.entries(additionallyRecovered).map(([k, v]) => [k, { pair: v, isDevice: false }])),\n }\n keysCache[keyData.dowt.dataOwner.id!] = this.verifyKeys(keys, updatedVerifiedMap)\n }\n if (Object.entries(keysCache).some(([ownerId, data]) => ownerId !== self.dataOwner.id && !this.hasVerifiedKey(data))) {\n throw new Error('Some parent hcps have no verified keys: impossible to generate locally a new key for a parent.')\n } else if (this.hasVerifiedKey(keysCache[self.dataOwner.id!])) {\n this.keysCache = keysCache\n this.selfLegacyPublicKey = self.dataOwner.publicKey\n return undefined\n } else {\n const whatToDo = await currentOwnerKeyGenerator(self)\n if (whatToDo === false) {\n throw new Error(`No verified key found for ${self.dataOwner.id} and settings do not allow creation of a new key.`)\n } else {\n const updateInfo = await this.createAndSaveNewKeyPair(whatToDo === true ? undefined : whatToDo, self)\n // self may be outdated now\n this.selfLegacyPublicKey = updateInfo.updatedSelf.stub.publicKey\n this.keysCache = {\n ...keysCache,\n [self.dataOwner.id!]: {\n ...keysCache[self.dataOwner.id!],\n [updateInfo.publicKeyFingerprint]: { pair: updateInfo.keyPair, isDevice: true, isVerified: true },\n },\n }\n return { pair: updateInfo.keyPair, fingerprint: updateInfo.publicKeyFingerprint }\n }\n }\n }\n\n private async createAndSaveNewKeyPair(\n importedKeyPair: undefined | KeyPair,\n selfDataOwner: DataOwnerWithType\n ): Promise<{ publicKeyFingerprint: string; keyPair: KeyPair; updatedSelf: CryptoActorStubWithType }> {\n const keyPair = importedKeyPair ?? (await this.primitives.RSA.generateKeyPair())\n const publicKeyHex = ua2hex(await this.primitives.RSA.exportKey(keyPair.publicKey, 'spki'))\n const publicKeyFingerprint = publicKeyHex.slice(-32)\n await this.icureStorage.saveKey(\n selfDataOwner.dataOwner.id!,\n publicKeyFingerprint,\n await this.primitives.RSA.exportKeys(keyPair, 'jwk', 'jwk'),\n true\n )\n const verifiedPublicKeysMap = await this.icureStorage.saveSelfVerifiedKeys(selfDataOwner.dataOwner.id!, { [publicKeyFingerprint]: true })\n const { updatedDelegator } = await this.baseExchangeKeyManager.createOrUpdateEncryptedExchangeKeyTo(\n selfDataOwner.dataOwner.id!,\n keyPair,\n await loadPublicKeys(\n this.primitives.RSA,\n Array.from(this.dataOwnerApi.getHexPublicKeysOf(selfDataOwner.dataOwner)).filter((x) => verifiedPublicKeysMap[x.slice(-32)])\n )\n )\n return { publicKeyFingerprint, keyPair: keyPair, updatedSelf: updatedDelegator }\n }\n\n private async loadStoredKeys(\n dataOwner: DataOwnerWithType,\n pubKeysFingerprints: string[]\n ): Promise<{ [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } }> {\n return await pubKeysFingerprints.reduce(async (acc, currentFingerprint) => {\n const awaitedAcc = await acc\n let loadedPair: { pair: KeyPair; isDevice: boolean } | undefined = undefined\n try {\n const storedKeypair = await this.icureStorage.loadKey(dataOwner.dataOwner.id!, currentFingerprint, dataOwner.dataOwner.publicKey)\n if (storedKeypair) {\n const importedKey = await this.primitives.RSA.importKeyPair('jwk', storedKeypair.pair.privateKey, 'jwk', storedKeypair.pair.publicKey)\n loadedPair = { pair: importedKey, isDevice: storedKeypair.isDevice }\n }\n } catch (e) {\n console.warn('Error while loading keypair', currentFingerprint, e)\n }\n return loadedPair\n ? {\n ...awaitedAcc,\n [currentFingerprint]: loadedPair,\n }\n : awaitedAcc\n }, Promise.resolve({} as { [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } }))\n }\n\n private verifyKeys(\n keys: { [pubKeyFingerprint: string]: { pair: KeyPair; isDevice: boolean } },\n verifiedKeysMap: { [pubKeyFingerprint: string]: boolean }\n ): { [pubKeyFingerprint: string]: KeyPairData } {\n return Object.fromEntries(\n Object.entries(keys).map(\n ([fp, keyData]) => [fp, { ...keyData, isVerified: keyData.isDevice || verifiedKeysMap?.[fp] === true }] as [string, KeyPairData]\n )\n )\n }\n\n private plainKeysByFingerprint(richKeys: { [pubKeyFingerprint: string]: { pair: KeyPair } }): {\n [pubKeyFingerprint: string]: KeyPair\n } {\n return Object.fromEntries(Object.entries(richKeys).map(([fp, keyData]) => [fp, keyData.pair]))\n }\n\n private ensureInitialised() {\n if (!this.keysCache) throw new Error('Key manager was not properly initialised')\n }\n\n private async recoverAndCacheKeys(\n dataOwner: DataOwnerWithType,\n availableKeys: { [pubKeyFingerprint: string]: KeyPair }\n ): Promise<{ [p: string]: KeyPair }> {\n const recoveredKeys = await this.keyRecovery.recoverKeys(dataOwner, availableKeys)\n for (const [fp, pair] of Object.entries(recoveredKeys)) {\n await this.icureStorage.saveKey(dataOwner.dataOwner.id!, fp, await this.primitives.RSA.exportKeys(pair, 'jwk', 'jwk'), false)\n }\n return recoveredKeys\n }\n\n private async loadAndRecoverKeysFor(dataOwner: DataOwnerWithType): Promise<{ [keyFp: string]: { pair: KeyPair; isDevice: boolean } }> {\n const selfPublicKeys = this.dataOwnerApi.getHexPublicKeysOf(dataOwner.dataOwner)\n const pubKeysFingerprints = Array.from(selfPublicKeys).map((x) => x.slice(-32))\n const loadedKeys = pubKeysFingerprints.length > 0 ? await this.loadStoredKeys(dataOwner, pubKeysFingerprints) : {}\n const loadedKeysFingerprints = Object.keys(loadedKeys)\n if (loadedKeysFingerprints.length !== pubKeysFingerprints.length && loadedKeysFingerprints.length > 0) {\n const recoveredKeys = await this.recoverAndCacheKeys(dataOwner, this.plainKeysByFingerprint(loadedKeys))\n for (const [fp, pair] of Object.entries(recoveredKeys)) {\n loadedKeys[fp] = { pair, isDevice: false }\n }\n }\n return loadedKeys\n }\n\n private ensureFingerprintKeys(obj: { [shouldBeFingerprint: string]: T }): { [definitelyFingerprint: string]: T } {\n return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k.slice(-32), v]))\n }\n\n private hasVerifiedKey(keysData: { [fp: string]: KeyPairData }) {\n return Object.values(keysData).some((x) => x.isVerified || x.isDevice)\n }\n}\n","import { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyPair } from './RSA'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { hex2ua, ua2hex } from '../utils'\nimport { fingerprintToPublicKeysMapOf } from './utils'\nimport { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType'\n\n/**\n * @internal this class is intended only for internal use and may be changed without notice.\n *\n */\nexport class KeyRecovery {\n private readonly primitives: CryptoPrimitives\n private readonly baseExchangeKeysManager: BaseExchangeKeysManager\n private readonly dataOwnerApi: IccDataOwnerXApi\n\n constructor(primitives: CryptoPrimitives, baseExchangeKeysManager: BaseExchangeKeysManager, dataOwnerApi: IccDataOwnerXApi) {\n this.primitives = primitives\n this.baseExchangeKeysManager = baseExchangeKeysManager\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Attempt to recover private keys of a data owner using all available key recovery methods and all available private keys. The method will\n * automatically try to use newly recovered key pairs to recover additional key pairs.\n * @param dataOwner a data owner.\n * @param knownKeys keys available for the data owner.\n * @return new key pairs (exclude already known pairs) which could be recovered using the known keys.\n */\n async recoverKeys(\n dataOwner: DataOwnerWithType,\n knownKeys: { [pubKeyFp: string]: KeyPair }\n ): Promise<{ [pubKeyFp: string]: KeyPair }> {\n const selfPublicKeys = Array.from(this.dataOwnerApi.getHexPublicKeysOf(dataOwner.dataOwner))\n const knownKeysFpSet = new Set(Object.keys(knownKeys))\n const missingKeysFpSet = new Set(selfPublicKeys.map((x) => x.slice(-32)).filter((x) => !knownKeysFpSet.has(x)))\n\n const recoveryFunctions = [this.recoverFromTransferKeys.bind(this), this.recoverFromShamirSplitKeys.bind(this)]\n let allPrivateKeys: { [pubKeyFingerprint: string]: KeyPair } = { ...knownKeys }\n let foundNewPrivateKeys = true\n\n while (missingKeysFpSet.size > 0 && foundNewPrivateKeys) {\n // TODO for each recovered verify correct association with public key\n foundNewPrivateKeys = false\n for (const recover of recoveryFunctions) {\n const recovered = await recover(dataOwner, allPrivateKeys, missingKeysFpSet)\n const validatedRecovered: { [fp: string]: KeyPair } = {}\n for (const [fp, keyPair] of Object.entries(recovered)) {\n const valid = await this.primitives.RSA.checkKeyPairValidity(keyPair)\n if (valid) {\n validatedRecovered[fp] = keyPair\n }\n }\n if (Object.keys(validatedRecovered).length > 0) {\n foundNewPrivateKeys = true\n Object.keys(validatedRecovered).forEach((fp) => missingKeysFpSet.delete(fp))\n allPrivateKeys = { ...allPrivateKeys, ...validatedRecovered }\n }\n }\n }\n\n return Object.fromEntries(Object.entries(allPrivateKeys).filter(([keyFp]) => !knownKeysFpSet.has(keyFp)))\n }\n\n /*TODO?\n * Ask access back suggestion: if by getting access back to an exchange key with another data owner I may recover additional keys we could suggest\n * to ask for access back to that data owner.\n */\n\n private async recoverFromShamirSplitKeys(\n dataOwner: DataOwnerWithType,\n allKeys: { [pubKeyFingerprint: string]: KeyPair },\n missingKeysFp: Set\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n if (\n dataOwner.dataOwner.publicKey &&\n dataOwner.dataOwner.privateKeyShamirPartitions &&\n Object.keys(dataOwner.dataOwner.privateKeyShamirPartitions).length > 0\n ) {\n const selfId = dataOwner.dataOwner.id!\n const shamirSplits: { [keyPairFp: string]: { [delegateId: string]: string } } = {\n [dataOwner.dataOwner.publicKey!.slice(-32)]: dataOwner.dataOwner.privateKeyShamirPartitions!,\n }\n const delegatesOfSplits = Array.from(\n new Set(\n Object.entries(shamirSplits).flatMap(([splitKeyFp, splitKeyData]) => (missingKeysFp.has(splitKeyFp) ? Object.keys(splitKeyData) : []))\n )\n )\n const exchangeKeys: { [delegateId: string]: CryptoKey[] } = {}\n for (const delegate of delegatesOfSplits) {\n const currExchangeKeys = await this.baseExchangeKeysManager.getEncryptedExchangeKeysFor(selfId, delegate)\n exchangeKeys[delegate] = (await this.baseExchangeKeysManager.tryDecryptExchangeKeys(currExchangeKeys, allKeys)).successfulDecryptions\n }\n return await this.recoverWithSplits(dataOwner, shamirSplits, exchangeKeys)\n } else return {}\n }\n\n private async recoverWithSplits(\n dataOwner: DataOwnerWithType,\n splits: { [keyPairFp: string]: { [delegateId: string]: string } },\n exchangeKeys: { [delegateId: string]: CryptoKey[] }\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n const res: { [pubKeyFingerprint: string]: KeyPair } = {}\n const keysByFp = fingerprintToPublicKeysMapOf(dataOwner.dataOwner)\n for (const [fp, split] of Object.entries(splits)) {\n const recovered = await this.tryRecoverSplitPrivate(split, exchangeKeys)\n if (recovered) {\n const pub = keysByFp[fp]\n if (!pub) {\n console.warn(`Missing public key for fingerprint ${fp} of recovered shamir key.`)\n } else {\n try {\n res[fp] = {\n privateKey: recovered,\n publicKey: await this.primitives.RSA.importKey('spki', hex2ua(pub), ['encrypt']),\n }\n } catch (e) {\n console.warn(`Failed to import public key ${pub}`, e)\n }\n }\n }\n }\n return res\n }\n\n private async tryRecoverSplitPrivate(\n split: { [delegateId: string]: string },\n exchangeKeys: { [delegateId: string]: CryptoKey[] }\n ): Promise {\n const splitsCount = Object.keys(split).length\n if (splitsCount === 1) {\n // Not sure about the key nor if the key is accessible\n const [delegate, encryptedKey] = Object.entries(split)[0]\n for (const exchangeKey of exchangeKeys[delegate] ?? []) {\n try {\n const decrypted = await this.primitives.AES.decrypt(exchangeKey, hex2ua(encryptedKey))\n const importedKey = await this.primitives.RSA.importKey('pkcs8', decrypted, ['decrypt'])\n if (importedKey) return importedKey\n } catch (e) {}\n }\n return undefined\n } else {\n const decryptedSplits: string[] = []\n for (const delegateAndEncryptedSplit of Object.entries(split)) {\n const decrypted = await this.tryDecryptSplitPiece(delegateAndEncryptedSplit, exchangeKeys, splitsCount)\n if (decrypted) decryptedSplits.push(ua2hex(decrypted).slice(1)) // Drop padding\n }\n try {\n const combinedKey = hex2ua(this.primitives.shamir.combine(decryptedSplits))\n return await this.primitives.RSA.importKey('pkcs8', combinedKey, ['decrypt'])\n } catch (e) {\n // Could be not enough splits decrypted\n return undefined\n }\n }\n }\n\n private async tryDecryptSplitPiece(\n delegateAndEncryptedSplit: [string, string],\n exchangeKeys: { [delegateId: string]: CryptoKey[] },\n splitsCount: number\n ): Promise {\n const [delegate, encryptedPiece] = delegateAndEncryptedSplit\n for (const exchangeKey of exchangeKeys[delegate] ?? []) {\n try {\n const decrypted = await this.primitives.AES.decrypt(exchangeKey, hex2ua(encryptedPiece))\n if (this.validateDecryptedSplit(decrypted, splitsCount)) return decrypted\n } catch (e) {}\n }\n return undefined\n }\n\n private validateDecryptedSplit(decryptedSplit: ArrayBuffer, splitsCount: number): boolean {\n // Normally shamir split starts with 8 followed by the index of the split in hexadecimal.\n // However, we pad with an extra 'f' at the beginning\n const decryptedHex = ua2hex(decryptedSplit)\n if (decryptedHex[0] !== 'f' || decryptedHex[1] !== '8') return false\n try {\n const splitIndex = parseInt(decryptedHex.slice(2, 4), 16)\n return splitIndex > 0 && splitIndex <= splitsCount\n } catch (e) {\n return false\n }\n }\n\n private async recoverFromTransferKeys(\n dataOwner: DataOwnerWithType,\n allKeys: { [pubKeyFingerprint: string]: KeyPair },\n missingKeysFp: Set\n ): Promise<{ [pubKeyFingerprint: string]: KeyPair }> {\n const publicKeyFingerprintToPublicKey = fingerprintToPublicKeysMapOf(dataOwner.dataOwner)\n const missingKeysTransferData: { [recoverableKeyPubFp: string]: { publicKey: string; encryptedPrivateKey: Set } } = {}\n Object.values(dataOwner.dataOwner.transferKeys ?? {}).forEach((transferKeysByEncryptor) => {\n Object.entries(transferKeysByEncryptor).forEach(([transferToPublicKey, transferPrivateKeyEncrypted]) => {\n const transferToPublicKeyFp = transferToPublicKey.slice(-32) // We are not sure if transfer public key will be a fp or not\n if (missingKeysFp.has(transferToPublicKeyFp)) {\n const existingEntryValue = missingKeysTransferData[transferToPublicKeyFp]\n if (existingEntryValue) {\n existingEntryValue.encryptedPrivateKey.add(transferPrivateKeyEncrypted)\n } else {\n const fullPublicKey = publicKeyFingerprintToPublicKey[transferToPublicKeyFp]\n if (fullPublicKey) {\n missingKeysTransferData[transferToPublicKeyFp] = {\n publicKey: fullPublicKey,\n encryptedPrivateKey: new Set([transferPrivateKeyEncrypted]),\n }\n } else {\n console.warn('Invalid data owner: there is a transfer key for an unknown public key')\n }\n }\n }\n })\n })\n\n const { successfulDecryptions: availableExchangeKeys } = await this.baseExchangeKeysManager.tryDecryptExchangeKeys(\n await this.baseExchangeKeysManager.getEncryptedExchangeKeysFor(dataOwner.dataOwner.id!, dataOwner.dataOwner.id!),\n allKeys\n )\n\n return Object.entries(missingKeysTransferData).reduce(async (acc, [recoverableKeyPubFp, transferData]) => {\n const awaitedAcc = await acc\n const decryptedTransferData = await this.tryDecryptTransferData(transferData, availableExchangeKeys)\n if (decryptedTransferData != undefined) {\n return { ...awaitedAcc, [recoverableKeyPubFp]: decryptedTransferData }\n } else return awaitedAcc\n }, Promise.resolve({} as { [pubKeyFingerprint: string]: KeyPair }))\n }\n\n private async tryDecryptTransferData(\n transferData: { publicKey: string; encryptedPrivateKey: Set },\n availableExchangeKeys: CryptoKey[]\n ): Promise | undefined> {\n for (const encryptedTransferKey of transferData.encryptedPrivateKey) {\n const decryptedTransferKey = await this.tryDecryptTransferKey(encryptedTransferKey, availableExchangeKeys)\n if (decryptedTransferKey != undefined)\n return {\n privateKey: decryptedTransferKey,\n publicKey: await this.primitives.RSA.importKey('spki', hex2ua(transferData.publicKey), ['encrypt']),\n }\n }\n return undefined\n }\n\n // attempt to decrypt a transfer key in pkcs8 using any of the provided exchange keys\n private async tryDecryptTransferKey(\n encryptedTransferKey: string, // in hex format\n exchangeKeys: CryptoKey[]\n ): Promise {\n const encryptedKeyBytes = hex2ua(encryptedTransferKey)\n for (const exchangeKey of exchangeKeys) {\n try {\n const decryptedKeyData = await this.primitives.AES.decrypt(exchangeKey, encryptedKeyBytes)\n const importedPrivateKey = await this.primitives.RSA.importPrivateKey('pkcs8', decryptedKeyData)\n if (importedPrivateKey != undefined) return importedPrivateKey\n } catch (e) {\n /* failure is a valid possibility: we don't know the correct key to use */\n }\n }\n return undefined\n }\n}\n","import { ua2utf8, utf8_2ua } from '../utils'\n\n/**\n * Represents an RSA KeyPair in a generic format.\n */\nexport type KeyPair = { publicKey: T; privateKey: T }\n\nexport class RSAUtils {\n /********* RSA Config **********/\n //TODO bigger modulus\n //TODO PSS for signing\n rsaParams: any = { name: 'RSA-OAEP' }\n // RSA params for 'import' and 'generate' function.\n rsaHashedParams: any = {\n name: 'RSA-OAEP',\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 (Fermat F4), read http://en.wikipedia.org/wiki/65537_(number)\n hash: { name: 'sha-1' },\n }\n\n private crypto: Crypto\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this.crypto = crypto\n }\n\n /**\n * It returns CryptoKey promise, which doesn't hold the bytes of the key.\n * If bytes are needed, you must export the generated key.\n *\n * @returns {Promise} will be {publicKey: CryptoKey, privateKey: CryptoKey}\n */\n generateKeyPair(): Promise> {\n const extractable = true\n const keyUsages: KeyUsage[] = ['decrypt', 'encrypt']\n\n return new Promise>((resolve, reject) => {\n this.crypto.subtle.generateKey(this.rsaHashedParams, extractable, keyUsages).then(resolve, reject)\n })\n }\n\n /**\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param keyPair is {publicKey: CryptoKey, privateKey: CryptoKey}\n * @param privKeyFormat will be 'pkcs8' or 'jwk'\n * @param pubKeyFormat will be 'spki' or 'jwk'\n * @returns {Promise} will the AES Key\n */\n exportKeys(keyPair: KeyPair, privKeyFormat: 'jwk', pubKeyFormat: 'jwk'): Promise>\n exportKeys(keyPair: KeyPair, privKeyFormat: 'pkcs8', pubKeyFormat: 'spki'): Promise>\n exportKeys(keyPair: KeyPair, privKeyFormat: string, pubKeyFormat: string): Promise> {\n const pubPromise = this.crypto.subtle.exportKey(pubKeyFormat as any, keyPair.publicKey)\n const privPromise = this.crypto.subtle.exportKey(privKeyFormat as any, keyPair.privateKey)\n\n return Promise.all([pubPromise, privPromise]).then(function (results) {\n return {\n publicKey: results[0],\n privateKey: results[1],\n }\n })\n }\n\n /**\n * Format:\n *\n * 'JWK': Json Web key (ref. http://tools.ietf.org/html/draft-ietf-jose-json-web-key-11)\n * 'spki': for private key\n * 'pkcs8': for private Key\n *\n * @param cryptoKey public or private\n * @param format either 'jwk' or 'spki' or 'pkcs8'\n * @returns {Promise|*} will be RSA key (public or private)\n */\n exportKey(cryptoKey: CryptoKey, format: 'jwk'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'spki'): Promise\n exportKey(cryptoKey: CryptoKey, format: 'pkcs8'): Promise\n exportKey(cryptoKey: CryptoKey, format: string): Promise {\n return new Promise((resolve: (value: JsonWebKey | ArrayBuffer) => any, reject) => {\n this.crypto.subtle.exportKey(format as any, cryptoKey).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param publicKey (CryptoKey)\n * @param plainData (Uint8Array)\n */\n encrypt(publicKey: CryptoKey, plainData: Uint8Array): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject) => {\n this.crypto.subtle.encrypt(this.rsaParams, publicKey, plainData.buffer ? plainData.buffer : plainData).then(resolve, reject) //Node prefers arrayBuffer\n })\n }\n\n /**\n *\n * @param privateKey (CryptoKey)\n * @param encryptedData (Uint8Array)\n */\n decrypt(privateKey: CryptoKey, encryptedData: Uint8Array): Promise {\n return new Promise((resolve: (value: ArrayBuffer) => any, reject) => {\n this.crypto.subtle.decrypt(this.rsaParams, privateKey, encryptedData).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param format 'jwk', 'spki', or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @param keyUsages Array of usages. For example, ['encrypt'] for public key.\n * @returns {*}\n */\n importKey(format: string, keydata: JsonWebKey | ArrayBuffer, keyUsages: KeyUsage[]): Promise {\n const extractable = true\n return new Promise((resolve: (value: CryptoKey) => any, reject) => {\n this.crypto.subtle.importKey(format as any, keydata as any, this.rsaHashedParams, extractable, keyUsages).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param format 'jwk' or 'pkcs8'\n * @param keydata should be the key data based on the format.\n * @returns {*}\n */\n importPrivateKey(format: string, keydata: JsonWebKey | ArrayBuffer): Promise {\n const extractable = true\n return new Promise((resolve: (value: CryptoKey) => any, reject) => {\n this.crypto.subtle.importKey(format as any, keydata as any, this.rsaHashedParams, extractable, ['decrypt']).then(resolve, reject)\n })\n }\n\n /**\n *\n * @param privateKeyFormat 'jwk' or 'pkcs8'\n * @param privateKeydata should be the key data based on the format.\n * @param publicKeyFormat 'jwk' or 'spki'\n * @param publicKeyData should be the key data based on the format.\n * @returns {Promise|*}\n */\n importKeyPair(\n privateKeyFormat: string,\n privateKeydata: JsonWebKey | ArrayBuffer,\n publicKeyFormat: string,\n publicKeyData: JsonWebKey | ArrayBuffer\n ): Promise> {\n const extractable = true\n const privPromise = this.crypto.subtle.importKey(privateKeyFormat as any, privateKeydata as any, this.rsaHashedParams, extractable, ['decrypt'])\n const pubPromise = this.crypto.subtle.importKey(publicKeyFormat as any, publicKeyData as any, this.rsaHashedParams, extractable, ['encrypt'])\n\n return Promise.all([pubPromise, privPromise]).then(function (results) {\n return {\n publicKey: results[0],\n privateKey: results[1],\n }\n })\n }\n\n /**\n * Tries to encrypt then decrypt data using a keypair. If both operations succeed without throwing an error and the decrypted data matches the\n * original data returns true, else false.\n * @param keyPair a key pair.\n * @return if the key pair could be successfully used to encrypt then decrypt data.\n */\n async checkKeyPairValidity(keyPair: KeyPair): Promise {\n try {\n const text = 'shibboleth'\n const encryptedText = await this.encrypt(keyPair.publicKey, utf8_2ua(text))\n const decryptedText = ua2utf8(await this.decrypt(keyPair.privateKey, new Uint8Array(encryptedText)))\n return decryptedText === text\n } catch (e) {\n return false\n }\n }\n}\n\nexport const RSA = new RSAUtils()\n","import { DataOwnerOrStub, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { KeyManager } from './KeyManager'\nimport { ExchangeKeysManager } from './ExchangeKeysManager'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { KeyPair } from './RSA'\nimport { hex2ua, ua2hex } from '../utils'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\n/**\n * Allows to create or update shamir split keys.\n */\nexport class ShamirKeysManager {\n private readonly primitives: CryptoPrimitives\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly keyManager: KeyManager\n private readonly exchangeKeysManager: ExchangeKeysManager\n\n constructor(primitives: CryptoPrimitives, dataOwnerApi: IccDataOwnerXApi, keyManager: KeyManager, exchangeKeysManager: ExchangeKeysManager) {\n this.primitives = primitives\n this.dataOwnerApi = dataOwnerApi\n this.keyManager = keyManager\n this.exchangeKeysManager = exchangeKeysManager\n }\n\n /**\n * Get information on existing private keys splits for the provided data owner. For each private key of the provided data owner which has been\n * split using the Shamir sharing algorithm gives the list of the notaries (other data owners) which hold a copy of the key part.\n * @param dataOwner a data owner\n * @return the existing splits for the current data owner as a publicKeyFingerprint -> notariesIds object\n */\n getExistingSplitsInfo(dataOwner: DataOwnerOrStub): { [keyPairFingerprint: string]: string[] } {\n const legacyPartitionDelegates = Object.keys(dataOwner.privateKeyShamirPartitions ?? {})\n if (legacyPartitionDelegates.length > 0) {\n const fp = dataOwner.publicKey?.slice(-32)\n if (!fp) {\n console.error('Invalid data owner: the owner has legacy key partitions but no legacy key.')\n } else return { [fp]: legacyPartitionDelegates }\n }\n return {}\n }\n\n /**\n * Creates, updates or deletes shamir splits for keys of the current data owner. Any request to update the splits for a specific key will completely\n * replace any existing data on that split (all previous notaries will be ignored).\n * Note: currently you can only split the legacy key pair.\n * @param keySplitsToUpdate the fingerprints of key pairs which will have updated/new splits and the details on how to create the updated splits.\n * @param keySplitsToDelete the fingerprints or hex-encoded spki public keys which will not be shared anymore.\n * @throws if the parameters refer to non-existing or unavailable keys, have split creation details, or if they request to delete a non-existing\n * split.\n */\n async updateSelfSplits(\n keySplitsToUpdate: { [publicKeyHexOrFp: string]: { notariesIds: string[]; minShares: number } },\n keySplitsToDelete: string[]\n ): Promise {\n const self = CryptoActorStubWithType.fromDataOwner(await this.dataOwnerApi.getCurrentDataOwner())\n const toUpdateSet = new Set(Object.keys(keySplitsToUpdate).map((x) => x.slice(-32)))\n const toDeleteSet = new Set(keySplitsToDelete.slice(-32))\n const intersection = Array.from(toDeleteSet).filter((x) => toUpdateSet.has(x))\n const existingSplits = new Set(Object.keys(this.getExistingSplitsInfo(self.stub)))\n const allKeys = this.keyManager.getDecryptionKeys()\n if (toDeleteSet.size !== keySplitsToDelete.length || toUpdateSet.size !== Object.keys(keySplitsToUpdate).length || intersection.length > 0)\n throw new Error(`Duplicate keys in input:\\nkeySplitsToUpdate: ${keySplitsToUpdate}\\nkeySplitsToDelete: ${keySplitsToDelete}`)\n Object.entries(keySplitsToUpdate).forEach(([key, params]) => this.validateShamirParams(key, params))\n if (!Array.from(existingSplits).every((x) => existingSplits.has(x))) {\n throw new Error(`Requested to delete non-existing split.\\nexistingSplits: ${Array.from(existingSplits)}\\ntoDelete:${Array.from(toDeleteSet)}`)\n }\n if (Array.from(toUpdateSet).some((x) => !allKeys[x])) {\n throw new Error(`Private key is not available for some of the requested key split updates. ${keySplitsToUpdate}`)\n }\n const delegatesKeys: { [delegateId: string]: CryptoKey } = {}\n let updatedSelf = self\n for (const delegateId of new Set(Object.values(keySplitsToUpdate).flatMap((x) => x.notariesIds))) {\n const res = await this.exchangeKeysManager.getOrCreateEncryptionExchangeKeysTo(delegateId)\n delegatesKeys[delegateId] = res.keys[0]\n if (res.updatedDelegator) {\n updatedSelf = res.updatedDelegator\n }\n }\n for (const [key, params] of Object.entries(keySplitsToUpdate)) {\n updatedSelf = await this.updateKeySplit(updatedSelf, key.slice(-32), params.notariesIds, params.minShares, delegatesKeys, allKeys)\n }\n for (const keyFp of toDeleteSet) {\n updatedSelf = this.deleteKeySplit(updatedSelf, keyFp)\n }\n return await this.dataOwnerApi.modifyCryptoActorStub(updatedSelf)\n }\n\n /*TODO\n * Get suggested recovery keys: analyse transfer keys and shamir to get keys which should be shared with shamir for optimal recovery.\n */\n\n private validateShamirParams(key: string, params: { notariesIds: string[]; minShares: number }) {\n if (params.notariesIds.length > 0) {\n if (params.minShares > params.notariesIds.length) {\n throw new Error(`Invalid parameters for key ${key}: min shares can't be greater than the number of delegates. ${params}`)\n }\n } else throw new Error(`Invalid parameters for key ${key}: must have at least one delegate. ${params}`)\n }\n\n private deleteKeySplit(dataOwner: CryptoActorStubWithType, keyFp: string): CryptoActorStubWithType {\n if (keyFp !== dataOwner.stub.publicKey?.slice(-32)) {\n throw new Error('Currently it is possible to use shamir splits only for the legacy public key')\n }\n return {\n type: dataOwner.type,\n stub: {\n ...dataOwner.stub,\n privateKeyShamirPartitions: {},\n },\n }\n }\n\n private async updateKeySplit(\n dataOwner: CryptoActorStubWithType,\n keyFp: string,\n delegateIds: string[],\n minShares: number,\n delegatesKeys: { [p: string]: CryptoKey },\n allKeys: { [p: string]: KeyPair }\n ): Promise {\n if (keyFp !== dataOwner.stub.publicKey?.slice(-32)) {\n throw new Error('Currently it is possible to use shamir splits only for the legacy public key')\n }\n return {\n type: dataOwner.type,\n stub: {\n ...dataOwner.stub,\n privateKeyShamirPartitions: await this.createPartitionsFor(allKeys[keyFp], delegateIds, minShares, delegatesKeys),\n },\n }\n }\n\n private async createPartitionsFor(\n keyPair: KeyPair,\n delegateIds: string[],\n minShares: number,\n delegatesKeys: { [p: string]: CryptoKey }\n ): Promise<{ [delegateId: string]: string }> {\n const exportedKey = await this.primitives.RSA.exportKey(keyPair.privateKey, 'pkcs8')\n if (delegateIds.length == 1) {\n return await this.encryptShares([exportedKey], delegateIds, delegatesKeys)\n } else {\n const exportedKeysHex = ua2hex(exportedKey)\n const stringShares = this.primitives.shamir.share(exportedKeysHex, delegateIds.length, minShares)\n const paddedStringShares = stringShares.map((x) => `f${x}`) // Shares are uneven length, apart from that they are perfect hexes\n for (const share of paddedStringShares) {\n if (!/^(?:[0-9a-f][0-9a-f])+$/g.test(share)) throw new Error('Unexpected result of shamir split: padded shares should be a valid hex value')\n if (share !== ua2hex(hex2ua(share))) throw new Error('Unexpected result with encoding-decoding share')\n }\n return await this.encryptShares(\n paddedStringShares.map((x) => hex2ua(x)),\n delegateIds,\n delegatesKeys\n )\n }\n }\n\n private async encryptShares(\n shares: ArrayBuffer[],\n delegateIds: string[],\n delegatesKeys: { [p: string]: CryptoKey }\n ): Promise<{ [delegateId: string]: string }> {\n return delegateIds.reduce(\n async (acc, delegateId, index) => ({\n ...(await acc),\n [delegateId]: ua2hex(await this.primitives.AES.encrypt(delegatesKeys[delegateId], shares[index])),\n }),\n Promise.resolve({} as { [delegateId: string]: string })\n )\n }\n}\n","/**\n * Specifies a behaviour for the sharing of encryption keys or owning entity ids in the extended apis 'share' methods.\n */\nexport enum ShareMetadataBehaviour {\n /**\n * The method must share the metadata with the delegate. If this is not possible, because for example the current user has no access to this kind of\n * metadata, the method will throw an error.\n */\n REQUIRED = 'REQUIRED',\n /**\n * The method must share the metadata with the delegate if available. If this is not possible, because for example the current user has no access to\n * this kind of metadata, the method will simply not share this metadata.\n */\n IF_AVAILABLE = 'IF_AVAILABLE',\n /**\n * The method must not share the metadata with the delegate, even if the current data owner can access it.\n */\n NEVER = 'NEVER',\n}\n","import { KeyPair } from './RSA'\nimport { BaseExchangeKeysManager } from './BaseExchangeKeysManager'\nimport { IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { ua2hex } from '../utils'\nimport { KeyManager } from './KeyManager'\nimport { reachSetsAcyclic, StronglyConnectedGraph } from '../utils/graph-utils'\nimport { fingerprintToPublicKeysMapOf, loadPublicKeys, transferKeysFpGraphOf } from './utils'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { IcureStorageFacade } from '../storage/IcureStorageFacade'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\n\n/**\n * @internal this class is intended only for internal use and may be changed without notice.\n * Allows to create new transfer keys.\n */\nexport class TransferKeysManager {\n private readonly primitives: CryptoPrimitives\n private readonly baseExchangeKeysManager: BaseExchangeKeysManager\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly keyManager: KeyManager\n private readonly icureStorage: IcureStorageFacade\n\n constructor(\n primitives: CryptoPrimitives,\n baseExchangeKeysManager: BaseExchangeKeysManager,\n dataOwnerApi: IccDataOwnerXApi,\n keyManager: KeyManager,\n icureStorage: IcureStorageFacade\n ) {\n this.primitives = primitives\n this.baseExchangeKeysManager = baseExchangeKeysManager\n this.dataOwnerApi = dataOwnerApi\n this.keyManager = keyManager\n this.icureStorage = icureStorage\n }\n\n /**\n * Analyses the transfer keys graph and creates new transfer keys which allow to improve data accessibility from other devices.\n * For security reasons transfer keys will only be created between keys verified by the user, but this will be done ignoring any existing edges from\n * unverified keys to verified keys.\n * @param self the current data owner.\n * @return the updated data owner.\n */\n async updateTransferKeys(self: CryptoActorStubWithType): Promise {\n const newEdges = await this.getNewVerifiedTransferKeysEdges(self)\n if (!newEdges) return\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const fpToPublicKey = fingerprintToPublicKeysMapOf(self.stub)\n const newExchangeKeyPublicKeys = newEdges.sources.map((fp) => fpToPublicKey[fp])\n const { key: exchangeKey, updatedDelegator: updatedSelf } = await this.baseExchangeKeysManager.createOrUpdateEncryptedExchangeKeyTo(\n selfId,\n newEdges.target,\n await loadPublicKeys(this.primitives.RSA, newExchangeKeyPublicKeys)\n )\n // note: createEncryptedExchangeKeyFor may update self\n const encryptedTransferKey = await this.encryptTransferKey(newEdges.target, exchangeKey)\n const newTransferKeys = newEdges.sources.reduce(\n (acc, candidateFp) => {\n const existingKeys = { ...(acc[candidateFp] ?? {}) }\n existingKeys[newEdges.targetFp] = encryptedTransferKey\n acc[candidateFp] = existingKeys\n return acc\n },\n { ...(updatedSelf.stub.transferKeys ?? {}) }\n )\n await this.dataOwnerApi.modifyCryptoActorStub({\n type: updatedSelf.type,\n stub: {\n ...updatedSelf.stub,\n transferKeys: newTransferKeys,\n },\n })\n }\n\n // encrypts a transfer key in pkcs8 format using an exchange key, returns the hex representation\n private async encryptTransferKey(transferKey: KeyPair, exchangeKey: CryptoKey): Promise {\n const exportedKey = await this.primitives.RSA.exportKey(transferKey.privateKey, 'pkcs8')\n return ua2hex(await this.primitives.AES.encrypt(exchangeKey, exportedKey))\n }\n\n // all public keys would go to the stored keys -> no need for specifying the key.\n // Result only includes the acyclic label, not the full group\n private transferKeysCandidatesFp(keyToFp: string, graph: StronglyConnectedGraph): string[] {\n return Object.entries(reachSetsAcyclic(graph.acyclicGraph))\n .filter(([from, reachable]) => from != keyToFp && !reachable.has(keyToFp))\n .map((x) => x[0])\n }\n\n private async transferTargetVerifiedKey(keyManager: KeyManager): Promise<{ fingerprint: string; pair: KeyPair }> {\n return keyManager.getSelfVerifiedKeys()[0]\n }\n\n // Decides the best edges considering the verified public keys.\n private async getNewVerifiedTransferKeysEdges(self: CryptoActorStubWithType): Promise<\n | undefined\n | {\n sources: string[]\n target: KeyPair\n targetFp: string\n }\n > {\n const verifiedKeysFpSet = new Set(this.keyManager.getSelfVerifiedKeys().map((x) => x.fingerprint))\n Object.entries(await this.icureStorage.loadSelfVerifiedKeys(self.stub.id!)).forEach(([key, verified]) => {\n if (verified) verifiedKeysFpSet.add(key.slice(-32))\n })\n if (verifiedKeysFpSet.size == 0) return undefined\n const graph = transferKeysFpGraphOf(self.stub)\n // 1. Choose a key available in this device which should be reachable from all other verified keys\n const { fingerprint: targetKeyFp, pair: targetKey } = await this.transferTargetVerifiedKey(this.keyManager)\n // 2. Find groups which can't reach the existing target keys\n const candidatesFp = this.transferKeysCandidatesFp(targetKeyFp, graph)\n // 3. Keep only groups which contain at least a verified candidate\n const verifiedGroupCandidates = candidatesFp.filter((candidate) =>\n graph.acyclicLabelToGroup[candidate].some((candidateGroupMember) => verifiedKeysFpSet.has(candidateGroupMember))\n )\n const verifiedCandidatesSet = new Set(verifiedGroupCandidates)\n if (verifiedCandidatesSet.size == 0) return undefined\n // 4. Drop all candidates which can already reach another candidate group: it is sufficient to create a transfer key from that group.\n const reachSets = reachSetsAcyclic(graph.acyclicGraph)\n const optimizedCandidates = verifiedGroupCandidates.filter((candidate) =>\n Array.from(reachSets[candidate]).every((reachableNode) => !verifiedCandidatesSet.has(reachableNode))\n )\n if (optimizedCandidates.length == 0) throw new Error('Check failed: at least one candidate should survive optimization')\n // 5. Transfer keys could also be faked: to make sure we are not giving access to unauthorised people we remap the candidates to a verified public\n // keys\n const verifiedOptimizedCandidates = optimizedCandidates.map((candidate) => {\n const res = graph.acyclicLabelToGroup[candidate].find((groupMemberFp) => verifiedKeysFpSet.has(groupMemberFp))\n if (!res) throw new Error('Check failed: optimized candidates groups should have at least a verified member')\n return res\n })\n return {\n sources: verifiedOptimizedCandidates,\n target: targetKey,\n targetFp: targetKeyFp,\n }\n }\n}\n","export class ShamirClass {\n // Protected settings object\n config = {\n bits: 8, // default number of bits\n radix: 16, // work with HEX by default\n size: Math.pow(2, 8 /* config.bits */),\n max: Math.pow(2, 8 /* config.bits */) - 1,\n minBits: 3,\n maxBits: 16, // this permits 65,535 shares, though going this high is NOT recommended in JS!\n bytesPerChar: 2,\n maxBytesPerChar: 6, // Math.pow(256,7) > Math.pow(2,53)\n // Primitive polynomials (in decimal form) for Galois Fields GF(2^n), for 2 <= n <= 30\n // The index of each term in the array corresponds to the n for that polynomial\n // i.e. to get the polynomial for n=16, use primitivePolynomials[16]\n primitivePolynomials: [null, null, 1, 3, 3, 5, 3, 3, 29, 17, 9, 5, 83, 27, 43, 3, 45, 9, 39, 39, 9, 5, 3, 33, 27, 9, 71, 39, 9, 5, 83],\n // warning for insecure PRNG\n warning: 'WARNING:\\nA secure random number generator was not found.\\nUsing Math.random(), which is NOT cryptographically strong!',\n logs: [] as Array,\n exps: [] as Array,\n }\n private crypto: Crypto\n\n constructor(crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto)) {\n this.crypto = crypto\n }\n\n init() {\n const primitive = this.config.primitivePolynomials[this.config.bits]!\n let x = 1\n\n for (let i = 0; i < this.config.size; i++) {\n this.config.exps[i] = x\n this.config.logs[x] = i\n x <<= 1\n if (x >= this.config.size) {\n x ^= primitive\n x &= this.config.max\n }\n }\n }\n\n // Splits a number string `bits`-length segments, after first\n // optionally zero-padding it to a length that is a multiple of `padLength.\n // Returns array of integers (each less than 2^bits-1), with each element\n // representing a `bits`-length segment of the input string from right to left,\n // i.e. parts[0] represents the right-most `bits`-length segment of the input string.\n split(str: string, padLength = 0) {\n if (padLength) {\n str = this.padLeft(str, padLength)\n }\n const parts = []\n for (var i = str.length; i > this.config.bits; i -= this.config.bits) {\n parts.push(parseInt(str.slice(i - this.config.bits, i), 2))\n }\n parts.push(parseInt(str.slice(0, i), 2))\n return parts\n }\n\n bin2hex(str: string) {\n let hex = '',\n num\n str = this.padLeft(str, 4)\n for (let i = str.length; i >= 4; i -= 4) {\n num = parseInt(str.slice(i - 4, i), 2)\n if (isNaN(num)) {\n throw new Error('Invalid binary character.')\n }\n hex = num.toString(16) + hex\n }\n return hex\n }\n\n hex2bin(str: string) {\n let bin = '',\n num\n for (let i = str.length - 1; i >= 0; i--) {\n num = parseInt(str[i], 16)\n if (isNaN(num)) {\n throw new Error('Invalid hex character.')\n }\n bin = this.padLeft(num.toString(2), 4) + bin\n }\n\n return bin\n }\n\n padLeft(str: string, bits: number = this.config.bits) {\n const missing = str.length % bits\n return (missing ? new Array(bits - missing + 1).join('0') : '') + str\n }\n\n random(bits: number) {\n const construct = (bits: number, arr: Uint32Array, size: number) => {\n let str = '',\n i = 0\n const len = arr.length - 1\n while (i < len || str.length < bits) {\n str += this.padLeft(arr[i].toString(16), size)\n i++\n }\n str = str.substr(-bits / 4)\n return (str.match(/0/g) || []).length === str.length ? null : str\n }\n\n let elems = Math.ceil(bits / 32),\n str = null,\n arr = new Uint32Array(elems)\n\n while (str === null) {\n this.crypto.getRandomValues(arr)\n str = construct(bits, arr, 8)\n }\n\n return str\n }\n\n share(secretString: string, numShares: number, threshold: number) {\n if (!this.config.logs.length) {\n this.init()\n }\n\n if (numShares % 1 !== 0 || numShares < 2) {\n throw new Error('Number of shares must be an integer between 2 and 2^bits-1 (' + this.config.max + '), inclusive.')\n }\n if (numShares > this.config.max) {\n var neededBits = Math.ceil(Math.log(numShares + 1) / Math.LN2)\n throw new Error(\n 'Number of shares must be an integer between 2 and 2^bits-1 (' +\n this.config.max +\n '), inclusive. To create ' +\n numShares +\n ' shares, use at least ' +\n neededBits +\n ' bits.'\n )\n }\n if (threshold % 1 !== 0 || threshold < 2) {\n throw new Error('Threshold number of shares must be an integer between 2 and 2^bits-1 (' + this.config.max + '), inclusive.')\n }\n if (threshold > this.config.max) {\n var neededBits = Math.ceil(Math.log(threshold + 1) / Math.LN2)\n throw new Error(\n 'Threshold number of shares must be an integer between 2 and 2^bits-1 (' +\n this.config.max +\n '), inclusive. To use a threshold of ' +\n threshold +\n ', use at least ' +\n neededBits +\n ' bits.'\n )\n }\n\n // append a 1 so that we can preserve the correct number of leading zeros in our secret\n const secret = this.split('1' + this.hex2bin(secretString), 0)\n const x = new Array(numShares),\n y = new Array(numShares)\n for (let i = 0, len = secret.length; i < len; i++) {\n const subShares = this._getShares(secret[i], numShares, threshold)\n for (let j = 0; j < numShares; j++) {\n x[j] = x[j] || subShares[j].x.toString(this.config.radix)\n y[j] = this.padLeft(subShares[j].y.toString(2)) + (y[j] ? y[j] : '')\n }\n }\n const padding = this.config.max.toString(this.config.radix).length\n return y.map((b, idx) => this.config.bits.toString(16).toUpperCase() + this.padLeft(x[idx], padding) + this.bin2hex(b))\n }\n\n // This is the basic polynomial generation and evaluation function\n // for a `config.bits`-length secret (NOT an arbitrary length)\n // Note: no error-checking at this stage! If `secrets` is NOT\n // a NUMBER less than 2^bits-1, the output will be incorrect!\n _getShares(secret: number, numShares: number, threshold: number) {\n const shares = []\n const coeffs = [secret]\n\n for (var i = 1; i < threshold; i++) {\n coeffs[i] = parseInt(this.random(this.config.bits), 16)\n }\n for (var i = 1, len = numShares + 1; i < len; i++) {\n shares[i - 1] = {\n x: i,\n y: this.horner(i, coeffs),\n }\n }\n return shares\n }\n\n // Polynomial evaluation at `x` using Horner's Method\n // TODO: this can possibly be sped up using other methods\n // NOTE: fx=fx * x + coeff[i] -> exp(log(fx) + log(x)) + coeff[i],\n // so if fx===0, just set fx to coeff[i] because\n // using the exp/log form will result in incorrect value\n horner(x: number, coeffs: Array) {\n const logx = this.config.logs[x]\n let fx = 0\n for (let i = coeffs.length - 1; i >= 0; i--) {\n if (fx === 0) {\n fx = coeffs[i]\n continue\n }\n fx = this.config.exps[(logx + this.config.logs[fx]) % this.config.max] ^ coeffs[i]\n }\n return fx\n }\n\n processShare(share: string) {\n const bits = parseInt(share[0], 16)\n if (bits && (bits % 1 !== 0 || bits < this.config.minBits || bits > this.config.maxBits)) {\n throw new Error('Number of bits must be an integer between ' + this.config.minBits + ' and ' + this.config.maxBits + ', inclusive.')\n }\n\n const max = Math.pow(2, bits) - 1\n const idLength = max.toString(this.config.radix).length\n\n const id = parseInt(share.substr(1, idLength), this.config.radix)\n if (id % 1 !== 0 || id < 1 || id > max) {\n throw new Error('Share id must be an integer between 1 and ' + this.config.max + ', inclusive.')\n }\n share = share.substr(idLength + 1)\n if (!share.length) {\n throw new Error('Invalid share: zero-length share.')\n }\n return {\n bits: bits,\n id: id,\n value: share,\n }\n }\n\n _combine(at: number, shares: Array) {\n if (!this.config.logs.length) {\n this.init()\n }\n\n const x: Array = []\n const y: Array> = []\n let result = ''\n let idx: number\n\n for (var i = 0, len = shares.length; i < len; i++) {\n const share = this.processShare(shares[i])\n\n if (x.includes(share['id'])) {\n // repeated x value?\n continue\n }\n\n idx = x.push(share['id']) - 1\n const shareValues = this.split(this.hex2bin(share['value']))\n for (let j = 0, len2 = shareValues.length; j < len2; j++) {\n y[j] = y[j] || []\n y[j][idx] = shareValues[j]\n }\n }\n\n for (var i = 0, len = y.length; i < len; i++) {\n result = this.padLeft(this.lagrange(at, x, y[i]).toString(2)) + result\n }\n\n if (at === 0) {\n // reconstructing the secret\n return this.bin2hex(result.slice(result.indexOf('1') + 1))\n } else {\n // generating a new share\n return this.bin2hex(result)\n }\n }\n\n combine(shares: Array) {\n return this._combine(0, shares)\n }\n\n // Generate a new share with id `id` (a number between 1 and 2^bits-1)\n // `id` can be a Number or a String in the default radix (16)\n newShare(id: number | string, shares: Array) {\n if (typeof id === 'string') {\n id = parseInt(id, this.config.radix)\n }\n\n const share = this.processShare(shares[0])\n const max = Math.pow(2, share['bits']) - 1\n\n if (id % 1 !== 0 || id < 1 || id > max) {\n throw new Error('Share id must be an integer between 1 and ' + this.config.max + ', inclusive.')\n }\n\n const padding = max.toString(this.config.radix).length\n return this.config.bits.toString(16).toUpperCase() + this.padLeft(id.toString(this.config.radix), padding) + this._combine(id, shares)\n }\n\n // Evaluate the Lagrange interpolation polynomial at x = `at`\n // using x and y Arrays that are of the same length, with\n // corresponding elements constituting points on the polynomial.\n lagrange(at: number, x: Array, y: Array) {\n let sum = 0,\n product,\n i,\n j,\n len\n for (i = 0, len = x.length; i < len; i++) {\n if (!y[i]) {\n continue\n }\n\n product = this.config.logs[y[i]]\n for (j = 0; j < len; j++) {\n if (i === j) {\n continue\n }\n if (at === x[j]) {\n // happens when computing a share that is in the list of shares used to compute it\n product = -1 // fix for a zero product term, after which the sum should be sum^0 = sum, not sum^1\n break\n }\n product =\n (product + this.config.logs[at ^ x[j]] - this.config.logs[x[i] ^ x[j]] + this.config.max) /* to make sure it's not negative */ %\n this.config.max\n }\n\n sum = product === -1 ? sum : sum ^ this.config.exps[product] // though exps[-1]= undefined and undefined ^ anything = anything in chrome, this behavior may not hold everywhere, so do the check\n }\n return sum\n }\n}\n\nexport const shamir = new ShamirClass()\n","// Uses fp as node names\nimport { acyclic, graphFromEdges, StronglyConnectedGraph } from '../utils/graph-utils'\nimport { DataOwnerOrStub, IccDataOwnerXApi } from '../icc-data-owner-x-api'\nimport { RSAUtils } from './RSA'\nimport { hex2ua } from '../utils'\nimport { HealthcareParty } from '../../icc-api/model/HealthcareParty'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { Device } from '../../icc-api/model/Device'\nimport { EntitiesEncryption } from './EntitiesEncryption'\nimport { CryptoPrimitives } from './CryptoPrimitives'\nimport { DataOwnerWithType, Delegation, EncryptedEntityStub } from '../../icc-api/model/models'\nimport { setEquals } from '../utils/collection-utils'\nimport { DataOwnerTypeEnum } from '../../icc-api/model/DataOwnerTypeEnum'\nimport { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub'\nimport { IccPatientApi } from '../../icc-api'\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Get the public keys of a data owner, same as {@link dataOwnerApi.getHexPublicKeysOf}.\n * @param dataOwner\n */\nexport function hexPublicKeysOf(dataOwner: DataOwnerOrStub) {\n return new Set([dataOwner.publicKey, ...Object.keys(dataOwner.aesExchangeKeys ?? {})].filter((pubKey) => !!pubKey) as string[])\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Get the transfer key graph for a data owner. Node names are the public key fingerprints of the data owner's keys, and an edge represents a key\n * which can be retrieved from another key using the transfer keys.\n * @param dataOwner a data owner.\n * @return a graph representing the possible key recovery paths using transfer keys for hte provided data owner.\n */\nexport function transferKeysFpGraphOf(dataOwner: DataOwnerOrStub): StronglyConnectedGraph {\n const publicKeys = Array.from(hexPublicKeysOf(dataOwner))\n const edges: [string, string][] = []\n Object.entries(dataOwner.transferKeys ?? {}).forEach(([from, tos]) => {\n Object.keys(tos).forEach((to) => {\n edges.push([from.slice(-32), to.slice(-32)])\n })\n })\n return acyclic(\n graphFromEdges(\n edges,\n publicKeys.map((x) => x.slice(-32))\n )\n )\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Get a map for converting public keys fingerprint to full public keys for the provided data owner.\n * @param dataOwner a data owner.\n * @return a map to convert fingerprints of the data owner into full public keys.\n */\nexport function fingerprintToPublicKeysMapOf(dataOwner: DataOwnerOrStub): { [fp: string]: string } {\n const publicKeys = Array.from(hexPublicKeysOf(dataOwner))\n const res: { [fp: string]: string } = {}\n publicKeys.forEach((pk) => {\n res[pk.slice(-32)] = pk\n })\n return res\n}\n\n/**\n * @internal this function is meant only for internal use and may be changed without notice.\n * Load many public keys in spki format.\n * @param rsa the rsa service\n * @param publicKeysSpkiHex public keys in spki format, hex encoded.\n * @return public keys as crypto keys by their fingerprint.\n */\nexport async function loadPublicKeys(rsa: RSAUtils, publicKeysSpkiHex: string[]): Promise<{ [publicKeyFingerprint: string]: CryptoKey }> {\n return Object.fromEntries(\n await Promise.all(publicKeysSpkiHex.map(async (x) => [x.slice(-32), await rsa.importKey('spki', hex2ua(x), ['encrypt'])]))\n )\n}\n\n/**\n * @internal This method is intended only for internal use and may be changed without notice.\n * Creates a delegation for the current data owner if the data owner is an encrypted entity and there is no delegation to himself.\n * @return the updated self.\n */\nexport async function ensureDelegationForSelf(\n dataOwnerApi: IccDataOwnerXApi,\n entitiesEncryption: EntitiesEncryption,\n cryptoPrimitives: CryptoPrimitives,\n basePatientApi: IccPatientApi\n): Promise {\n const self = await dataOwnerApi.getCurrentDataOwner()\n if (self.type === DataOwnerTypeEnum.Patient) {\n const patient: Patient = self.dataOwner\n const availableSecretIds = await entitiesEncryption.secretIdsOf(patient)\n if (availableSecretIds.length) {\n return self\n } else {\n const updatedPatient =\n Object.entries(patient.encryptionKeys ?? {}).length || Object.entries(patient.delegations ?? {}).length\n ? await entitiesEncryption.entityWithExtendedEncryptedMetadata(\n // If there is already something initialise only a new delegation to self\n patient,\n patient.id!,\n [cryptoPrimitives.randomUuid()],\n [],\n []\n ) // else initialise also encryption keys\n : await entitiesEncryption.entityWithInitialisedEncryptedMetadata(patient, undefined, undefined, true).then((x) => x.updatedEntity)\n return await basePatientApi.modifyPatient(updatedPatient).then((x) => ({ dataOwner: x, type: DataOwnerTypeEnum.Patient }))\n }\n } else {\n return self\n }\n}\n\nexport function encryptedStubEquals(a: EncryptedEntityStub, b: EncryptedEntityStub): boolean {\n if (!delegationLikeEquality(a.delegations, b.delegations)) return false\n if (!delegationLikeEquality(a.encryptionKeys, b.encryptionKeys)) return false\n if (!delegationLikeEquality(a.cryptedForeignKeys, b.cryptedForeignKeys)) return false\n if (!setEquals(new Set(a.secretForeignKeys), new Set(b.secretForeignKeys))) return false\n return a.encryptedSelf === b.encryptedSelf\n}\n\nfunction delegationLikeEquality(a: { [s: string]: Delegation[] } | undefined, b: { [s: string]: Delegation[] } | undefined): boolean {\n if (!setEquals(new Set(Object.keys(a ?? {})), new Set(Object.keys(b ?? {})))) return false\n for (const [k, aDelegations] of Object.entries(a ?? {})) {\n const bDelegations = (b ?? {})[k]\n if (\n !aDelegations.every(\n (da) =>\n !!bDelegations.find(\n (db) => da.key === db.key && da.delegatedTo === db.delegatedTo && da.owner === db.owner && setEquals(new Set(da.tags), new Set(db.tags))\n )\n )\n )\n return false\n }\n return true\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class AllCodesFilter extends AbstractFilterCode {\n $type: string = 'AllCodesFilter'\n constructor(json: JSON | any) {\n super(json)\n Object.assign(this as AllCodesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class AllDevicesFilter extends AbstractFilterDevice {\n $type: string = 'AllDevicesFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllDevicesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class AllHealthcarePartiesFilter extends AbstractFilterHealthcareParty {\n $type: string = 'AllHealthcarePartiesFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllHealthcarePartiesFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\n\nexport class AllUsersFilter extends AbstractFilterUser {\n $type: string = 'AllUsersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as AllUsersFilter, json)\n }\n\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class CodeByIdsFilter extends AbstractFilterCode {\n $type: string = 'CodeByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as CodeByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterCode } from '../../icc-api/model/AbstractFilterCode'\n\nexport class CodeByRegionTypeLabelLanguageFilter extends AbstractFilterCode {\n $type: string = 'CodeByRegionTypeLabelLanguageFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as CodeByRegionTypeLabelLanguageFilter, json)\n }\n\n desc?: string\n region?: string\n type?: string\n language?: string\n label?: string\n}\n","import { AbstractFilter } from './filters'\n\nexport class ComplementFilter {\n constructor(superSet: AbstractFilter, subSet: AbstractFilter) {\n this.superSet = superSet\n this.subSet = subSet\n }\n\n desc?: string\n superSet: AbstractFilter\n subSet: AbstractFilter\n $type = 'ComplementFilter'\n}\n","export class ConstantFilter {\n constructor(constant: T[]) {\n this.constant = constant\n }\n\n desc?: string\n constant?: T[]\n $type = 'ConstantFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyPatientTagCodeDateFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyPatientTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyPatientTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKey?: string\n patientSecretForeignKeys?: Array\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startServiceValueDate?: number\n endServiceValueDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByHcPartyTagCodeDateFilter extends AbstractFilterContact {\n $type: string = 'ContactByHcPartyTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByHcPartyTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startOfContactOpeningDate?: number\n endOfContactOpeningDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\n\nexport class ContactByServiceIdsFilter extends AbstractFilterContact {\n $type: string = 'ContactByServiceIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ContactByServiceIdsFilter, json)\n }\n\n desc?: string\n ids?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class DeviceByHcPartyFilter extends AbstractFilterDevice {\n $type: string = 'DeviceByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as DeviceByHcPartyFilter, json)\n }\n\n desc?: string\n responsibleId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterDevice } from '../../icc-api/model/AbstractFilterDevice'\n\nexport class DeviceByIdsFilter extends AbstractFilterDevice {\n $type: string = 'DeviceByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as DeviceByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyIdentifiersFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyIdentifiersFilter, json)\n }\n\n desc?: string\n hcPartyId?: string\n identifiers?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartySecretForeignKeysFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartySecretForeignKeysFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartySecretForeignKeysFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKeys?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByHcPartyTagCodeFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByHcPartyTagCodeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByHcPartyTagCodeFilter, json)\n }\n\n desc?: string\n healthCarePartyId?: string\n codeType?: string\n codeCode?: string\n tagType?: string\n tagCode?: string\n status?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthElement } from '../../icc-api/model/AbstractFilterHealthElement'\n\nexport class HealthElementByIdsFilter extends AbstractFilterHealthElement {\n $type: string = 'HealthElementByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthElementByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByIdsFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByNameFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByNameFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByNameFilter, json)\n }\n\n descending?: boolean\n name: string = ''\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterHealthcareParty } from '../../icc-api/model/AbstractFilterHealthcareParty'\n\nexport class HealthcarePartyByTagCodeFilter extends AbstractFilterHealthcareParty {\n $type: string = 'HealthcarePartyByTagCodeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as HealthcarePartyByTagCodeFilter, json)\n }\n\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n desc?: string\n}\n","import { AbstractFilter } from './filters'\n\nexport class IntersectionFilter {\n constructor(filters: AbstractFilter[]) {\n this.filters = filters\n }\n\n desc?: string\n filters: AbstractFilter[]\n $type = 'IntersectionFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterInvoice } from '../../icc-api/model/AbstractFilterInvoice'\n\nexport class InvoiceByHcPartyCodeDateFilter extends AbstractFilterInvoice {\n $type: string = 'InvoiceByHcPartyCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as InvoiceByHcPartyCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n code?: string\n startInvoiceDate?: number\n endInvoiceDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskAfterDateFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskAfterDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskAfterDateFilter, json)\n }\n\n healthcarePartyId?: string\n date?: number\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskByHcPartyAndTypeFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskByHcPartyAndTypeFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskByHcPartyAndTypeFilter, json)\n }\n\n healthcarePartyId?: string\n type?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterMaintenanceTask } from '../../icc-api/model/AbstractFilterMaintenanceTask'\n\nexport class MaintenanceTaskByIdsFilter extends AbstractFilterMaintenanceTask {\n $type: string = 'MaintenanceTaskByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as MaintenanceTaskByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndActiveFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndActiveFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndActiveFilter, json)\n }\n\n desc?: string\n active?: boolean\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndAddressFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndAddressFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndAddressFilter, json)\n }\n\n desc?: string\n searchString?: string\n healthcarePartyId?: string\n postalCode?: string\n houseNumber?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndExternalIdFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndExternalIdFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndExternalIdFilter, json)\n }\n\n desc?: string\n externalId?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndIdentifiersFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndIdentifiersFilter, json)\n }\n\n healthcarePartyId?: string\n identifiers?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndSsinFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndSsinFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndSsinFilter, json)\n }\n\n desc?: string\n ssin?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyAndSsinsFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyAndSsinsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyAndSsinsFilter, json)\n }\n\n desc?: string\n ssins?: Array\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyDateOfBirthBetweenFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyDateOfBirthBetweenFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyDateOfBirthBetweenFilter, json)\n }\n\n desc?: string\n minDateOfBirth?: number\n maxDateOfBirth?: number\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyDateOfBirthFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyDateOfBirthFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyDateOfBirthFilter, json)\n }\n\n desc?: string\n dateOfBirth?: number\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n}\n","/*\n * Copyright (c) 2020. Taktik SA, All rights reserved.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\nimport { Patient } from '../../icc-api/model/Patient'\nimport GenderEnum = Patient.GenderEnum\n\nexport class PatientByHcPartyGenderEducationProfession extends AbstractFilterPatient {\n constructor(json: JSON | any) {\n super(json)\n }\n\n healthcarePartyId?: string\n gender?: GenderEnum\n education?: string\n profession?: string\n\n $type = 'PatientByHcPartyGenderEducationProfession'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyNameContainsFuzzyFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyNameContainsFuzzyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyNameContainsFuzzyFilter, json)\n }\n\n desc?: string\n searchString?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByHcPartyNameFilter extends AbstractFilterPatient {\n $type: string = 'PatientByHcPartyNameFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByHcPartyNameFilter, json)\n }\n\n desc?: string\n name?: string\n healthcarePartyId?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\n\nexport class PatientByIdsFilter extends AbstractFilterPatient {\n $type: string = 'PatientByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as PatientByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByContactsAndSubcontactsFilter extends AbstractFilterService {\n $type: string = 'ServiceByContactsAndSubcontactsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByContactsAndSubcontactsFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n contacts?: Array\n subContacts?: Array\n startValueDate?: number\n endValueDate?: number\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyFilter, json)\n }\n\n hcpId?: string\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyHealthElementIdsFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyHealthElementIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyHealthElementIdsFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n healthElementIds?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Identifier } from '../../icc-api/model/Identifier'\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyIdentifiersFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyIdentifiersFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyIdentifiersFilter, json)\n }\n\n healthcarePartyId?: string\n desc?: string\n identifiers?: Array\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByHcPartyTagCodeDateFilter extends AbstractFilterService {\n $type: string = 'ServiceByHcPartyTagCodeDateFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByHcPartyTagCodeDateFilter, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKey?: string\n tagType?: string\n tagCode?: string\n codeType?: string\n codeCode?: string\n startValueDate?: number\n endValueDate?: number\n descending?: boolean\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceByIdsFilter extends AbstractFilterService {\n $type: string = 'ServiceByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\n\nexport class ServiceBySecretForeignKeys extends AbstractFilterService {\n $type: string = 'ServiceBySecretForeignKeys'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as ServiceBySecretForeignKeys, json)\n }\n\n desc?: string\n healthcarePartyId?: string\n patientSecretForeignKeys?: Array\n}\n","import { AbstractFilter } from './filters'\n\nexport class UnionFilter {\n constructor(filters: AbstractFilter[]) {\n this.filters = filters\n }\n\n filters: AbstractFilter[]\n $type = 'UnionFilter'\n}\n","/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\n\nexport class UserByIdsFilter extends AbstractFilterUser {\n $type: string = 'UserByIdsFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as UserByIdsFilter, json)\n }\n\n ids?: Array\n desc?: string\n}\n","import { AbstractFilterUser } from '../../icc-api/model/AbstractFilterUser'\n\n/**\n * iCure Data Stack API Documentation\n * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.\n *\n * OpenAPI spec version: v1\n *\n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\n\nexport class UsersByPatientIdFilter extends AbstractFilterUser {\n $type: string = 'UsersByPatientIdFilter'\n constructor(json: JSON | any) {\n super(json)\n\n Object.assign(this as UsersByPatientIdFilter, json)\n }\n\n patientId?: string\n desc?: string\n}\n","import { ConstantFilter } from './ConstantFilter'\nimport { Patient } from '../../icc-api/model/Patient'\nimport { AbstractFilterPatient } from '../../icc-api/model/AbstractFilterPatient'\nimport { AbstractFilterContact } from '../../icc-api/model/AbstractFilterContact'\nimport { AbstractFilterService } from '../../icc-api/model/AbstractFilterService'\nimport { Service } from '../../icc-api/model/Service'\nimport { Contact } from '../../icc-api/model/Contact'\nimport { IntersectionFilter } from './IntersectionFilter'\nimport { UnionFilter } from './UnionFilter'\nimport { ComplementFilter } from './ComplementFilter'\nimport { PatientByHcPartyAndActiveFilter } from './PatientByHcPartyAndActiveFilter'\nimport { PatientByHcPartyAndAddressFilter } from './PatientByHcPartyAndAddressFilter'\nimport { PatientByHcPartyAndExternalIdFilter } from './PatientByHcPartyAndExternalIdFilter'\nimport { PatientByHcPartyAndSsinsFilter } from './PatientByHcPartyAndSsinsFilter'\nimport { PatientByHcPartyDateOfBirthBetweenFilter } from './PatientByHcPartyDateOfBirthBetweenFilter'\nimport { PatientByHcPartyDateOfBirthFilter } from './PatientByHcPartyDateOfBirthFilter'\n\nimport { add, format } from 'date-fns'\nimport { PatientByHcPartyFilter } from './PatientByHcPartyFilter'\nimport { PatientByHcPartyGenderEducationProfession } from './PatientByHcPartyGenderEducationProfession'\nimport { PatientByIdsFilter } from './PatientByIdsFilter'\nimport { PatientByHcPartyNameContainsFuzzyFilter } from './PatientByHcPartyNameContainsFuzzyFilter'\n\nimport GenderEnum = Patient.GenderEnum\nimport { ContactByHcPartyFilter } from './ContactByHcPartyFilter'\n\nexport * from './AllCodesFilter'\nexport * from './AllDevicesFilter'\nexport * from './AllHealthcarePartiesFilter'\nexport * from './AllUsersFilter'\nexport * from './CodeByIdsFilter'\nexport * from './CodeByRegionTypeLabelLanguageFilter'\nexport * from './ComplementFilter'\nexport * from './ConstantFilter'\nexport * from './ContactByHcPartyFilter'\nexport * from './ContactByHcPartyPatientTagCodeDateFilter'\nexport * from './ContactByHcPartyTagCodeDateFilter'\nexport * from './ContactByServiceIdsFilter'\nexport * from './DeviceByHcPartyFilter'\nexport * from './DeviceByIdsFilter'\nexport * from './HealthElementByHcPartyFilter'\nexport * from './HealthElementByHcPartyIdentifiersFilter'\nexport * from './HealthElementByHcPartySecretForeignKeysFilter'\nexport * from './HealthElementByHcPartyTagCodeFilter'\nexport * from './HealthElementByIdsFilter'\nexport * from './HealthcarePartyByIdsFilter'\nexport * from './HealthcarePartyByNameFilter'\nexport * from './HealthcarePartyByTagCodeFilter'\nexport * from './IntersectionFilter'\nexport * from './InvoiceByHcPartyCodeDateFilter'\nexport * from './PatientByHcPartyAndActiveFilter'\nexport * from './PatientByHcPartyAndAddressFilter'\nexport * from './PatientByHcPartyAndExternalIdFilter'\nexport * from './PatientByHcPartyAndIdentifiersFilter'\nexport * from './PatientByHcPartyAndSsinFilter'\nexport * from './PatientByHcPartyAndSsinsFilter'\nexport * from './PatientByHcPartyDateOfBirthBetweenFilter'\nexport * from './PatientByHcPartyDateOfBirthFilter'\nexport * from './PatientByHcPartyFilter'\nexport * from './PatientByHcPartyGenderEducationProfession'\nexport * from './PatientByHcPartyNameContainsFuzzyFilter'\nexport * from './PatientByHcPartyNameFilter'\nexport * from './PatientByIdsFilter'\nexport * from './ServiceByContactsAndSubcontactsFilter'\nexport * from './ServiceByHcPartyFilter'\nexport * from './ServiceByHcPartyIdentifiersFilter'\nexport * from './ServiceByHcPartyHealthElementIdsFilter'\nexport * from './ServiceByHcPartyTagCodeDateFilter'\nexport * from './ServiceByIdsFilter'\nexport * from './ServiceBySecretForeignKeys'\nexport * from './UnionFilter'\nexport * from './UserByIdsFilter'\n\nexport class Filter {\n public static patient(): PatientFilterBuilder {\n return new PatientFilterBuilder()\n }\n}\n\nexport type AbstractFilter = T extends Patient\n ? AbstractFilterPatient | ConstantFilter | IntersectionFilter | UnionFilter | ComplementFilter\n : T extends Contact\n ? AbstractFilterContact | ConstantFilter | IntersectionFilter | UnionFilter | ComplementFilter\n : T extends Service\n ? AbstractFilterService | ConstantFilter | IntersectionFilter | UnionFilter | ComplementFilter\n : ConstantFilter | IntersectionFilter | UnionFilter | ComplementFilter\n\nconst f: AbstractFilterContact = new ComplementFilter(new ContactByHcPartyFilter({}), new ContactByHcPartyFilter({}))\n\nabstract class FilterBuilder {\n // This is the current generator for the filter, when we call build(), filterProvider() is going to be called\n filterProvider?: () => AbstractFilter\n // This is the method that is called each time we chain a filter to another filter. The default behaviour is to\n // return a FilterBuilder with the provider set to the last element in the chain, except when we use combination\n // operators like or()/and()/… . After one of those, the composer is set to a function that will return a FilterBuilder\n // that combines the existing filterBuilder with the filter definition we just added.\n composer: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder = (\n thisFilterBuilder: FilterBuilder,\n otherFilterBuilder: FilterBuilder\n ) => otherFilterBuilder\n\n protected constructor(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ) {\n this.filterProvider = filterProvider\n composer && (this.composer = composer)\n }\n\n abstract build(): AbstractFilter\n\n abstract clone(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ): FilterBuilder\n\n listOf(elements: T[]): FilterBuilder {\n return this.clone(() => new ConstantFilter(elements) as AbstractFilter)\n }\n\n private makeLazyLeftRightFilterBuilder(\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () => AbstractFilter\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const leftHandFilterBuilder: FilterBuilder = this\n const leftHandFilter = leftHandFilterBuilder.build() // Freeze the leftHand filter\n\n return leftHandFilterBuilder.filterProvider\n ? this.clone(\n undefined, //filter provider is indeterminate until we have performed a composition\n (unused: FilterBuilder, rightHandFilterBuilder: FilterBuilder) => {\n // because we freeze the leftHand in the state it is right now, we are not going to use its value when the composition occurs\n const rightHandFilter = rightHandFilterBuilder.build()\n\n return rightHandFilter\n ? this.clone(leftHandRightHandFiltersCombiner(leftHandFilter, rightHandFilter), rightHandFilterBuilder.composer)\n : rightHandFilterBuilder //Can this happen ?\n }\n )\n : this\n }\n\n private makeEagerLeftRightFilterBuilder(\n rightHandFilterBuilderFactory: (it: FilterBuilder) => FilterBuilder,\n leftHandRightHandFiltersCombiner: (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () => AbstractFilter\n ) {\n const rightHandFilterBuilder = rightHandFilterBuilderFactory(this)\n return this.filterProvider ? this.clone(leftHandRightHandFiltersCombiner(this.build(), rightHandFilterBuilder.build())) : this\n }\n\n /**\n * There are two ways of doing and, or, …\n *\n * 1) for (...) or (...) we use the syntax ... .or((builder) => builder...)\n * ex: youngerThan(65).or((b) => b.olderThan(18).and().gender(M)) means any gender < 65 or male > 18\n * 2) for ((...) or ...) we use the syntax ... .or().…\n * ex: youngerThan(65).or().olderThan(18).and().gender(M) means males between 18 and 65\n *\n * When 1) is used we do not have to wait for anything to provide a resolved builder that can later be combined with extra elements in the chain.\n * In other words, we can build the current filter chain up to the or/and/… and we can build what is inside the or/and/… brackets and we can set\n * the filterProvider of the returned Builder to () => UnionFilter([leftHand.build(), innerBrackets.build()]).\n *\n * When 2) is used, things get more tricky because we will have to do an or/and/… between what we have on the leftHand and with what we do not have\n * yet on the right hand. What we do in that situation is to set the filterProvider() to undefined because calling build() without having provided a\n * rightHand doesn't make sense. We set a composer that is going to be called the next time we chain a filter.\n *\n * @param filterBuilderFactory\n */\n\n and(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new IntersectionFilter([leftHandFilter, rightHandFilter]) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n or(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new UnionFilter([leftHandFilter, rightHandFilter]) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n\n minus(filterBuilderFactory?: (it: FilterBuilder) => FilterBuilder): FilterBuilder {\n const combiner = (leftHandFilter: AbstractFilter, rightHandFilter: AbstractFilter) => () =>\n new ComplementFilter(leftHandFilter, rightHandFilter) as AbstractFilter\n\n return filterBuilderFactory ? this.makeEagerLeftRightFilterBuilder(filterBuilderFactory, combiner) : this.makeLazyLeftRightFilterBuilder(combiner)\n }\n}\n\nclass PatientFilterBuilder extends FilterBuilder {\n hcpId?: string\n\n constructor(\n filterProvider?: () => AbstractFilter,\n hcpId?: string,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ) {\n super(filterProvider, composer)\n this.hcpId = hcpId\n }\n\n clone(\n filterProvider?: () => AbstractFilter,\n composer?: (thisFilterBuilder: FilterBuilder, otherFilterBuilder: FilterBuilder) => FilterBuilder\n ): FilterBuilder {\n return new PatientFilterBuilder(filterProvider, this.hcpId, composer)\n }\n\n listOf(elements: Patient[]): PatientFilterBuilder {\n return new PatientFilterBuilder(() => new ConstantFilter(elements) as AbstractFilter)\n }\n\n and(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.and(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n or(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.or(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n minus(filterBuilderFactory?: (it: PatientFilterBuilder) => PatientFilterBuilder): PatientFilterBuilder {\n return super.minus(filterBuilderFactory as any) as PatientFilterBuilder\n }\n\n forHcp(hcpId: string): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(this.filterProvider, hcpId)) as PatientFilterBuilder\n }\n\n all(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyFilter({ healthcarePartyId: this.hcpId }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n activePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: true }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n inactivePatients(): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndActiveFilter({ healthcarePartyId: this.hcpId, active: false }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n byAddress(searchString?: string, postalCode?: string, houseNumber?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndAddressFilter({\n healthcarePartyId: this.hcpId,\n searchString,\n postalCode,\n houseNumber,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withExternalId(externalId: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyAndExternalIdFilter({\n healthcarePartyId: this.hcpId,\n externalId: externalId,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n withSsins(ssins: string[]): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(() => new PatientByHcPartyAndSsinsFilter({ healthcarePartyId: this.hcpId, ssins: ssins }), this.hcpId)\n ) as PatientFilterBuilder\n }\n\n withDateOfBirthBetween(from?: number, to?: number): PatientFilterBuilder {\n return this.composer(\n this,\n this.clone(\n () =>\n new PatientByHcPartyDateOfBirthBetweenFilter({\n healthcarePartyId: this.hcpId,\n minDateOfBirth: from,\n maxDateOfBirth: to,\n })\n )\n ) as PatientFilterBuilder\n }\n\n byDateOfBirth(dateOfBirth: number): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyDateOfBirthFilter({\n healthcarePartyId: this.hcpId,\n dateOfBirth: dateOfBirth,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n olderThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(10000101, parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')))\n }\n\n youngerThan(age: number): PatientFilterBuilder {\n return this.withDateOfBirthBetween(parseInt(format(add(new Date(), { years: -age }), 'yyyyMMdd')), 99991231)\n }\n\n byGenderEducationProfession(gender?: GenderEnum, education?: string, profession?: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyGenderEducationProfession({\n healthcarePartyId: this.hcpId,\n gender: gender,\n education: education,\n profession: profession,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n byIds(ids: string[]): PatientFilterBuilder {\n return this.composer(this, new PatientFilterBuilder(() => new PatientByIdsFilter({ ids: ids }), this.hcpId)) as PatientFilterBuilder\n }\n\n searchByName(name: string): PatientFilterBuilder {\n return this.composer(\n this,\n new PatientFilterBuilder(\n () =>\n new PatientByHcPartyNameContainsFuzzyFilter({\n healthcarePartyId: this.hcpId,\n searchString: name,\n }),\n this.hcpId\n )\n ) as PatientFilterBuilder\n }\n\n build(): AbstractFilter {\n return this.filterProvider?.() || this.all().build()\n }\n}\n","import { IccAccesslogApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AccessLog, PaginatedListAccessLog } from '../icc-api/model/models'\nimport * as _ from 'lodash'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport interface AccessLogWithPatientId extends AccessLog {\n patientId: string\n}\n\nexport class IccAccesslogXApi extends IccAccesslogApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n private readonly cryptedKeys = ['detail', 'objectId'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of access log with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this access log refers to.\n * @param h initialised data for the access log. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the access log. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of access log.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n h: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n\n const accessLog = _.assign(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.AccessLog',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n date: +new Date(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n user: user.id,\n patientId: patient.id,\n accessType: 'USER_ACCESS',\n },\n h || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.administrativeData ?? []),\n ]\n return new AccessLog(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(accessLog, patient.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n * @param usingPost\n */\n\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false): Promise {\n const extractedKeys = await this.crypto.entities.secretIdsOf(patient, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(topmostParentId!, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(topmostParentId!, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n\n async findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise {\n const accessLogs = await super.findAccessLogsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys)\n return await this.decrypt(hcPartyId, accessLogs)\n }\n\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super.findAccessLogsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((accesslogs) => this.decrypt(hcPartyId, accesslogs))\n }\n\n decrypt(hcpId: string, accessLogs: Array): Promise> {\n return Promise.all(\n accessLogs.map((x) => this.crypto.entities.decryptEntity(x, hcpId, (json) => new AccessLog(json)).then(({ entity }) => entity))\n )\n }\n\n encrypt(user: models.User, accessLogs: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLogs)\n }\n\n private encryptAs(dataOwner: string, accessLogs: Array): Promise> {\n return Promise.all(\n accessLogs.map((x) => this.crypto.entities.tryEncryptEntity(x, dataOwner, this.cryptedKeys, false, true, (json) => new AccessLog(json)))\n )\n }\n\n createAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n createAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((als) => super.createAccessLog(als[0]))\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [accessLog]))\n .then((als) => als[0])\n : Promise.resolve()\n }\n\n getAccessLog(accessLogId: string): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n getAccessLogWithUser(user: models.User, accessLogId: string): Promise {\n return super\n .getAccessLog(accessLogId)\n .then((accessLog) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [accessLog]))\n .then((als) => als[0])\n }\n\n listAccessLogs(fromEpoch?: number, toEpoch?: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n listAccessLogsWithUser(\n user: models.User,\n fromEpoch?: number,\n toEpoch?: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n return super\n .listAccessLogs(fromEpoch, toEpoch, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n modifyAccessLog(body?: models.AccessLog): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n async modifyAccessLogWithUser(user: models.User, body?: models.AccessLog): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, _.cloneDeep(body)) : null\n }\n\n private modifyAs(dataOwner: string, accessLog: models.AccessLog): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(accessLog)])\n .then((als) => super.modifyAccessLog(als[0]))\n .then((accessLog) => this.decrypt(dataOwner, [accessLog]))\n .then((als) => als[0])\n }\n\n findByUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): never {\n throw new Error('Cannot call a method that returns access logs without providing a user for de/encryption')\n }\n\n findByUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n descending?: boolean\n ): Promise {\n return super\n .findByUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit, descending)\n .then((accessLog) =>\n this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, accessLog.rows!).then((dr) => Object.assign(accessLog, { rows: dr }))\n )\n }\n\n async findLatestAccessLogsOfPatientsWithUser(user: models.User, userId: string, limit = 100, startDate?: number): Promise {\n let foundAccessLogs: AccessLogWithPatientId[] = [],\n nextKeyPair: models.PaginatedDocumentKeyIdPairObject | undefined = undefined\n const numberRequestedAccessLogs = 100\n const MAX_WHILE_ITERATIONS = 5\n\n for (let currentIteration = 0; foundAccessLogs.length < limit && currentIteration < MAX_WHILE_ITERATIONS; currentIteration++) {\n const currentLimit = limit - foundAccessLogs.length\n const { rows: logs, nextKeyPair: newNextKeyPair }: models.PaginatedListAccessLog = (await super.findByUserAfterDate(\n userId,\n 'USER_ACCESS',\n startDate,\n nextKeyPair && JSON.stringify(nextKeyPair.startKey!),\n nextKeyPair && nextKeyPair.startKeyDocId!,\n numberRequestedAccessLogs,\n true\n )) as models.PaginatedListAccessLog\n const logsWithPatientId: AccessLogWithPatientId[] = await this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, logs as AccessLog[]).then(\n (decryptedLogs) =>\n Promise.all(\n _.map(decryptedLogs, (decryptedLog) => {\n return this.crypto.entities.owningEntityIdsOf(decryptedLog, user.healthcarePartyId as string).then(\n (keys) =>\n ({\n ...decryptedLog,\n patientId: _.head(keys),\n } as AccessLogWithPatientId)\n )\n })\n )\n )\n\n const uniqueLogs: AccessLogWithPatientId[] = _.chain(logsWithPatientId)\n .reject((log) => _.some(foundAccessLogs, ({ patientId }) => patientId === log.patientId))\n .uniqBy((log: AccessLogWithPatientId) => log.patientId)\n .value()\n .slice(0, currentLimit)\n\n foundAccessLogs = [...foundAccessLogs, ...uniqueLogs]\n\n if ((logs || []).length < numberRequestedAccessLogs) {\n break\n } else if (newNextKeyPair) {\n nextKeyPair = newNextKeyPair\n } else {\n break\n }\n }\n\n return foundAccessLogs\n }\n\n /**\n * @param accessLog an access log\n * @return the id of the patient that the access log refers to, retrieved from the encrypted metadata (not from the decrypted entity body). Normally\n * there should only be one element in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(accessLog: AccessLog): Promise {\n return this.crypto.entities.owningEntityIdsOf(accessLog, undefined)\n }\n\n /**\n * Share an existing access log with other data owners, allowing them to access the non-encrypted data of the access log and optionally also the\n * encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the access log.\n * @param accessLog the access log to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this access log refers to should be shared with the delegate. Normally this would\n * be the same as objectId, but it is encrypted separately from it allowing you to give access to the patient id without giving access to the other\n * encrypted data of the access log (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated entity.\n */\n async shareWith(\n delegateId: string,\n accessLog: AccessLog,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(accessLog, { [delegateId]: options })\n }\n\n /**\n * Share an existing access log with other data owners, allowing them to access the non-encrypted data of the access log and optionally also the\n * encrypted content.\n * @param accessLog the access log to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - sharePatientId: specifies if the id of the patient that this access log refers to should be shared with the delegate. Normally this would\n * be the same as objectId, but it is encrypted separately from it allowing you to give access to the patient id without giving access to the other\n * encrypted data of the access log (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated entity.\n */\n async shareWithMany(\n accessLog: AccessLog,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n accessLog,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return accessLog\n }\n\n async getDataOwnersWithAccessTo(entity: models.AccessLog): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: 'WRITE' }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.AccessLog): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import * as models from '../icc-api/model/models'\nimport { IccAuthApi, IccBekmehrApi, IccIcureApi } from '../icc-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { string2ua, ua2string } from './utils/binary-utils'\nimport { Contact, Document, HealthElement, Service } from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher\nexport interface ContactPatcher {\n type: 'ContactDto'\n patch: (contacts: Contact[]) => Promise\n}\nexport interface HealthElementPatcher {\n type: 'HealthElementDto'\n patch: (patients: HealthElement[]) => Promise\n}\nexport interface DocumentPatcher {\n type: 'DocumentDto'\n patch: (documents: Document[]) => Promise\n}\nexport interface ServicePatcher {\n type: 'ServiceDto'\n patch: (documents: Service[]) => Promise\n}\n\nexport class IccBekmehrXApi extends IccBekmehrApi {\n private readonly ctcApi: IccContactXApi\n private readonly helementApi: IccHelementXApi\n private readonly documentApi: IccDocumentXApi\n private readonly wssHost: string\n private readonly authApi: IccAuthApi\n private readonly usesNewKraken: Promise\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authApi: IccAuthApi,\n ctcApi: IccContactXApi,\n helementApi: IccHelementXApi,\n documentApi: IccDocumentXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.authApi = authApi\n this.ctcApi = ctcApi\n this.helementApi = helementApi\n this.documentApi = documentApi\n this.usesNewKraken = new IccIcureApi(host, headers, new NoAuthenticationProvider(), fetchImpl).getVersion().then((version) => {\n return parseInt(version.split('.')[0]) >= 4\n })\n\n this.wssHost = new URL(this.host, typeof window !== 'undefined' ? window.location.href : undefined).href\n .replace(/^http/, 'ws')\n .replace(/\\/rest\\/v.+/, '/ws')\n }\n\n socketEventListener(\n socket: WebSocket,\n healthcarePartyId: string,\n resolve: (value: Blob) => void,\n reject: (reason?: any) => void,\n patchers: Patcher[],\n progressCallback?: (progress: number) => void\n ) {\n const that = this\n\n const send = (command: string, uuid: string, body: any) => {\n const data = JSON.stringify({ command, uuid, body })\n socket.send(data.length > 65000 ? string2ua(data).buffer : data)\n }\n\n const messageHandler = (msg: any, event: any) => {\n if (msg.command === 'decrypt') {\n if (msg.type === 'ContactDto') {\n that.ctcApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ContactDto')\n .reduce(async (p, patcher) => (patcher as ContactPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'HealthElementDto') {\n that.helementApi\n .decrypt(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'HealthElementDto')\n .reduce(async (p, patcher) => (patcher as HealthElementPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n } else if (msg.type === 'DocumentDto') {\n that.documentApi\n .decrypt(\n healthcarePartyId,\n msg.body.map((d: JSON) => new Document(d))\n )\n .then((res) =>\n patchers\n .filter((p) => p.type === 'DocumentDto')\n .reduce(async (p, patcher) => (patcher as DocumentPatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) =>\n send(\n 'decryptResponse',\n msg.uuid,\n res?.map((d) => {\n const de = d.decryptedAttachment\n const { encryptedAttachment, ...stripped } = d\n return de ? { ...stripped, decryptedAttachment: btoa(ua2string(de)) } : stripped\n })\n )\n )\n } else if (msg.type === 'ServiceDto') {\n that.ctcApi\n .decryptServices(healthcarePartyId, msg.body)\n .then((res) =>\n patchers\n .filter((p) => p.type === 'ServiceDto')\n .reduce(async (p, patcher) => (patcher as ServicePatcher).patch(await p), Promise.resolve(res))\n )\n .then((res) => send('decryptResponse', msg.uuid, res))\n }\n } else if (msg.command === 'progress') {\n if (progressCallback && msg.body && msg.body[0]) {\n progressCallback(msg.body[0].progress)\n }\n } else {\n console.error('error received from backend:' + event.data)\n reject('websocket error: ' + event.data)\n socket.close(4000, 'backend error')\n }\n }\n\n return (event: MessageEvent) => {\n if (typeof event.data === 'string') {\n const msg = JSON.parse(event.data)\n messageHandler(msg, event)\n } else {\n const blob: Blob = event.data\n const subBlob = blob.slice(0, 1)\n const br = new FileReader()\n br.onload = function (e) {\n const firstChar = e.target && new Uint8Array((e.target as any).result as ArrayBuffer)[0]\n\n if (firstChar === 0x7b) {\n const tr = new FileReader()\n tr.onload = function (e) {\n const msg = e.target && JSON.parse((e.target as any).result as string)\n messageHandler(msg, event)\n }\n tr.readAsBinaryString(blob)\n } else {\n resolve(blob)\n socket.close(1000, 'Ok')\n }\n }\n br.readAsArrayBuffer(subBlob)\n }\n }\n }\n\n generateSmfExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SoftwareMedicalFileExport,\n progressCallback?: (progress: number) => void,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise {\n return this.usesNewKraken\n .then((isNewKraken) => {\n return isNewKraken ? this.authenticationProvider.getAuthService().getAuthHeaders() : null\n })\n .then((authHeaders) => {\n return (!sessionId && !authHeaders ? this.authApi.token('GET', '/ws/be_kmehr/generateSmf') : Promise.resolve('')).then(\n (token) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSmf;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSmf;sessionid=${sessionId ?? ''}`,\n !!authHeaders && authHeaders.length > 0 ? [authHeaders[0].data.replace(' ', '')] : []\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers, progressCallback))\n })\n )\n })\n }\n\n generateSumehrExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise {\n return this.usesNewKraken\n .then((isNewKraken) => {\n return isNewKraken ? this.authenticationProvider.getAuthService().getAuthHeaders() : null\n })\n .then((authHeaders) => {\n return (!sessionId && !authHeaders ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehr') : Promise.resolve('')).then(\n (token) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehr;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehr;sessionid=${sessionId ?? ''}`,\n !!authHeaders && authHeaders.length > 0 ? [authHeaders[0].data.replace(' ', '')] : []\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n })\n }\n\n generateSumehrV2ExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise {\n return this.usesNewKraken\n .then((isNewKraken) => {\n return isNewKraken ? this.authenticationProvider.getAuthService().getAuthHeaders() : null\n })\n .then((authHeaders) => {\n return (!sessionId && !authHeaders ? this.authApi.token('GET', '/ws/be_kmehr/generateSumehrV2') : Promise.resolve('')).then(\n (token) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateSumehrV2;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateSumehrV2;sessionid=${sessionId ?? ''}`,\n !!authHeaders && authHeaders.length > 0 ? [authHeaders[0].data.replace(' ', '')] : []\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n })\n }\n\n generateDiaryNoteExportWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n body: models.SumehrExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise {\n return this.usesNewKraken\n .then((isNewKraken) => {\n console.log(isNewKraken)\n return isNewKraken ? this.authenticationProvider.getAuthService().getAuthHeaders() : null\n })\n .then((authHeaders) => {\n return (!sessionId && !authHeaders ? this.authApi.token('GET', '/ws/be_kmehr/generateDiaryNote') : Promise.resolve('')).then(\n (token) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateDiaryNote;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateDiaryNote;sessionid=${sessionId ?? ''}`,\n !!authHeaders && authHeaders.length > 0 ? [authHeaders[0].data.replace(' ', '')] : []\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: { patientId: patientId, language: language, info: body },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n })\n }\n\n generateMedicationSchemeWithEncryptionSupport(\n patientId: string,\n healthcarePartyId: string,\n language: string,\n recipientSafe: string,\n version: number,\n body: models.MedicationSchemeExportInfo,\n sessionId?: string,\n patchers: Patcher[] = []\n ): Promise {\n return this.usesNewKraken\n .then((isNewKraken) => {\n return isNewKraken ? this.authenticationProvider.getAuthService().getAuthHeaders() : null\n })\n .then((authHeaders) => {\n return (!sessionId && !authHeaders ? this.authApi.token('GET', '/ws/be_kmehr/generateMedicationScheme') : Promise.resolve('')).then(\n (token) =>\n new Promise((resolve, reject) => {\n const socket = new WebSocket(\n token.length\n ? `${this.wssHost}/be_kmehr/generateMedicationScheme;tokenid=${token}`\n : `${this.wssHost}/be_kmehr/generateMedicationScheme;sessionid=${sessionId ?? ''}`,\n !!authHeaders && authHeaders.length > 0 ? [authHeaders[0].data.replace(' ', '')] : []\n )\n socket.addEventListener('open', function () {\n socket.send(\n JSON.stringify({\n parameters: {\n patientId: patientId,\n language: language,\n recipientSafe: recipientSafe,\n version: version,\n info: body,\n },\n })\n )\n })\n // Listen for messages\n socket.addEventListener('message', this.socketEventListener(socket, healthcarePartyId, resolve, reject, patchers))\n })\n )\n })\n }\n}\n","import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { CalendarItem, User } from '../icc-api/model/models'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccCalendarItemApi } from '../icc-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccCalendarItemXApi extends IccCalendarItemApi implements EncryptedEntityXApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n encryptedKeys = ['details', 'title', 'patientId']\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n encryptedKeys: Array = ['details', 'title', 'patientId'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedKeys = encryptedKeys\n }\n\n newInstance(user: User, ci: CalendarItem, options: { additionalDelegates?: { [dataOwnerId: string]: 'WRITE' } } = {}) {\n return this.newInstancePatient(user, null, ci, options)\n }\n\n /**\n * Creates a new instance of calendar item with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this calendar item refers to.\n * @param ci initialised data for the calendar item. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the access log. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of calendar item.\n */\n async newInstancePatient(\n user: models.User,\n patient: models.Patient | null,\n ci: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ): Promise {\n if (!patient && options.preferredSfk) throw new Error('You need to specify parent patient in order to use secret foreign keys.')\n const calendarItem = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.CalendarItem',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n ci || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = patient ? options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient)) : undefined\n if (patient && !sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new CalendarItem(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(calendarItem, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n const extractedKeys = await this.crypto.entities.secretIdsOf(patient, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? usingPost\n ? await this.findByHCPartyPatientSecretFKeysArray(topmostParentId, _.uniq(extractedKeys))\n : await this.findByHCPartyPatientSecretFKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n\n async findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise> {\n const calendarItems = await super.findCalendarItemsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys)\n return await this.decrypt(hcPartyId, calendarItems)\n }\n\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super\n .findCalendarItemsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys)\n .then((calendarItems) => this.decrypt(hcPartyId, calendarItems))\n }\n\n createCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n async createCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((items) => super.createCalendarItem(items[0]))\n .then((ci) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ci]))\n .then((cis) => cis[0])\n : null\n }\n\n getCalendarItemWithUser(user: models.User, calendarItemId: string): Promise {\n return super\n .getCalendarItem(calendarItemId)\n .then((calendarItem) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [calendarItem]))\n .then((cis) => cis[0])\n }\n\n getCalendarItem(calendarItemId: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithUser(user: models.User): Promise | any> {\n return super.getCalendarItems().then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItems(): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsWithIdsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getCalendarItemsWithIds(body).then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItemsWithIds(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarItemsByPeriodAndHcPartyIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n hcPartyId: string\n ): Promise | any> {\n return super\n .getCalendarItemsByPeriodAndHcPartyId(startDate, endDate, hcPartyId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarItemsByPeriodAndHcPartyId(startDate?: number, endDate?: number, hcPartyId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n getCalendarsByPeriodAndAgendaIdWithUser(\n user: models.User,\n startDate: number,\n endDate: number,\n agendaId: string\n ): Promise | any> {\n return super\n .getCalendarsByPeriodAndAgendaId(startDate, endDate, agendaId)\n .then((calendarItems) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems))\n }\n\n getCalendarsByPeriodAndAgendaId(startDate?: number, endDate?: number, agendaId?: string): never {\n throw new Error('Cannot call a method that must en/decrypt a calendar item without providing a user for de/encryption')\n }\n\n modifyCalendarItem(body?: CalendarItem): never {\n throw new Error('Cannot call a method that must encrypt a calendar item without providing a user for de/encryption')\n }\n\n /**\n * Remove the following delegation objects from the\n * CalendarItem instance: cryptedForeignKeys, secretForeignKeys.\n *\n * The delegations & encryptionKeys objects are not removed because\n * in the case the CalendarItem is saved in the DB & then encrypted,\n * if later we remove the patient from it, it'd reset the delegations\n * and encryptionKeys thus impossibilitating further access.\n *\n * @param calendarItem The Calendar Item object\n */\n resetCalendarDelegationObjects(calendarItem: models.CalendarItem): models.CalendarItem {\n const { cryptedForeignKeys, secretForeignKeys, ...resetCalendarItem } = calendarItem\n return resetCalendarItem\n }\n\n async modifyCalendarItemWithHcParty(user: models.User, body?: models.CalendarItem): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, _.cloneDeep(body)) : null\n }\n\n private modifyAs(dataOwner: string, body: models.CalendarItem): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((als) => super.modifyCalendarItem(als[0]))\n .then((body) => this.decrypt(dataOwner, [body]))\n .then((als) => als[0])\n }\n\n encrypt(user: models.User, calendarItems: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, calendarItems)\n }\n\n private encryptAs(dataOwnerId: string, calendarItems: Array): Promise> {\n return Promise.all(\n calendarItems.map((x) =>\n this.crypto.entities.tryEncryptEntity(x, dataOwnerId, this.encryptedKeys, false, true, (json) => new CalendarItem(json))\n )\n )\n }\n\n decrypt(hcpId: string, calendarItems: Array): Promise> {\n return Promise.all(\n calendarItems.map((x) => this.crypto.entities.decryptEntity(x, hcpId, (json) => new CalendarItem(json)).then(({ entity }) => entity))\n )\n }\n\n /**\n * @param calendarItem a calendar item\n * @return the id of the patient that the calendar item refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(calendarItem: models.CalendarItem): Promise {\n return this.crypto.entities.owningEntityIdsOf(calendarItem, undefined)\n }\n\n /**\n * Share an existing calendar item with other data owners, allowing them to access the non-encrypted data of the calendar item and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the calendar item.\n * @param calendarItem item the calendar item to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * calendar item does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this calendar item refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated entity.\n */\n async shareWith(\n delegateId: string,\n calendarItem: models.CalendarItem,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(calendarItem, { [delegateId]: options })\n }\n /**\n * Share an existing calendar item with other data owners, allowing them to access the non-encrypted data of the calendar item and optionally also\n * the encrypted content.\n * @param calendarItem item the calendar item to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * calendar item does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this calendar item refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated entity.\n */\n async shareWithMany(\n calendarItem: models.CalendarItem,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n calendarItem,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return calendarItem\n }\n\n async getDataOwnersWithAccessTo(\n entity: CalendarItem\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: CalendarItem): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n\n /**\n * Links a calendar item with a patient. Note that this operation is not reversible: it is not possible to change the patient linked to a calendar\n * item.\n * @param calendarItem a calendar item\n * @param patient the patient which will be linked to the calendar item\n * @param shareLinkWithDelegates data owners other than the current data owner which will also be able to decrypt the id of the newly linked patient\n * @return the updated calendar item\n */\n async linkToPatient(calendarItem: models.CalendarItem, patient: models.Patient, shareLinkWithDelegates: string[]): Promise {\n if (!!calendarItem.secretForeignKeys?.length) throw new Error(`Calendar item ${calendarItem.id} is already linked to a patient`)\n const delegates = [...new Set([await this.dataOwnerApi.getCurrentDataOwnerId(), ...shareLinkWithDelegates])]\n const sfk = await this.crypto.confidential.getAnySecretIdSharedWithParents(patient)\n if (!sfk) {\n throw new Error(`Could not find any secret id for patient ${patient.id} which is shared with the topmost ancestor of the current data owner`)\n }\n let updated = {\n ...calendarItem,\n secretForeignKeys: [sfk],\n }\n for (const delegate of delegates) {\n updated = (await this.crypto.entities.entityWithExtendedEncryptedMetadata(updated, delegate, [], [], [patient.id!])) ?? updated\n }\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const saved = await this.modifyAs(self, updated)\n return (await this.decrypt(self, [saved]))[0]\n }\n}\n","import { IccClassificationApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccClassificationXApi extends IccClassificationApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of classification with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this classification refers to.\n * @param c initialised data for the classification. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of classification.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ): Promise {\n const classification = _.assign(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Classification',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n healthElementId: this.crypto.primitives.randomUuid(),\n openingDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n c || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Classification(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(classification, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n async findBy(hcpartyId: string, patient: models.Patient) {\n const extractedKeys = await this.crypto.entities.secretIdsOf(patient, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n return extractedKeys && extractedKeys.length > 0\n ? this.findClassificationsByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n : Promise.resolve([])\n }\n /**\n * @param classification a classification\n * @return the id of the patient that the classification refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(classification: models.Classification): Promise {\n return this.crypto.entities.owningEntityIdsOf(classification, undefined)\n }\n\n /**\n * Share an existing classification with other data owners, allowing them to access the non-encrypted data of the classification and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the classification.\n * @param classification the classification to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * classification does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this classification refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated classification.\n */\n async shareWith(\n delegateId: string,\n classification: models.Classification,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(classification, { [delegateId]: options })\n }\n /**\n * Share an existing classification with other data owners, allowing them to access the non-encrypted data of the classification and optionally also\n * the encrypted content.\n * @param classification the classification to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * classification does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this classification refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated classification.\n */\n async shareWithMany(\n classification: models.Classification,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n classification,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyClassification(extended)\n } else return classification\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.Classification\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return Promise.resolve({ hasUnknownAnonymousDataOwners: false, permissionsByDataOwnerId: {} })\n }\n\n async getEncryptionKeysOf(entity: models.Classification): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccCodeApi } from '../icc-api'\n\nimport codeLanguages from './rsrc/codelng'\nimport icd10 from './rsrc/icd10'\nimport icpc2 from './rsrc/icpc2'\n\nimport * as _ from 'lodash'\nimport { Code } from '../icc-api/model/Code'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccCodeXApi extends IccCodeApi {\n icd10: any = icd10\n icpc2: any = icpc2\n codeLanguages: any = codeLanguages\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n // noinspection JSUnusedGlobalSymbols\n icdChapters(listOfCodes: Array) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(\n listOfCodes.map((code) => [\n code,\n _.toPairs(this.icd10).find(([k]) => {\n const parts = k.split(/-/)\n return code.substr(0, 3) >= parts[0] && code.substr(0, 3) <= parts[1]\n }),\n ])\n ),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0].substr(0, 2)\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n icpcChapters(listOfCodes: Array) {\n return Promise.resolve(\n _.sortBy(\n _.values(\n _.reduce(\n _.fromPairs(listOfCodes.map((code) => [code, _.toPairs(this.icpc2).find(([k]) => k === code.substr(0, 1).toUpperCase())])),\n (acc: any, pairOfRangeAndIcdInfo, code) => {\n if (!pairOfRangeAndIcdInfo) {\n return acc\n }\n const shortKey = pairOfRangeAndIcdInfo[0]\n ;(\n acc[shortKey] ||\n (acc[shortKey] = {\n code: shortKey,\n descr: pairOfRangeAndIcdInfo[1],\n subCodes: [],\n })\n ).subCodes.push(code)\n return acc\n },\n {}\n )\n ),\n (c: any) => c.shortKey\n )\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n languageForType(type: string, lng: string) {\n const availableLanguages = this.codeLanguages[type]\n return availableLanguages && availableLanguages.indexOf(lng) >= 0 ? lng : 'fr'\n }\n\n // noinspection JSMethodCanBeStatic, JSUnusedGlobalSymbols\n normalize(c: Code | string) {\n return typeof c === 'string'\n ? {\n id: c,\n type: c.split(/\\|/)[0],\n code: c.split(/\\|/)[1],\n version: c.split(/\\|/)[2],\n }\n : (c as Code).type && (c as Code).code && !(c as Code).id\n ? {\n id: (c as Code).type + '|' + (c as Code).code + '|' + ((c as Code).version || '1'),\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n : (c as Code).id && (!(c as Code).code || !(c as Code).type || !(c as Code).version)\n ? {\n id: (c as Code).id,\n type: (c as Code).id!.split(/\\|/)[0],\n code: (c as Code).id!.split(/\\|/)[1],\n version: (c as Code).id!.split(/\\|/)[2],\n }\n : {\n id: (c as Code).id!,\n type: (c as Code).type,\n code: (c as Code).code,\n version: (c as Code).version || '1',\n }\n }\n}\n","import { IccContactApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport i18n from './rsrc/contact.i18n'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { Contact, FilterChainService, ListOfIds, Service } from '../icc-api/model/models'\nimport { PaginatedListContact } from '../icc-api/model/PaginatedListContact'\nimport { a2b, b2a, string2ua, ua2string, utf8_2ua } from './utils/binary-utils'\nimport { ServiceByIdsFilter } from './filters/ServiceByIdsFilter'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { before } from './utils'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccContactXApi extends IccContactApi implements EncryptedEntityXApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of contact with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this contact refers to.\n * @param c initialised data for the contact. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify other\n * kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * - confidential: if true, the entity will be created as confidential. Confidential entities are not shared with auto-delegations, and the default\n * foreign key used is any key that is not shared with any of the data owner parents. By default entities are created as non-confidential.\n * @return a new instance of contact.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n confidential?: boolean\n } = {}\n ): Promise {\n const contact = new models.Contact(\n _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Contact',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n groupId: this.crypto.primitives.randomUuid(),\n subContacts: [],\n services: [],\n openingDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n c || {}\n )\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (!!options.confidential\n ? await this.crypto.confidential.getConfidentialSecretId(patient)\n : await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id} for confidential=${!!options.confidential}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(options.confidential ? [] : [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])]),\n ]\n const initialisationInfo = await this.crypto.entities.entityWithInitialisedEncryptedMetadata(contact, patient.id, sfk, true, extraDelegations)\n return new models.Contact(initialisationInfo.updatedEntity)\n }\n\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all contacts with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the contacts of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param usingPost\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n return await this.crypto.entities.secretIdsForHcpHierarchyOf(patient).then((keysHierarchy) =>\n keysHierarchy && keysHierarchy.length > 0\n ? Promise.all(\n keysHierarchy\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId, _.uniq(extractedKeys).join(','))\n )\n ).then((results) => _.uniqBy(_.flatMap(results), (x) => x.id))\n : Promise.resolve([])\n )\n }\n\n async findByPatientSFKs(hcpartyId: string, patients: Array): Promise> {\n const perHcpId: { [key: string]: string[] } = {}\n for (const patient of patients) {\n ;(await this.crypto.entities.secretIdsForHcpHierarchyOf(patient))\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .forEach(({ hcpartyId, extractedKeys }) => {\n ;(perHcpId[hcpartyId] || (perHcpId[hcpartyId] = [])).push(...extractedKeys)\n })\n }\n\n return _.uniqBy(\n _.flatMap(\n await Promise.all(\n Object.keys(perHcpId).map((hcpId) =>\n this.findContactsByHCPartyPatientForeignKeys(\n hcpartyId,\n new models.ListOfIds({\n ids: perHcpId[hcpId],\n })\n )\n )\n )\n ),\n (x) => x.id\n )\n }\n\n filterBy(startKey?: string, startDocumentId?: string, limit?: number, body?: models.FilterChainContact): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listContactsByOpeningDate(startKey: number, endKey: number, hcpartyid: string, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listServices(body?: ListOfIds): Promise> {\n throw new Error('Cannot call a method that returns services without providing a user for de/encryption')\n }\n\n findByHCPartyFormId(hcPartyId?: string, formId?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByHCPartyFormIds(hcPartyId?: string, body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getContact(contactId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getContacts(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n modifyContact(body?: Contact): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n modifyContacts(body?: Array): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n createContact(body?: Contact): never {\n throw new Error('Cannot call a method that modify contacts without providing a user for de/encryption')\n }\n\n findByHCPartyPatientSecretFKeys(\n hcPartyId: string,\n secretFKeys: string,\n planOfActionIds?: string,\n skipClosedContacts?: boolean\n ): Promise> {\n return super\n .findByHCPartyPatientSecretFKeys(hcPartyId, secretFKeys, planOfActionIds, skipClosedContacts)\n .then((contacts) => this.decrypt(hcPartyId, contacts))\n }\n\n findByHCPartyPatientSecretFKeysArray(\n hcPartyId: string,\n secretFKeys: string[],\n planOfActionIds?: string,\n skipClosedContacts?: boolean\n ): Promise | any> {\n return super\n .findByHCPartyPatientSecretFKeysUsingPost(hcPartyId, planOfActionIds, skipClosedContacts, secretFKeys)\n .then((contacts) => this.decrypt(hcPartyId, contacts))\n }\n\n filterByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: models.FilterChainContact\n ): Promise {\n return super\n .filterContactsBy(startDocumentId, limit, body)\n .then((ctcs) =>\n this.decrypt(user.healthcarePartyId! || user.patientId!, ctcs.rows!).then((decryptedRows) => Object.assign(ctcs, { rows: decryptedRows }))\n )\n }\n\n listContactsByOpeningDateWithUser(\n user: models.User,\n startKey: number,\n endKey: number,\n hcpartyid: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listContactsByOpeningDate(startKey, endKey, hcpartyid, startDocumentId, limit)\n .then((ctcs) =>\n this.decrypt(user.healthcarePartyId! || user.patientId!, ctcs.rows!).then((decryptedRows) => Object.assign(ctcs, { rows: decryptedRows }))\n )\n }\n\n getServiceWithUser(user: models.User, serviceId: string): Promise {\n return super\n .getService(serviceId)\n .then((service) => this.decryptServices(user.healthcarePartyId ?? user.patientId ?? user.deviceId!, [service]))\n .then((decrypted) => decrypted[0])\n }\n\n listServicesWithUser(user: models.User, serviceIds: ListOfIds): Promise | any> {\n return super\n .filterServicesBy(undefined, serviceIds.ids?.length, new FilterChainService({ filter: new ServiceByIdsFilter({ ids: serviceIds.ids }) }))\n .then((paginatedList) => this.decryptServices(user.healthcarePartyId ?? user.patientId ?? user.deviceId!, paginatedList.rows ?? []))\n }\n\n findByHCPartyFormIdWithUser(user: models.User, hcPartyId: string, formId: string): Promise | any> {\n return super.findByHCPartyFormId(hcPartyId, formId).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n findByHCPartyFormIdsWithUser(user: models.User, hcPartyId: string, body: models.ListOfIds): Promise | any> {\n return super.findByHCPartyFormIds(hcPartyId, body).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n getContactWithUser(user: models.User, contactId: string): Promise {\n return super\n .getContact(contactId)\n .then((ctc) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ctc]))\n .then((ctcs) => ctcs[0])\n }\n\n getContactsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getContacts(body).then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n }\n\n async modifyContactWithUser(user: models.User, body?: models.Contact): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, body) : null\n }\n\n private modifyAs(dataOwner: string, contact: models.Contact): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(contact)])\n .then((ctcs) => super.modifyContact(ctcs[0]))\n .then((ctc) => this.decrypt(dataOwner, [ctc]))\n .then((ctcs) => ctcs[0])\n }\n\n async modifyContactsWithUser(user: models.User, bodies?: Array): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((ctcs) => super.modifyContacts(ctcs))\n .then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n : null\n }\n\n async createContactWithUser(user: models.User, body?: models.Contact): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((ctcs) => super.createContact(ctcs[0]))\n .then((ctc) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, [ctc]))\n .then((ctcs) => ctcs[0])\n : null\n }\n\n async createContactsWithUser(user: models.User, bodies?: Array): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((ctcs) => super.createContacts(ctcs))\n .then((ctcs) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs))\n : null\n }\n\n encryptServices(key: CryptoKey, rawKey: string, services: Service[]): PromiseLike {\n return Promise.all(\n services.map(async (svc) => {\n if (!svc.content) {\n return svc\n }\n\n if (\n Object.values(svc.content).every(\n (c) =>\n c.compoundValue &&\n !c.stringValue &&\n !c.documentId &&\n !c.measureValue &&\n !c.medicationValue &&\n (c.booleanValue === null || c.booleanValue === undefined) &&\n (c.numberValue === null || c.numberValue === undefined) &&\n !c.instantValue &&\n !c.fuzzyDateValue &&\n !c.binaryValue\n )\n ) {\n svc.content = _.fromPairs(\n await Promise.all(\n _.toPairs(svc.content).map(async (p) => {\n if (p[1].compoundValue?.length) {\n p[1].compoundValue = await this.encryptServices(key, rawKey, p[1].compoundValue!)\n }\n return p\n })\n )\n )\n } else {\n svc.encryptedSelf = b2a(\n ua2string(await this.crypto.primitives.AES.encrypt(key, utf8_2ua(JSON.stringify({ content: svc.content })), rawKey))\n )\n delete svc.content\n }\n return svc\n })\n )\n }\n\n encrypt(user: models.User, ctcs: Array) {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user)!, ctcs)\n }\n\n private encryptAs(hcpartyId: string, ctcs: Array) {\n const bypassEncryption = false //Used for debug\n\n return Promise.all(\n ctcs.map(async (ctc) => {\n const initialisedCtc = bypassEncryption //Prevent encryption for test ctc\n ? ctc\n : (await this.crypto.entities.ensureEncryptionKeysInitialised(ctc)) ?? ctc\n\n const encryptionKey = await this.crypto.entities.importFirstValidKey(await this.crypto.entities.encryptionKeysOf(ctc, hcpartyId), ctc.id!)\n\n initialisedCtc.services = await this.encryptServices(encryptionKey.key, encryptionKey.raw, ctc.services || [])\n initialisedCtc.encryptedSelf = b2a(\n ua2string(await this.crypto.primitives.AES.encrypt(encryptionKey.key, utf8_2ua(JSON.stringify({ descr: ctc.descr })), encryptionKey.raw))\n )\n delete initialisedCtc.descr\n\n return initialisedCtc\n })\n )\n }\n\n decrypt(hcpartyId: string, ctcs: Array): Promise> {\n return Promise.all(\n ctcs.map(async (ctc) => {\n const keys = await this.crypto.entities.importAllValidKeys(await this.crypto.entities.encryptionKeysOf(ctc, hcpartyId))\n if (!keys || !keys.length) {\n console.log('Cannot decrypt contact', ctc.id)\n return ctc\n }\n ctc.services = await this.decryptServices(hcpartyId, ctc.services || [], keys)\n if (ctc.encryptedSelf) {\n try {\n const json = await this.crypto.entities.tryDecryptJson(keys, string2ua(a2b(ctc.encryptedSelf!)), false)\n if (json) {\n _.assign(ctc, json)\n } else {\n console.log('Cannot decrypt ctc: no valid key could produce valid json', ctc.id)\n }\n } catch (e) {\n console.log('Failed to decrypt ctc', ctc.id, e)\n }\n }\n return ctc\n })\n )\n }\n\n decryptServices(hcpartyId: string, svcs: Array, keys?: { key: CryptoKey; raw: string }[]): Promise> {\n return Promise.all(\n svcs.map(async (svc) => {\n if (!keys) {\n keys = await this.crypto.entities.importAllValidKeys(await this.crypto.entities.encryptionKeysOf(svc, hcpartyId))\n }\n\n if (svc.encryptedContent) {\n try {\n const json = await this.crypto.entities.tryDecryptJson(keys, string2ua(a2b(svc.encryptedContent!)), true)\n if (json) {\n Object.assign(svc, { content: json })\n } else {\n console.log('Cannot decrypt service: no valid key could produce valid json', svc.id)\n }\n } catch (e) {\n console.log('Cannot decrypt service', svc.id, e)\n }\n } else if (svc.encryptedSelf) {\n try {\n const json = await this.crypto.entities.tryDecryptJson(keys, string2ua(a2b(svc.encryptedSelf!)), true)\n if (json) {\n Object.assign(svc, json)\n } else {\n console.log('Cannot decrypt service: no valid key could produce valid json', svc.id)\n }\n } catch (e) {\n console.log('Cannot decrypt service', svc.id, e)\n }\n } else {\n svc.content = _.fromPairs(\n await Promise.all(\n _.toPairs(svc.content).map(async (p) => {\n if (p[1].compoundValue) {\n p[1].compoundValue = await this.decryptServices(hcpartyId, p[1].compoundValue, keys)\n }\n return p\n })\n )\n )\n }\n return svc\n })\n )\n }\n\n contactOfService(ctcs: Array, svcId: string): models.Contact | undefined {\n let latestContact: models.Contact | undefined = undefined\n let latestService: models.Service\n ctcs.forEach((c) => {\n const s: models.Service | undefined = c.services!.find((it) => svcId === it.id)\n if (s && (!latestService || moment(s.valueDate).isAfter(moment(latestService.valueDate)))) {\n latestContact = c\n latestService = s\n }\n })\n return latestContact\n }\n\n filteredServices(ctcs: Array, filter: any): Array {\n const byIds: { [key: string]: models.Service } = {}\n ctcs.forEach((c) =>\n (c.services || [])\n .filter((s) => filter(s, c))\n .forEach((s) => {\n const ps = byIds[s.id!]\n if (!ps || !ps.modified || (s.modified && ps.modified < s.modified)) {\n byIds[s.id!] = s\n s.contactId = c.id\n }\n })\n )\n return _.values(byIds).filter((s: any) => !s.deleted && !s.endOfLife)\n }\n\n //Return a promise\n filterServices(ctcs: Array, filter: any): Promise> {\n return Promise.resolve(this.filteredServices(ctcs, filter))\n }\n\n services(ctc: models.Contact, label: string) {\n return ctc.services!.filter((s) => s.label === label)\n }\n\n preferredContent(svc: models.Service, lng: string) {\n return (\n svc && svc.content && (svc.content[lng] || svc.content['fr'] || (Object.keys(svc.content)[0] ? svc.content[Object.keys(svc.content)[0]] : null))\n )\n }\n\n contentValue(c: models.Content) {\n return (\n c.stringValue ||\n ((c.numberValue || c.numberValue === 0) && c.numberValue) ||\n (c.measureValue && (c.measureValue.value || c.measureValue.value === 0) ? c.measureValue : null) ||\n c.medicationValue ||\n c.booleanValue\n )\n }\n\n shortServiceDescription(svc: models.Service, lng: string) {\n const c = this.preferredContent(svc, lng)\n return !c ? '' : this.shortContentDescription(c, lng, svc.label)\n }\n\n shortContentDescription(c: models.Content, lng: string, label?: string) {\n return (\n c.stringValue ||\n ((c.numberValue || c.numberValue === 0) && c.numberValue) ||\n (c.measureValue &&\n '' +\n (c.measureValue.value || c.measureValue.value === 0 ? c.measureValue.value : '-') +\n (c.measureValue.unit ? ' ' + c.measureValue.unit : '')) ||\n (c.medicationValue ? this.medication().medicationToString(c.medicationValue, lng) : null) ||\n (c.booleanValue && label) ||\n 'OK'\n )\n }\n\n medicationValue(svc: models.Service, lng: string) {\n const c =\n svc && svc.content && (svc.content[lng] || svc.content['fr'] || (Object.keys(svc.content)[0] ? svc.content[Object.keys(svc.content)[0]] : null))\n return c && c.medicationValue\n }\n\n contentHasData(c: any): boolean {\n return c.stringValue || c.numberValue || c.measureValue || c.booleanValue || c.booleanValue === false || c.medicationValue || c.documentId\n }\n\n localize(e: any, lng: string) {\n if (!e) {\n return null\n }\n return e[lng] || e.fr || e.en || e.nl\n }\n\n /**\n * Modifies the subcontacts this svc belongs to while minimizing the number of references to the svcs inside the subcontacts\n * After the invocation, there is at least one subcontact with provided poaId and heId that contains the svc\n * The svc is not removed from a previous subcontact it would belong to except if the new conditions are compatible\n * Note that undefined and null do not have the same meaning for formId\n * If formId is null: the subcontact which refers svc must have a null formId\n * If formId is undefined, the subcontact can have any value for formId\n *\n * When a svc does not exist yet in the current contact but exists in a previous contact, all the scs it was belonging to are\n * copied in the current contact\n *\n * the svc returned is the one that's inside the ctc\n *\n * @param ctc\n * @param user\n * @param ctcs\n * @param svc\n * @param formId\n * @param poaId aMap {heId2: [poaId11, poaId12], heId2: [poaId21] }\n * @param heId an Array of heIds, equivalent to poaIds = {heId: [], ...}\n * @param init\n * @returns {*}\n */\n\n promoteServiceInContact(\n ctc: models.Contact,\n user: models.User,\n ctcs: Array,\n svc: models.Service,\n formId: string,\n poaIds?: { [key: string]: string[] },\n heIds?: Array,\n init?: any\n ) {\n if (!ctc) {\n return null\n }\n const existing = ctc.services!.find((s) => s.id === svc.id)\n const promoted = _.extend(_.extend(existing || {}, svc), {\n author: user.id,\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n modified: new Date().getTime(),\n })\n if (!existing) {\n ;(ctc.services || (ctc.services = [])).push(promoted)\n }\n const allSubcontactsInCurrentContactContainingService = (ctc.subContacts || []).filter((csc) =>\n (csc.services || []).some((s) => s.serviceId === svc.id)\n )\n\n //Rearrange poaIds and heIds as a hierarchy\n const hierarchyOfHeAndPoaIds: { [key: string]: Array } = {}\n ;(heIds || []).forEach((id) => (hierarchyOfHeAndPoaIds[id || '_'] = []))\n Object.keys(poaIds || {}).forEach((k: string) => {\n const poas = hierarchyOfHeAndPoaIds[k]\n if (poas) {\n hierarchyOfHeAndPoaIds[k] = _.concat(poas, (poaIds || {})[k])\n } else {\n hierarchyOfHeAndPoaIds[k] = (poaIds || {})[k]\n }\n })\n\n const pastCtc =\n (svc.contactId && svc.contactId !== ctc.id && ctcs.find((c) => c.id === svc.contactId)) ||\n ctcs.reduce(\n (selected: { s: models.Service | null; c: models.Contact | null }, c: models.Contact) => {\n const candidate = (c.services || []).find((s) => s.id === svc.id)\n return ctc.id !== c.id && candidate && (selected.s === null || before(selected.s.modified || 0, candidate.modified || 0))\n ? { s: candidate, c: c }\n : selected\n },\n { s: null, c: null }\n ).c\n //Make sure that all scs the svc was belonging to are copied inside the current contact\n pastCtc &&\n pastCtc\n .subContacts!.filter((psc) => psc.services!.some((s) => s.serviceId === svc.id))\n .forEach((psc) => {\n const sameInCurrent = allSubcontactsInCurrentContactContainingService.find(\n (csc) => csc.formId === psc.formId && csc.planOfActionId === psc.planOfActionId && csc.healthElementId === psc.healthElementId\n )\n if (sameInCurrent) {\n if (!sameInCurrent.services!.some((s) => s.serviceId === svc.id)) {\n sameInCurrent.services!.push({ serviceId: svc.id })\n }\n } else {\n const newSubContact = _.assign(_.assign({}, psc), {\n services: [{ serviceId: svc.id }],\n })\n ctc.subContacts!.push(newSubContact)\n allSubcontactsInCurrentContactContainingService.push(newSubContact)\n }\n })\n\n if (!Object.keys(hierarchyOfHeAndPoaIds).length) {\n hierarchyOfHeAndPoaIds._ = [] //Default is to have at least one option with heId equals to null (represented by _)\n }\n\n Object.keys(hierarchyOfHeAndPoaIds).forEach((heId: string | null) => {\n if (heId === '_') {\n heId = null\n }\n const subPoaIds = heId ? hierarchyOfHeAndPoaIds[heId] : []\n ;((subPoaIds || []).length ? subPoaIds : [null]).forEach((poaId) => {\n //Create or assign subcontacts for all pairs he/poa (can be null/null)\n let destinationSubcontact = ctc.subContacts!.find(\n (sc) =>\n (!formId || sc.formId === formId) &&\n ((!poaId && !sc.planOfActionId) || sc.planOfActionId === poaId) &&\n ((!heId && !sc.healthElementId) || sc.healthElementId === heId)\n )\n if (!destinationSubcontact) {\n ctc.subContacts!.push(\n (destinationSubcontact = new models.SubContact({\n formId: formId || undefined,\n planOfActionId: poaId,\n healthElementId: heId,\n services: [],\n }))\n )\n }\n\n const redundantSubcontact =\n allSubcontactsInCurrentContactContainingService.find((aSc) => destinationSubcontact === aSc) ||\n allSubcontactsInCurrentContactContainingService.find(\n (aSc) =>\n (!aSc.planOfActionId || aSc.planOfActionId === destinationSubcontact!.planOfActionId) &&\n (!aSc.healthElementId || aSc.healthElementId === destinationSubcontact!.healthElementId) &&\n (!aSc.formId || aSc.formId === destinationSubcontact!.formId)\n ) // Find a compatible sc: one that does not contain extra and ≠ information than the destination\n\n if (redundantSubcontact && redundantSubcontact !== destinationSubcontact) {\n redundantSubcontact.services!.splice(\n redundantSubcontact.services!.findIndex((link) => link.serviceId === svc.id),\n 1\n )\n }\n if (!destinationSubcontact.services!.some((s) => s.serviceId === svc.id)) {\n destinationSubcontact.services!.push({ serviceId: svc.id! })\n }\n })\n })\n\n return (init && init(promoted)) || promoted\n }\n\n isNumeric(svc: models.Service, lng: string) {\n const c = this.preferredContent(svc, lng)\n return c && (c.measureValue || c.numberValue || c.numberValue == 0)\n }\n\n service() {\n return {\n newInstance: (user: models.User, s: any) =>\n _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.embed.Service',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n content: {},\n valueDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n s\n ),\n }\n }\n\n medication() {\n const regimenScores: any = {\n afterwakingup: 63000,\n beforebreakfast: 70000,\n duringbreakfast: 80000,\n afterbreakfast: 90000,\n morning: 100000,\n betweenbreakfastandlunch: 103000,\n beforelunch: 113000,\n midday: 120000,\n duringlunch: 123000,\n afterlunch: 130000,\n afternoon: 140000,\n betweenlunchanddinner: 160000,\n beforedinner: 180000,\n duringdinner: 190000,\n afterdinner: 200000,\n evening: 210000,\n betweendinnerandsleep: 213000,\n thehourofsleep: 220000,\n night: 230000,\n beforemeals: -30000,\n betweenmeals: -20000,\n aftermeals: -10000,\n }\n\n const myself = {\n regimenScores: function () {\n return regimenScores\n },\n medicationNameToString: function (m: any): string {\n return m && m.compoundPrescription\n ? m.compoundPrescription\n : m && m.substanceProduct\n ? myself.productToString(m && m.substanceProduct)\n : myself.productToString(m && m.medicinalProduct)\n },\n reimbursementReasonToString: (m: any, lang: string) => {\n return m && m.reimbursementReason && m.reimbursementReason.label && m.reimbursementReason.label.hasOwnProperty(lang)\n ? m.reimbursementReason.label[lang]\n : ''\n },\n medicationToString: (m: any, lang: string) => {\n let res = `${myself.medicationNameToString(m)}, ${myself.posologyToString(m, lang)}`\n const reason = myself.reimbursementReasonToString(m, lang)\n res = m.numberOfPackages\n ? `${m.numberOfPackages} ${m.numberOfPackages > 1 ? this.i18n[lang].packagesOf : this.i18n[lang].packageOf} ${res}`\n : res\n res = m.duration ? `${res} ${this.i18n[lang].during} ${myself.durationToString(m.duration, lang)}` : res\n res = reason ? `${res} (${reason})` : res\n return res\n },\n productToString: (m: any): string => {\n if (!m) {\n return ''\n }\n return m.intendedname\n },\n posologyToString: (m: any, lang: string) => {\n if (m) {\n if (m.instructionForPatient && m.instructionForPatient.length) {\n return m.instructionForPatient\n }\n if (!m.regimen || !m.regimen.length) {\n return ''\n }\n\n const unit =\n m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.administrationUnit\n ? m.regimen[0].administratedQuantity.administrationUnit.code\n : m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.unit\n let quantity = m.regimen[0].administratedQuantity && m.regimen[0].administratedQuantity.quantity\n\n m.regimen.slice(1).find((ri: any) => {\n const oUnit =\n ri.administratedQuantity && ri.administratedQuantity.administrationUnit\n ? ri.administratedQuantity.administrationUnit.code\n : ri.administratedQuantity && ri.administratedQuantity.unit\n const oQuantity = ri.administratedQuantity && ri.administratedQuantity.quantity\n\n if (oQuantity !== quantity) {\n quantity = -1\n }\n return oUnit !== unit && oQuantity !== quantity\n })\n\n const cplxRegimen = !unit || quantity < 0\n const quantityUnit = cplxRegimen ? `1 ${this.i18n[lang].take_s_}` : `${quantity} ${unit || this.i18n[lang].take_s_}`\n\n const dayPeriod = m.regimen.find((r: any) => r.weekday !== null && r.weekday !== undefined)\n ? this.i18n[lang].weekly\n : m.regimen.find((r: any) => r.date)\n ? this.i18n[lang].monthly\n : this.i18n[lang].daily\n\n return `${quantityUnit}, ${m.regimen.length} x ${dayPeriod}, ${_.sortBy(\n m.regimen,\n (r) =>\n (r.date ? r.date * 1000000 : 29990000000000) +\n (r.dayNumber || 0) * 1000000 +\n ((r.weekday && r.weekday.weekNumber) || 0) * 7 * 1000000 +\n (r.timeOfDay ? r.timeOfDay : r.dayPeriod && r.dayPeriod.code ? (regimenScores[r.dayPeriod.code] as number) : 0)\n )\n .map((r) => (cplxRegimen ? myself.regimenToExtString(r, lang) : myself.regimenToString(r, lang)))\n .join(', ')}`\n }\n },\n frequencyToString: (m: any, lang: string) => {\n if (m.instructionForPatient && m.instructionForPatient.length) {\n return m.instructionForPatient\n }\n if (!m.regimen || !m.regimen.length) {\n return ''\n }\n\n const dayPeriod = m.regimen.find((r: any) => r.weekday !== null && r.weekday !== undefined)\n ? this.i18n[lang].weekly\n : m.regimen.find((r: any) => r.date)\n ? this.i18n[lang].monthly\n : this.i18n[lang].daily\n\n return `${m.regimen.length} x ${dayPeriod}`\n },\n durationToString: (d: models.Duration, lang: string) => {\n return d.value ? `${d.value} ${this.localize(d.unit!.label, lang)}` : ''\n },\n regimenToExtString: (r: models.RegimenItem, lang: string) => {\n const desc = myself.regimenToString(r, lang)\n return (\n (r.administratedQuantity && r.administratedQuantity.quantity && desc\n ? `${desc} (${r.administratedQuantity.quantity} ${\n (r.administratedQuantity.administrationUnit ? r.administratedQuantity.administrationUnit.code : r.administratedQuantity.unit) ||\n this.i18n[lang].take_s_\n })`\n : desc) || ''\n )\n },\n regimenToString: (r: models.RegimenItem, lang: string) => {\n let res = r.date\n ? `${this.i18n[lang].the} ${moment(r.date).format('DD/MM/YYYY')}`\n : r.dayNumber\n ? `${this.i18n[lang].onDay} ${r.dayNumber}`\n : r.weekday && r.weekday.weekday\n ? `${this.i18n[lang].on} ${r.weekday.weekday}`\n : null\n if (r.dayPeriod && r.dayPeriod.code && r.dayPeriod.code.length) {\n res = res\n ? `${res} ${this.i18n[lang][r.dayPeriod.code] || this.localize(r.dayPeriod.label, lang) || r.dayPeriod.code}`\n : this.i18n[lang][r.dayPeriod.code] || this.localize(r.dayPeriod.label, lang) || r.dayPeriod.code\n }\n if (r.timeOfDay) {\n const timeOfDay =\n r.timeOfDay === 120000\n ? this.i18n[lang].noon\n : `${Math.floor(r.timeOfDay / 10000)}:${('' + (Math.floor(r.timeOfDay / 100) % 100)).replace(/^(.)$/, '0$1')}`\n res = res ? res + ' ' + this.i18n[lang].at + ' ' + timeOfDay : timeOfDay\n }\n return res\n },\n localize: (s: any, lang: string) => {\n if (!s) {\n return s\n }\n return (\n this.i18n[lang][s] ||\n (this.i18n[lang][s.toLowerCase()] &&\n this.i18n[lang][s.toLowerCase()]\n .split('')\n .map((c: string, idx: number) => (idx >= s.length || s[idx].toLocaleLowerCase() === s[idx] ? c : c.toLocaleUpperCase()))\n .join('')) ||\n s\n ) //Applies the (lower/upper)case to the translated lowercase version of the input string (s)\n },\n }\n return myself\n }\n\n /**\n * @param contact a contact\n * @return the id of the patient that the contact refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(contact: models.Contact): Promise {\n return this.crypto.entities.owningEntityIdsOf(contact, undefined)\n }\n\n /**\n * Share an existing contact with other data owners, allowing them to access the non-encrypted data of the contact and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the contact.\n * @param contact the contact to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * contact does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this contact refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated contact.\n */\n async shareWith(\n delegateId: string,\n contact: models.Contact,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(contact, { [delegateId]: options })\n }\n\n /**\n * Share an existing contact with other data owners, allowing them to access the non-encrypted data of the contact and optionally also\n * the encrypted content.\n * @param contact the contact to share.\n * @param delegates share options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * contact does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this contact refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated contact.\n */\n async shareWithMany(\n contact: models.Contact,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n contact,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return contact\n }\n\n async getDataOwnersWithAccessTo(\n entity: Contact\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: Contact): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","/* eslint-disable */\nimport { AESUtils } from './crypto/AES'\nimport { KeyPair, RSAUtils } from './crypto/RSA'\nimport { ShamirClass } from './crypto/shamir'\nimport * as _ from 'lodash'\nimport { Delegation, Device, Document, EncryptedEntity, EncryptedParentEntity, HealthcareParty, Patient, User } from '../icc-api/model/models'\nimport { b2a, b64_2uas, hex2ua, string2ua, ua2hex, ua2string, ua2utf8, utf8_2ua } from './utils/binary-utils'\nimport { keyPairFromPrivateKeyJwk, pkcs8ToJwk, spkiToJwk } from './utils'\nimport { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { KeyManager } from './crypto/KeyManager'\nimport { DataOwner, IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { EntitiesEncryption } from './crypto/EntitiesEncryption'\nimport { IcureStorageFacade } from './storage/IcureStorageFacade'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { IccHcpartyApi } from '../icc-api'\nimport { StorageEntryKeysFactory } from './storage/StorageEntryKeysFactory'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\n\ninterface DelegatorAndKeys {\n delegatorId: string\n key: CryptoKey\n rawKey: string\n}\n\nexport class IccCryptoXApi {\n keychainLocalStoreIdPrefix = 'org.taktik.icure.ehealth.keychain.'\n keychainValidityDateLocalStoreIdPrefix = 'org.taktik.icure.ehealth.keychain-date.'\n hcpPreferenceKeyEhealthCert = 'eHealthCRTCrypt'\n hcpPreferenceKeyEhealthCertDate = 'eHealthCRTDate'\n rsaLocalStoreIdPrefix = 'org.taktik.icure.rsa.'\n private readonly exchangeKeysManager: ExchangeKeysManager\n private readonly cryptoPrimitives: CryptoPrimitives\n private readonly keyManager: KeyManager\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly entitiesEncrypiton: EntitiesEncryption\n private readonly confidentialEntities: ConfidentialEntities\n private readonly icureStorage: IcureStorageFacade\n private readonly shamirManager: ShamirKeysManager\n private readonly _storage: StorageFacade\n private readonly _keyStorage: KeyStorageFacade\n\n private readonly hcpartyBaseApi: IccHcpartyApi\n\n get primitives(): CryptoPrimitives {\n return this.cryptoPrimitives\n }\n\n /**\n * @internal this method is for internal use only and may be changed without notice.\n */\n get exchangeKeys(): ExchangeKeysManager {\n return this.exchangeKeysManager\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.crypto} at {@link primitives}.\n */\n get crypto(): Crypto {\n return this.cryptoPrimitives.crypto\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.shamir} at {@link primitives}.\n */\n get shamir(): ShamirClass {\n return this.cryptoPrimitives.shamir\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.RSA} at {@link primitives}.\n */\n get RSA(): RSAUtils {\n return this.cryptoPrimitives.RSA\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.AES} at {@link primitives}.\n */\n get AES(): AESUtils {\n return this.cryptoPrimitives.AES\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get keyStorage(): KeyStorageFacade {\n return this._keyStorage\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get storage(): StorageFacade {\n return this._storage\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get entities(): EntitiesEncryption {\n return this.entitiesEncrypiton\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get confidential(): ConfidentialEntities {\n return this.confidentialEntities\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get userKeysManager(): KeyManager {\n return this.keyManager\n }\n\n /**\n * @internal this is for internal use only and may be changed without notice.\n */\n get shamirKeysManager(): ShamirKeysManager {\n return this.shamirManager\n }\n\n /**\n * @internal\n */\n constructor(\n exchangeKeysManager: ExchangeKeysManager,\n cryptoPrimitives: CryptoPrimitives,\n keyManager: KeyManager,\n dataOwnerApi: IccDataOwnerXApi,\n entitiesEncrypiton: EntitiesEncryption,\n shamirManager: ShamirKeysManager,\n storage: StorageFacade,\n keyStorage: KeyStorageFacade,\n icureStorageFacade: IcureStorageFacade,\n hcPartyBaseApi: IccHcpartyApi,\n confidentialEntities: ConfidentialEntities\n ) {\n this.exchangeKeysManager = exchangeKeysManager\n this.cryptoPrimitives = cryptoPrimitives\n this.keyManager = keyManager\n this.dataOwnerApi = dataOwnerApi\n this.entitiesEncrypiton = entitiesEncrypiton\n this.shamirManager = shamirManager\n this._storage = storage\n this._keyStorage = keyStorage\n this.icureStorage = icureStorageFacade\n this.hcpartyBaseApi = hcPartyBaseApi\n this.confidentialEntities = confidentialEntities\n }\n\n /**\n * Deletes values cached by the crypto api, to allow to detect changes in stored key pairs, exchange keys and/or current data owner details.\n * This method may be useful in cases where a user is logged in from multiple devices or in cases where other users have just shared some data with\n * the current user for the first time.\n */\n async forceReload() {\n this.exchangeKeysManager.clearCache(true)\n this.dataOwnerApi.clearCurrentDataOwnerIdsCache()\n await this.keyManager.reloadKeys()\n }\n\n /**\n * Get a key pair with the provided fingerprint if present.\n * @param fingerprint a key-pair/public-key fingerprint\n * @return the pair associated to the fingerprint and a boolean indicating if the pair is verified, if present, else undefined\n */\n getKeyPairForFingerprint(fingerprint: string): { pair: KeyPair; verified: boolean } | undefined {\n return this.keyManager.getKeyPairForFingerprint(fingerprint)\n }\n\n /**\n * Get the public keys of available key pairs for the current user and his parents in hex-encoded spki representation (uses cached keys: no request\n * is done to the server).\n * Note that this will also include unverified keys.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserHierarchyAvailablePublicKeysHex(): Promise {\n return this.keyManager.getCurrentUserHierarchyAvailablePublicKeysHex()\n }\n\n /**\n * Get the public keys of available key pairs for the current user in hex-encoded spki representation (uses cached keys: no request is done to the\n * server).\n * By setting {@link verifiedOnly} to true only the public keys for verified key pairs will be returned: these will include only key pairs created\n * on this device or which have been verified using {@link CryptoStrategies} on this device.\n * @param verifiedOnly if true only the verified public keys will be returned.\n * @return the spki representation of public keys of available keypairs for the current user.\n */\n async getCurrentUserAvailablePublicKeysHex(verifiedOnly: boolean): Promise {\n return this.keyManager.getCurrentUserAvailablePublicKeysHex(verifiedOnly)\n }\n\n /**\n * @deprecated depending on your use case you should delete the calls to this method or call {@link forceReload}:\n * - Replace with `forceReload()` if one of the following parts of the current data owner may have been modified from a different api instance:\n * - Hcp hierarchy\n * - Key recovery data (transfer keys or shamir)\n * - Exchange keys (formerly hcp keys)\n * - Remove the call if the main goal was to force reload the data owner: data owner are not cached anymore.\n */\n emptyHcpCache(hcpartyId: string) {\n this.exchangeKeysManager.clearCache(false)\n }\n\n /**\n * @deprecated you should not need this method anymore to deal with the encryption of iCure entities because everything related to entities\n * encryption should be done either through the entity-specific extended api or through the extended apis.\n * Note that keys returned by the current implementation of this method may not be safe for encryption/sharing.\n * If instead you are using this method to retrieve key pairs for other purposes, for example because you want to reuse the user keys in iCure for\n * other services consider the following alternatives:\n * - If you want to use all iCure facilities including key recovery and key verification you can use {@link getKeyPairForFingerprint}.\n * Note that this solution can only give access to keys for the data owner of the instantiated api and his parents.\n * - Alternatively you can use directly your choice of {@link KeyStorageFacade} and {@link StorageEntryKeysFactory}: if these are the same you use\n * for the iCure API client the keys will be shared with it. Note however that the iCure api client uses\n * {@link StorageEntryKeysFactory.cachedRecoveredKeypairOfDataOwner} to cache recovered keys of a data owner which may not have originated from\n * this device, so you should only use {@link StorageEntryKeysFactory.deviceKeypairOfDataOwner} if you want to make sure the keys you use are safe\n * for encryption.\n */\n async getCachedRsaKeyPairForFingerprint(\n dataOwnerId: string,\n pubKeyOrFingerprint: string\n ): Promise<{ publicKey: CryptoKey; privateKey: CryptoKey }> {\n const fingerprint = pubKeyOrFingerprint.slice(-32)\n const res = this.keyManager.getDecryptionKeys()[fingerprint]\n if (!res) console.warn(`Could not find any keypair for fingerprint ${fingerprint}`)\n return res\n }\n\n /**\n * @deprecated You do not need this method to encrypt/decrypt data of iCure, but if you want to reuse the iCure keys for the user for other purposes\n * you have different options to replace this method, depending on what you actually need. All options return the hex-encoded spki representation of\n * the public keys.\n * - If you want only the public keys for which we have a private key available\n * - you can replicate the current behaviour using {@link getCurrentUserHierarchyAvailablePublicKeysHex}. This includes keys for the current user\n * and his parents.\n * - use {@link getCurrentUserAvailablePublicKeysHex} to get public keys only for the current data owner, ignoring any keys of the\n * parent hierarchy. In this case you can also apply a filter to only get verified keys (safe for encryption).\n * - If you need all public keys for the data owner, including those for which there is no corresponding private key available on the device use\n * {@link IccDataOwnerXApi.getHexPublicKeysOf} with the current data owner. If you don't have it available you may get it from\n * {@link IccDataOwnerXApi.getCurrentDataOwner}, but this will require to do a request to the iCure server (other options use only cached data).\n */\n async getPublicKeys(): Promise {\n return this.userKeysManager.getCurrentUserHierarchyAvailablePublicKeysHex()\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.randomUuid} at {@link primitives}.\n */\n randomUuid() {\n return this.primitives.randomUuid()\n }\n\n /**\n * @deprecated replace with {@link CryptoPrimitives.sha256} at {@link primitives}.\n */\n sha256(data: ArrayBuffer | Uint8Array) {\n return this.primitives.sha256(data)\n }\n\n /**\n * @deprecated Use {@link ShamirKeysManager.updateSelfSplits} from {@link shamirKeysManager} instead. Note that the new method completely replaces\n * all current values if a split for the provided key already exists.\n */\n async encryptShamirRSAKey(hcp: HealthcareParty, notaries: Array, threshold?: number): Promise {\n const legacyKeyFp = hcp.publicKey?.slice(-32)\n if (!legacyKeyFp) throw new Error(`No legacy/default key for hcp ${hcp.id}`)\n await this.shamirKeysManager.updateSelfSplits(\n { [legacyKeyFp]: { notariesIds: notaries.map((x) => x.id!), minShares: threshold ?? notaries.length } },\n []\n )\n return (await this.dataOwnerApi.getDataOwner(hcp.id!)).dataOwner as HealthcareParty\n }\n\n /**\n * @deprecated You should not need this method anymore because the api will automatically try to recover the available shamir keys on startup.\n */\n async decryptShamirRSAKey(hcp: HealthcareParty, notaries: Array): Promise {\n try {\n const publicKeys = await this.getPublicKeys()\n const nLen = notaries.length\n let decryptedPrivatedKey\n if (nLen == 1) {\n const notaryHcPartyId = notaries[0].id!\n const encryptedAesKeyMap = await this.getEncryptedAesExchangeKeys(hcp, notaryHcPartyId)\n const importedAESHcPartyKey = await Promise.all(\n Object.entries(encryptedAesKeyMap).map(\n async ([idPubKey, keysMap]) => await this.decryptHcPartyKey(notaryHcPartyId, hcp.id!, notaryHcPartyId, idPubKey, keysMap, publicKeys)\n )\n )\n const cryptedPrivatedKey = hcp.privateKeyShamirPartitions![notaryHcPartyId]\n decryptedPrivatedKey = ua2hex(\n await this.AES.decryptSome(\n importedAESHcPartyKey.map((k) => k.key),\n hex2ua(cryptedPrivatedKey)\n )\n )\n } else {\n const decryptedShares: string[] = await _.reduce(\n notaries,\n (queue, notary) => {\n return queue.then(async (shares: string[]) => {\n try {\n // now, we get the encrypted shares in db and decrypt them. This assumes that the\n // the notaries' private keys are in localstorage. We should implement a way for the notaries to\n // give hcp the decrypted shares without having to also share their private keys.\n const encryptedAesKeyMap = await this.getEncryptedAesExchangeKeys(hcp, notary.id!)\n const importedAESHcPartyKey = await Promise.all(\n Object.entries(encryptedAesKeyMap).map(\n async ([idPubKey, keysMap]) => await this.decryptHcPartyKey(notary.id!, hcp.id!, notary.id!, idPubKey, keysMap, publicKeys)\n )\n )\n const encryptedShare = hcp.privateKeyShamirPartitions![notary.id!]\n const decryptedShamirPartition = ua2hex(\n await this.AES.decryptSome(\n importedAESHcPartyKey.map((k) => k.key),\n hex2ua(encryptedShare)\n )\n )\n shares.push(decryptedShamirPartition)\n } catch (e) {\n console.log('Error during encryptedShamirRSAKey', notary.id, e)\n }\n return shares\n })\n },\n Promise.resolve([] as string[])\n )\n\n decryptedPrivatedKey = this.primitives.shamir.combine(decryptedShares)\n }\n\n const importedPrivateKey = await this.primitives.RSA.importKey('pkcs8', hex2ua(decryptedPrivatedKey), ['decrypt'])\n const importedPublicKey = await this.primitives.RSA.importKey('spki', hex2ua(hcp.publicKey!), ['encrypt'])\n\n const exportedKeyPair = await this.primitives.RSA.exportKeys({ publicKey: importedPublicKey, privateKey: importedPrivateKey }, 'jwk', 'jwk')\n await this._keyStorage.storeKeyPair(`${this.rsaLocalStoreIdPrefix}${hcp.id!}`, exportedKeyPair)\n } catch (e) {\n console.log('Cannot decrypt shamir RSA key')\n }\n }\n\n /**\n * @deprecated you should not need this method anymore because everything related to entities encryption should be done either through the\n * entity-specific extended api.\n * Note that currently this method does not cache results anymore (but the updated methods do).\n */\n async decryptHcPartyKey(\n loggedHcPartyId: string,\n delegatorId: string,\n delegateHcPartyId: string,\n publicKey: string,\n encryptedHcPartyKeys: { [key: string]: string },\n publicKeys: string[]\n ): Promise {\n if (!publicKeys.length) {\n const reason = `Cannot decrypt RSA encrypted AES HcPartyKey from ${delegatorId} to ${delegateHcPartyId}: no public key`\n console.warn(reason)\n throw new Error(reason)\n }\n const keysFpSet = new Set(publicKeys.map((x) => x.slice(-32)))\n const filteredKeys = Object.fromEntries(Object.entries(this.keyManager.getDecryptionKeys()).filter(([fp]) => keysFpSet.has(fp)))\n const decrypted = await this.exchangeKeysManager.base.tryDecryptExchangeKeys([encryptedHcPartyKeys], filteredKeys)\n const res = decrypted.successfulDecryptions[0]\n if (!res) {\n const error =\n `Cannot decrypt RSA encrypted AES HcPartyKey from ${delegatorId} to ${delegateHcPartyId}: impossible to decrypt. ` +\n 'No private key was found or could be used to decrypt the aes exchange keys`'\n console.warn(error)\n throw new Error(error)\n }\n return {\n delegatorId,\n key: res,\n rawKey: ua2hex(await this.primitives.AES.exportKey(res, 'raw')),\n }\n }\n\n /**\n * @deprecated you should not need this method anymore. The new API will automatically load on startup all keys available through the key storage\n * facade and/or recoverable through transfer keys or shamir split. If no verified key (safe for encryption) can be found during the instantiation\n * of the API, depending on the parameters passed to the factory one of two scenarios will happen:\n * - A new key will be automatically created on the device and stored using the key storage facade.\n * - The api instantiation fails with an exception. This is ideal if you want to try to recover an existing key pair before creating a new one.\n *\n * If you were using this method to allow the user to recover an existing key that is not available in the storage facade nor recoverable through\n * transfer keys or shamir split (for example by scanning a qr code, or by loading a file from the computer to the web browser's local storage)\n * you will have to move that logic in your implementation of CryptoStrategies.\n * It is currently not allowed to create new key pairs if a verified key pair is already available on the device, as this would be wasteful.\n * If you want to convert a `JsonWebKey` pair to a `CryptoKey` pair you should use directly the method in `primitives.RSA`.\n */\n async cacheKeyPair(keyPairInJwk: KeyPair): Promise> {\n const cryptoKeyPair = await this.primitives.RSA.importKeyPair('jwk', keyPairInJwk.privateKey, 'jwk', keyPairInJwk.publicKey)\n const pubHex = ua2hex(await this.primitives.RSA.exportKey(cryptoKeyPair.publicKey, 'spki'))\n const fingerprint = pubHex.slice(-32)\n if (!this.keyManager.getDecryptionKeys()[fingerprint]) {\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const selfKeys = this.dataOwnerApi.getHexPublicKeysOf((await this.dataOwnerApi.getCurrentDataOwner()).dataOwner)\n if (!selfKeys.has(pubHex))\n throw new Error(\n `Impossible to add key pair with fingerprint ${fingerprint} to data owner ${selfId}: the data owner has no matching public key`\n )\n await this.icureStorage.saveKey(selfId, fingerprint, keyPairInJwk, true)\n // Force reload to check if more private keys can be recovered or more exchange keys become available.\n await this.forceReload()\n }\n return cryptoKeyPair\n }\n\n /**\n * @deprecated Usually you should not need this method, since the preferred sfk is automatically chosen by the extended entity apis when creating a\n * new instance of the entity.\n */\n async extractPreferredSfk(parent: EncryptedParentEntity, hcpartyId: string, confidential: boolean) {\n return confidential ? this.confidential.getConfidentialSecretId(parent, hcpartyId) : this.confidential.getAnySecretIdSharedWithParents(parent)\n }\n\n /**\n * @deprecated you should not need this method anymore because everything related to entities encryption should be done either through the\n * entity-specific extended api.\n */\n async decryptAndImportAesHcPartyKeysForDelegators(\n delegatorsHcPartyIdsSet: Array,\n delegateHcPartyId: string,\n minCacheDurationInSeconds: number = 60\n ): Promise> {\n return await delegatorsHcPartyIdsSet.reduce(async (acc, delegator) => {\n const awaitedAcc = await acc\n const keys = await this.exchangeKeysManager.getDecryptionExchangeKeysFor(delegator, delegateHcPartyId)\n const keysForDelegator = await keys.reduce(async (accForKey, cryptoKey) => {\n const awaitedAccForKey = await accForKey\n const rawKey = ua2hex(await this.primitives.RSA.exportKey(cryptoKey, 'spki'))\n return [\n ...awaitedAccForKey,\n {\n key: cryptoKey,\n delegatorId: delegator,\n rawKey: rawKey,\n },\n ]\n }, Promise.resolve([] as DelegatorAndKeys[]))\n return [...awaitedAcc, ...keysForDelegator]\n }, Promise.resolve([] as DelegatorAndKeys[]))\n }\n\n /**\n * @deprecated you should not need this method anymore because everything related to entities encryption should be done either through the\n * entity-specific extended api.\n * Note that currently this method does not cache results anymore (but the updated methods do).\n */\n async getEncryptedAesExchangeKeys(\n owner: DataOwner,\n delegateId: string\n ): Promise<{ [pubKeyIdentifier: string]: { [pubKeyFingerprint: string]: string } }> {\n const publicKeys = Array.from(this.dataOwnerApi.getHexPublicKeysOf(owner))\n const mapOfAesExchangeKeys = Object.entries(owner.aesExchangeKeys ?? {})\n .filter((e) => e[1][delegateId] && Object.keys(e[1][delegateId]).some((k1) => publicKeys.some((pk) => pk.endsWith(k1))))\n .reduce((map, e) => {\n const candidates = Object.entries(e[1][delegateId]) //[fingerprint of delegate pub key, key], [fingerprint of owner pub key, key]\n const [publicKeyFingerprint, encryptedAesExchangeKey] = candidates[candidates.findIndex(([k, v]) => publicKeys.some((pk) => pk.endsWith(k)))]\n return { ...map, [e[0]]: { [publicKeyFingerprint]: encryptedAesExchangeKey } }\n }, {} as { [pubKeyIdentifier: string]: { [pubKeyFingerprint: string]: string } })\n\n if (!owner.publicKey || mapOfAesExchangeKeys[owner.publicKey] || !owner.hcPartyKeys?.[delegateId]) {\n return mapOfAesExchangeKeys\n }\n const delegate = (await this.dataOwnerApi.getDataOwner(delegateId)).dataOwner\n if (delegate.publicKey && publicKeys.includes(delegate.publicKey)) {\n return {\n ...mapOfAesExchangeKeys,\n [owner.publicKey]: { [delegate.publicKey!.slice(-32)]: owner.hcPartyKeys[delegateId][1] },\n }\n } else if (publicKeys.includes(owner.publicKey)) {\n return { ...mapOfAesExchangeKeys, [owner.publicKey]: { [owner.publicKey.slice(-32)]: owner.hcPartyKeys[delegateId][0] } }\n }\n return mapOfAesExchangeKeys\n }\n\n /**\n * @deprecated you should not use this method because initialisation of encrypted entities keys is done automatically by the entity-specific\n * extended api. Also note that it is now forbidden to initialise an entity as a data owner which is not the current data owner: you should instead\n * create the entity as the current data owner then create a delegation to the other data owner.\n */\n async initEncryptionKeys(\n createdObject: any,\n ownerId: string\n ): Promise<{\n encryptionKeys: any\n secretId: string\n }> {\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) {\n throw new Error('Impossible to initialise keys as a data owner which is not the current data owner')\n }\n const { updatedEntity, rawEncryptionKey } = await this.entities.entityWithInitialisedEncryptedMetadata(\n {\n ...createdObject,\n delegations: undefined,\n encryptionKeys: undefined,\n cryptedForeignKeys: undefined,\n secretForeignKeys: undefined,\n } as EncryptedEntity,\n undefined,\n undefined,\n true\n )\n return {\n encryptionKeys: updatedEntity.encryptionKeys,\n secretId: rawEncryptionKey!,\n }\n }\n\n /**\n * @deprecated You should use:\n * - {@link IccPatientXApi.decryptSecretIdsOf} or {@link IccMessageXApi.decryptSecretIdsOf} to get the delegation sfks (now caleld secret ids).\n * - {@link IccDataOwnerXApi.getCurrentDataOwnerHierarchyIds} to get the full hierarchy for the current data owner (cached). The first element is\n * the id of the topmost parent, while the last is the current data owner.\n * Note that the behaviour of this method has some subtle changes compared to the past:\n * - throws an error if the provided hcpartyId is not part of the current data owner hierarchy.\n * - does not provide any guarantees on the ordering of the extracted keys\n * - deduplicates extracted keys\n */\n async extractDelegationsSFKs(document: EncryptedEntity | null, hcpartyId?: string): Promise<{ extractedKeys: Array; hcpartyId?: string }> {\n if (!document || !hcpartyId) {\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n const delegationsForAllDelegates = document.delegations\n if (!delegationsForAllDelegates || !Object.keys(delegationsForAllDelegates).length) {\n console.log(`There is no delegation in document (${document.id})`)\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n return {\n extractedKeys: await this.entities.secretIdsOf(document, hcpartyId),\n hcpartyId: (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0],\n }\n }\n\n /**\n * @deprecated (light) You should use:\n * - {@link IccHelementXApi.decryptPatientIdOf}, {@link IccDocumentXApi.decryptMessageIdOf}, ... to get the crypted foreign keys.\n * - {@link IccDataOwnerXApi.getCurrentDataOwnerHierarchyIds} to get the full hierarchy for the current data owner (cached). The first element is\n * the id of the topmost parent, while the last is the current data owner.\n * Note that the behaviour of this method has some subtle changes compared to the past:\n * - throws an error if the provided hcpartyId is not part of the current data owner hierarchy.\n * - does not provide any guarantees on the ordering of the extracted keys\n * - deduplicates extracted keys\n */\n async extractCryptedFKs(document: EncryptedEntity | null, hcpartyId: string): Promise<{ extractedKeys: Array; hcpartyId: string }> {\n if (!document || !document.cryptedForeignKeys) {\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n const cfksForAllDelegates = document.cryptedForeignKeys\n if (!cfksForAllDelegates || !Object.keys(cfksForAllDelegates).length) {\n console.log(`There is no cryptedForeignKeys in document (${document.id})`)\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n return {\n extractedKeys: await this.entities.owningEntityIdsOf(document, hcpartyId),\n hcpartyId: (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0],\n }\n }\n\n /**\n * @deprecated You should use the extended apis methods to encrypt/decrypt entities or their attachments\n * Note that the behaviour of this method has some subtle changes compared to the past:\n * - throws an error if the provided hcpartyId is not part of the current data owner hierarchy.\n * - does not provide any guarantees on the ordering of the extracted keys\n * - deduplicates extracted keys\n */\n async extractEncryptionsSKs(document: EncryptedEntity, hcpartyId: string): Promise<{ extractedKeys: Array; hcpartyId: string }> {\n if (!document.encryptionKeys) {\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n const eckeysForAllDelegates = document.encryptionKeys\n if (!eckeysForAllDelegates || !Object.keys(eckeysForAllDelegates).length) {\n return Promise.resolve({ extractedKeys: [], hcpartyId: hcpartyId })\n }\n return {\n extractedKeys: await this.entities.encryptionKeysOf(document, hcpartyId),\n hcpartyId: (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0],\n }\n }\n\n /**\n * @deprecated You should not use this method anymore, depending on what you were passing as {@link delegations} you should replace this method as\n * explained in {@link extractEncryptionsSKs} (if you were passing encryptionKeys), {@link extractCryptedFKs} (cryptedForeignKeys), or\n * {@link extractDelegationsSFKs} (delegations).\n */\n async extractKeysFromDelegationsForHcpHierarchy(\n dataOwnerId: string,\n objectId: string,\n delegations: { [key: string]: Array }\n ): Promise<{ extractedKeys: Array; hcpartyId: string }> {\n return {\n extractedKeys: await this.entities.extractMergedHierarchyFromDelegationAndOwner(\n delegations,\n dataOwnerId,\n (x) => !!x,\n () => Promise.resolve(true)\n ),\n hcpartyId: (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0],\n }\n }\n\n /**\n * @deprecated you should not need this method anymore: the new API will automatically load on startup all keys available through the key storage\n * facade and/or recoverable through transfer keys or shamir split. If you were using this method to load a key recovered through other means you\n * will have to do so in your implementation of CryptoStrategies.\n * You can convert the private key pkcs8 array to a jwk key using {@link pkcs8ToJwk} then you can extract the full key pair using\n * {@link keyPairFromPrivateKeyJwk}.\n */\n async loadKeyPairsAsTextInBrowserLocalStorage(healthcarePartyId: string, privateKey: Uint8Array) {\n await this.cacheKeyPair(keyPairFromPrivateKeyJwk(pkcs8ToJwk(privateKey)))\n }\n\n /**\n * @deprecated you should not need this method anymore: the new API will automatically load on startup all keys available through the key storage\n * facade and/or recoverable through transfer keys or shamir split. If you were using this method to load a key recovered through other means you\n * will have to do so in your implementation of CryptoStrategies.\n * You can extract the full key pair using {@link keyPairFromPrivateKeyJwk}.\n */\n async loadKeyPairsAsJwkInBrowserLocalStorage(healthcarePartyId: string, privateKey: JsonWebKey) {\n await this.cacheKeyPair(keyPairFromPrivateKeyJwk(privateKey))\n }\n\n /**\n * @deprecated you should not need this method anymore: the new API will automatically load on startup all keys available through the key storage\n * facade and/or recoverable through transfer keys or shamir split. If you were using this method to load a key recovered through other means you\n * will have to do so in your implementation of CryptoStrategies.\n */\n loadKeyPairsInBrowserLocalStorage(healthcarePartyId: string, file: Blob): Promise {\n const fr = new FileReader()\n return new Promise((resolve, reject) => {\n fr.onerror = reject\n fr.onabort = reject\n fr.onload = (e: any) => {\n const privateKey = e.target.result as string\n this.loadKeyPairsAsTextInBrowserLocalStorage(healthcarePartyId, hex2ua(privateKey))\n .then(() => resolve())\n .catch(reject)\n }\n fr.readAsText(file)\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n saveKeychainInBrowserLocalStorage(id: string, keychain: number) {\n this._storage.setItem(\n this.keychainLocalStoreIdPrefix + id,\n b2a(new Uint8Array(keychain).reduce((data, byte) => data + String.fromCharCode(byte), ''))\n )\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n saveKeychainInBrowserLocalStorageAsBase64(id: string, keyChainB64: string) {\n this._storage.setItem(this.keychainLocalStoreIdPrefix + id, keyChainB64)\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n async saveKeychainValidityDateInBrowserLocalStorage(id: string, date: string) {\n if (!id) return\n\n if (!date) {\n await this._storage.removeItem(this.keychainValidityDateLocalStoreIdPrefix + id)\n } else {\n await this._storage.setItem(this.keychainValidityDateLocalStoreIdPrefix + id, date)\n }\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n *\n * Populate the HCP.options dict with an encrypted eHealth certificate and unencryped expiry date.\n * Any potentially unencrypted certificates will be pruned from the HCP.\n * @param hcpId Id of the hcp to modify\n * @returns modified HCP\n */\n async saveKeyChainInHCPFromLocalStorage(hcpId: string): Promise {\n return await this.hcpartyBaseApi.getHealthcareParty(hcpId).then(async (hcp: HealthcareParty) => {\n let aesKey: CryptoKey | null = null\n try {\n aesKey = _.find(\n await this.decryptAndImportAesHcPartyKeysForDelegators([hcp.id!], hcp.id!),\n (delegator: DelegatorAndKeys) => delegator.delegatorId === hcp.id\n )!.key\n } catch (e) {\n console.error('Error while importing the AES key.')\n }\n if (!aesKey) {\n console.error('No encryption key!')\n }\n\n const opts = hcp.options || {}\n\n const crt = await this.getKeychainInBrowserLocalStorageAsBase64(hcp.id!!)\n if (!!aesKey && !!crt) {\n let crtEncrypted: ArrayBuffer | null = null\n try {\n crtEncrypted = await this.AES.encrypt(aesKey, new Uint8Array(string2ua(atob(crt))))\n } catch (e) {\n console.error('Error while encrypting the certificate', e)\n }\n\n // add the encrypted certificate to the options\n _.set(opts, this.hcpPreferenceKeyEhealthCert, ua2string(new Uint8Array(crtEncrypted!)))\n }\n\n const crtValidityDate = this.getKeychainValidityDateInBrowserLocalStorage(hcp.id!!)\n if (!!crtValidityDate) {\n _.set(opts, this.hcpPreferenceKeyEhealthCertDate, crtValidityDate)\n }\n\n hcp.options = opts\n return hcp\n })\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n importKeychainInBrowserFromHCP(hcpId: string): Promise {\n return this.hcpartyBaseApi.getHealthcareParty(hcpId).then(async (hcp: HealthcareParty) => {\n let crtCryp: Uint8Array | null = null\n if (!!hcp.options && !!hcp.options[this.hcpPreferenceKeyEhealthCert]) {\n crtCryp = string2ua(hcp.options[this.hcpPreferenceKeyEhealthCert])\n }\n\n const crtValidityDate = _.get(hcp.options, this.hcpPreferenceKeyEhealthCertDate)\n\n // store the validity date\n if (!!crtValidityDate) {\n this.saveKeychainValidityDateInBrowserLocalStorage(hcp.id!!, crtValidityDate)\n }\n\n let crt: ArrayBuffer | null = null\n let decryptionKey: CryptoKey | null = null\n try {\n decryptionKey = _.find(\n await this.decryptAndImportAesHcPartyKeysForDelegators([hcp.id!], hcp.id!),\n (delegator: DelegatorAndKeys) => delegator.delegatorId === hcp.id\n )!.key\n } catch (e) {\n console.error('Error while importing the AES key.')\n }\n if (!decryptionKey) {\n throw new Error('No encryption key! eHealth certificate cannot be decrypted.')\n }\n\n if (!!crtCryp && decryptionKey) {\n try {\n crt = await this.AES.decrypt(decryptionKey, crtCryp)\n } catch (e) {\n console.error(e)\n }\n }\n\n if (!crt) {\n throw new Error(`Error while saving certificate in browser local storage! Hcp ${hcp.id} has no certificate.`)\n } else {\n this.saveKeychainInBrowserLocalStorageAsBase64(hcp.id!!, btoa(String.fromCharCode.apply(null, Array.from(new Uint8Array(crt)))))\n }\n\n return\n })\n }\n\n /**\n * @deprecated e-health certificates and keychains are not part of iCure's api: this method will be removed.\n *\n * Synchronizes the eHealth certificate from the database into the LocalStorage, returning information on the presence\n * of certificate data in either place.\n *\n * @param hcpId The healthcare party id\n * @returns A Promise for an object that represents the existence of a certificate in local storage and in the DB,\n * through the two boolean properties \"local\" and \"remote\".\n */\n syncEhealthCertificateFromDatabase(hcpId: string): Promise<{ remote: boolean; local: boolean }> {\n return this.hcpartyBaseApi.getHealthcareParty(hcpId).then((hcp: HealthcareParty) => {\n const remoteCertificate = _.get(hcp.options, this.hcpPreferenceKeyEhealthCert)\n const localCertificate = this.getKeychainInBrowserLocalStorageAsBase64(hcp.id!)\n\n if (remoteCertificate) {\n return this.importKeychainInBrowserFromHCP(hcp.id!)\n .then(() => ({ local: true, remote: true }))\n .catch(() => ({ local: !!localCertificate, remote: true }))\n } else {\n return { local: !!localCertificate, remote: !!remoteCertificate }\n }\n })\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n getKeychainInBrowserLocalStorageAsBase64(id: string) {\n return this._storage.getItem(this.keychainLocalStoreIdPrefix + id)\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n getKeychainValidityDateInBrowserLocalStorage(id: string) {\n return this._storage.getItem(this.keychainValidityDateLocalStoreIdPrefix + id)\n }\n\n /**\n * @deprecated keychains are not part of iCure's api: this method will be removed.\n */\n async loadKeychainFromBrowserLocalStorage(id: string) {\n const lsItem = await this._storage.getItem(this.keychainLocalStoreIdPrefix + id)\n return lsItem !== undefined ? b64_2uas(lsItem) : null\n }\n\n /**\n * @deprecated you should not need this method anymore to deal with the encryption of iCure entities because everything related to entities\n * encryption should be done through the entity-specific extended api.\n * If instead you were using the method for other reasons check {@link getCachedRsaKeyPairForFingerprint} to get an idea of possible replacements.\n */\n async loadKeyPairNotImported(id: string, publicKeyFingerPrint?: string): Promise<{ publicKey: JsonWebKey; privateKey: JsonWebKey } | undefined> {\n if (publicKeyFingerPrint) {\n const cached = this.keyManager.getKeyPairForFingerprint(publicKeyFingerPrint)?.pair\n if (cached) {\n return this.primitives.RSA.exportKeys(cached, 'jwk', 'jwk')\n }\n } else {\n const defaultKey = await this._keyStorage.getKeypair(this.rsaLocalStoreIdPrefix + id)\n if (defaultKey) return defaultKey\n }\n console.warn(`No key can be found in local storage for id ${id} and publicKeyFingerPrint ${publicKeyFingerPrint}`)\n }\n\n /**\n * @deprecated use {@link IccIcureMaintenanceXApi.applyKeyPairUpdate} instead.\n */\n async giveAccessBackTo(delegateUser: User, ownerId: string, ownerNewPublicKey: string): Promise {\n await this.exchangeKeys.base.giveAccessBackTo(ownerId, ownerNewPublicKey, this.userKeysManager.getDecryptionKeys())\n return this.dataOwnerApi.getDataOwner(ownerId).then((x) => x.dataOwner)\n }\n /**\n * @deprecated You don't need to manually generate exchange keys as they will be automatically created by the api when needed.\n * Note that this method has some changes compared to previous version:\n * - The method may return any data owner (including devices)\n * - The method will throw an exception if the provided ownerId does not match the current data owner\n */\n async generateKeyForDelegate(ownerId: string, delegateId: string): Promise {\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) {\n throw new Error('You can only create delegation where the delegator is the current data owner')\n }\n return (await this.dataOwnerApi.getDataOwner(ownerId)).dataOwner\n }\n\n /**\n * @deprecated replace with {@link IccDataOwnerXApi.getDataOwner}. Note that data owners are not cached anymore.\n */\n getDataOwner(ownerId: string, loadIfMissingFromCache: boolean = true) {\n return this.dataOwnerApi.getDataOwner(ownerId)\n }\n\n /**\n * @deprecated the crypto api will automatically verify on startup the validity of private keys, but in some cases you may want to verify the\n * validity of keys recovered in your implementation of {@link CryptoStrategies}: in this case the method has been replaced with\n * {@link RSA.checkKeyPairValidity}\n */\n async checkPrivateKeyValidity(dataOwner: DataOwner): Promise {\n const publicKeys = Array.from(new Set([dataOwner.publicKey].concat(Object.keys(dataOwner.aesExchangeKeys ?? {})).filter((x) => !!x))) as string[]\n\n return await publicKeys.reduce(async (pres, publicKey) => {\n const res = await pres\n try {\n const k = await this.primitives.RSA.importKey('jwk', spkiToJwk(hex2ua(publicKey)), ['encrypt'])\n const cipher = await this.primitives.RSA.encrypt(k, utf8_2ua('shibboleth'))\n const ikp = await this.getCachedRsaKeyPairForFingerprint(dataOwner.id!, publicKey.slice(-32))\n const plainText = ua2utf8(await this.primitives.RSA.decrypt(ikp.privateKey, new Uint8Array(cipher)))\n return plainText === 'shibboleth' || res\n } catch (e) {\n return res\n }\n }, Promise.resolve(false))\n }\n\n /**\n * @deprecated (See {@link extractEncryptionsSKs} for a detailed explanation).\n */\n async getEncryptionDecryptionKeys(dataOwnerId: string, document: EncryptedEntity): Promise | undefined> {\n return this.entities.encryptionKeysOf(document, dataOwnerId)\n }\n\n /**\n * @deprecated For the encryption/decryption of iCure entities and attachments you should rely solely on the extended apis methods.\n */\n async encryptDecrypt(\n method: 'encrypt' | 'decrypt',\n content: Uint8Array | ArrayBuffer,\n edKey?: string,\n user?: User,\n documentObject?: Document\n ): Promise | any> {\n if (!content || !(edKey || (user?.healthcarePartyId && documentObject))) return content\n\n if (edKey) {\n const importedEdKey = await this.primitives.AES.importKey('raw', hex2ua(edKey.replace(/-/g, '')))\n try {\n return await this.primitives.AES[method](importedEdKey, content)\n } catch (e) {\n return content\n }\n }\n\n const encryptionKeys = await this.entities.encryptionKeysOf(documentObject!, user?.healthcarePartyId!)\n const importedEdKey = await this.primitives.AES.importKey('raw', hex2ua(encryptionKeys[0].replace(/-/g, '')))\n try {\n return await this.primitives.AES[method](importedEdKey, content)\n } catch (e) {\n return content\n }\n }\n\n /**\n * @deprecated you should not need to interact directly with the storage instance used by the iCure sdk.\n */\n storeKeyPair(id: string, keyPair: { publicKey: any; privateKey: any }) {\n this._storage.setItem(this.rsaLocalStoreIdPrefix + id, JSON.stringify(keyPair))\n }\n}\n","import { User } from '../icc-api/model/User'\nimport { HealthcareParty } from '../icc-api/model/HealthcareParty'\nimport { Patient } from '../icc-api/model/Patient'\nimport { Device } from '../icc-api/model/Device'\nimport { hexPublicKeysOf } from './crypto/utils'\nimport { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum'\nimport { CryptoActorStub, CryptoActorStubWithType } from '../icc-api/model/CryptoActorStub'\nimport { IccDataownerApi } from '../icc-api/api/IccDataownerApi'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { DataOwnerWithType } from '../icc-api/model/DataOwnerWithType'\n\nexport type DataOwnerOrStub = DataOwner | CryptoActorStub\nexport type DataOwner = HealthcareParty | Patient | Device\n\nexport class IccDataOwnerXApi extends IccDataownerApi {\n private currentDataOwnerType: DataOwnerTypeEnum | undefined\n private currentDataOwnerHierarchyIds: string[] | undefined\n\n private get selfDataOwnerId(): string | undefined {\n if (!this.currentDataOwnerHierarchyIds) return undefined\n return this.currentDataOwnerHierarchyIds[this.currentDataOwnerHierarchyIds.length - 1]\n }\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n /**\n * If the logged user is a data owner get the current data owner. This information is cached without expiration, and will only be updated in case\n * of forced refresh.\n * @throws if the current user is not a data owner.\n */\n async getCurrentDataOwnerId(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.getCurrentDataOwnerHierarchyIds()\n }\n return this.currentDataOwnerHierarchyIds![this.currentDataOwnerHierarchyIds!.length - 1]\n }\n\n /**\n * If the logged user is a data owner get its parent hierarchy. This information is cached without expiration, and will only be updated in case\n * of forced refresh.\n * The resulting array starts with the topmost parent (the only ancestor without a parent) and ends with the data owner itself.\n * @throws if the current user is not a data owner.\n */\n async getCurrentDataOwnerHierarchyIds(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n }\n return [...this.currentDataOwnerHierarchyIds!]\n }\n\n /**\n * Get the hierarchy for the current data owner starting from the specified parent.\n * @throws an array starting at the topmost parent and ending at the provided parent id. If the provided id is not part of the hierarchy throws an\n * error.\n */\n async getCurrentDataOwnerHierarchyIdsFrom(parentId: string): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.getCurrentDataOwnerHierarchyIds()\n }\n const res = []\n for (const dataOwnerId of this.currentDataOwnerHierarchyIds!) {\n res.push(dataOwnerId)\n if (dataOwnerId === parentId) return res\n }\n throw new Error(`${parentId} is not part of the data owner hierarchy for the current user`)\n }\n\n /**\n * If the logged user is a data owner get the current data owner and all of his parents.\n * @throws if the current user is not a data owner.\n * @return the current data owner hierarchy, starting from the topmost parent to the current data owner.\n */\n async getCurrentDataOwnerHierarchy(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n return await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n } else return Promise.all(this.currentDataOwnerHierarchyIds!.map((id) => this.getDataOwner(id)))\n }\n\n /**\n * If the logged user is a data owner get the type of the current data owner. This information is cached.\n * @throws if the current user is not a data owner\n */\n async getCurrentDataOwnerType(): Promise {\n if (!this.currentDataOwnerHierarchyIds) {\n await this.forceLoadCurrentDataOwnerHierarchyAndCacheIds()\n }\n return this.currentDataOwnerType!\n }\n\n /**\n * Get the id of the data owner entity for a user.\n * @param user a user that is also a data owner.\n * @return the id of the data owner corresponding to the provided user.\n * @throws if the user is not a data owner.\n */\n getDataOwnerIdOf(user: User): string {\n const dataOwnerId = user.healthcarePartyId ?? user.patientId ?? user.deviceId\n if (dataOwnerId == undefined) {\n throw Error(`User ${user.id} is not a data owner`)\n }\n return dataOwnerId\n }\n\n /**\n * Get a data owner. Note that this does not decrpyt patient data owners.\n * @param ownerId id of the data owner to retrieve (patient, medical device, hcp, ...)\n * @return the data owner with the provided id\n * @throws if you have no access to the data owner. Use {@link getCryptoActorStub}.\n */\n async getDataOwner(ownerId: string): Promise {\n return super.getDataOwner(ownerId).then((dowt) => {\n if (dowt.dataOwner.id === this.selfDataOwnerId) this.checkDataOwnerIntegrity(dowt.dataOwner)\n return dowt\n })\n }\n\n /**\n * Get a crypto actor stub for a data owner.\n * @param ownerId id of the data owner for which you want to retrieve the stub (patient, medical device, hcp, ...)\n * @return the crypto actor stub of the data owner with the provided id\n */\n async getCryptoActorStub(ownerId: string): Promise {\n return super.getCryptoActorStub(ownerId).then((dowt) => {\n if (dowt.stub.id === this.selfDataOwnerId) this.checkDataOwnerIntegrity(dowt.stub)\n return dowt\n })\n }\n\n /**\n * Gets the public keys of a data owner in hex format.\n * @param dataOwner a data owner.\n * @return the public keys for the data owner in hex format.\n */\n getHexPublicKeysOf(dataOwner: DataOwnerOrStub): Set {\n return hexPublicKeysOf(dataOwner)\n }\n\n /**\n * Clears the cache of current data owner id and parent hierarchy ids. The hierarchy of a data owner should not normally change over time, so this\n * method should be rarely needed.\n */\n clearCurrentDataOwnerIdsCache() {\n this.currentDataOwnerHierarchyIds = undefined\n }\n\n private checkDataOwnerIntegrity(dataOwner: DataOwnerOrStub) {\n const keys = this.getHexPublicKeysOf(dataOwner)\n if (new Set(Array.from(keys).map((x) => x.slice(-32))).size != keys.size)\n throw new Error(\n `Different public keys for ${dataOwner.id} have the same fingerprint; this should not happen in normal circumstances. Please report this error to iCure.`\n )\n }\n\n private async forceLoadCurrentDataOwnerHierarchyAndCacheIds(): Promise {\n let curr = await this.getCurrentDataOwner()\n this.checkDataOwnerIntegrity(curr.dataOwner)\n this.currentDataOwnerType = curr.type\n let res = [curr]\n while ((curr.dataOwner as HealthcareParty).parentId) {\n curr = await this.getDataOwner((curr.dataOwner as HealthcareParty).parentId!)\n res = [curr, ...res]\n }\n this.currentDataOwnerHierarchyIds = res.map((x) => x.dataOwner.id!)\n return res\n }\n}\n","import { IccDoctemplateApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport { extend } from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { DocumentTemplate } from '../icc-api/model/models'\nimport { string2ua } from './utils/binary-utils'\nimport { XHR } from '../icc-api/api/XHR'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccDoctemplateXApi extends IccDoctemplateApi {\n crypto: IccCryptoXApi\n authenticationProvider: AuthenticationProvider\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.authenticationProvider = authenticationProvider\n this.fetchImpl = fetchImpl\n }\n\n newInstance(user: models.User, template: string, c: any): Promise {\n return new Promise((resolve, reject) => {\n const documentTemplate: DocumentTemplate = extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.DocumentTemplate',\n owner: user.id,\n created: new Date().getTime(),\n modified: new Date().getTime(),\n guid: this.crypto.primitives.randomUuid(),\n group: null,\n specialty: null,\n attachment: string2ua(template),\n mainUti: 'public.plain-text',\n },\n c || {}\n )\n if (documentTemplate.group && documentTemplate.group.guid == null) {\n documentTemplate.group.guid = this.crypto.primitives.randomUuid()\n }\n\n //sauver l doctemplate vide\n\n if (template) {\n //save attachement\n }\n\n return resolve(documentTemplate)\n })\n }\n\n // noinspection JSUnusedLocalSymbols\n findAllByOwnerId(ownerId: string): Promise> {\n return new Promise(function (resolve, reject) {\n reject(console.log('findByHCPartyPatientSecretFKeys not implemented in document API!'))\n })\n }\n\n // noinspection JSUnusedGlobalSymbols\n getAttachmentUrl(documentId: string, attachmentId: string) {\n return (\n this.host + '/doctemplate/{documentId}/attachment/{attachmentId}'.replace('{documentId}', documentId).replace('{attachmentId}', attachmentId)\n )\n }\n\n getAttachmentText(documentTemplateId: string, attachmentId: string): Promise {\n const _body = null\n\n const _url =\n this.host +\n '/doctemplate/{documentTemplateId}/attachmentText/{attachmentId}'\n .replace('{documentTemplateId}', documentTemplateId + '')\n .replace('{attachmentId}', attachmentId + '') +\n '?ts=' +\n new Date().getTime()\n\n return XHR.sendCommand('GET', _url, this.headers, _body, this.fetchImpl, undefined, this.authenticationProvider.getAuthService())\n .then((doc) => {\n if (doc.contentType.startsWith('application/octet-stream')) {\n const enc = new TextDecoder('utf-8')\n const arr = new Uint8Array(doc.body)\n return enc.decode(arr)\n } else if (doc.contentType.startsWith('text/plain') || doc.contentType.startsWith('text/html') || doc.contentType.startsWith('text/xml')) {\n return doc.body\n } else {\n return false\n }\n })\n .catch((err) => this.handleError(err))\n }\n}\n","import { IccAuthApi, IccDocumentApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport { XHR } from '../icc-api/api/XHR'\nimport * as models from '../icc-api/model/models'\n\nimport { a2b, hex2ua, string2ua, ua2string } from './utils/binary-utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccDocumentXApi extends IccDocumentApi implements EncryptedEntityXApi {\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n\n /** maps invalid UTI values to corresponding MIME type for backward-compatibility (pre-v1.0.117) */\n compatUtiRevDefs: { [key: string]: string } = {\n 'com.adobe.encapsulatedPostscript': 'image/eps',\n 'com.adobe.illustrator.aiImage': 'application/illustrator',\n 'com.adobe.indesignImage': 'image/indesign',\n 'com.adobe.photoshopImage': 'image/psd',\n 'com.adobe.postscriptPfaFont': 'application/x-font-type1',\n 'com.adobe.postscriptPfbFont': 'application/x-font-type1',\n 'com.allume.stuffitArchive': 'application/stuffit',\n 'com.apple.binhexArchive': 'application/binhex',\n 'com.apple.diskImageUdif': 'application/x-apple-diskimage',\n 'com.apple.macbinaryArchive': 'application/macbinary',\n 'com.apple.quartzComposerComposition': 'application/x-quartzcomposer',\n 'com.apple.quicktimeImage': 'image/x-quicktime',\n 'com.apple.quicktimeMovie': 'video/quicktime',\n 'com.js.efxFax': 'image/efax',\n 'com.macromedia.shockwaveFlash': 'application/x-shockwave-flash',\n 'com.microsoft.advancedStreamRedirector': 'video/x-ms-asx',\n 'com.microsoft.advancedSystemsFormat': 'video/x-ms-asf',\n 'com.microsoft.waveformAudio': 'audio/wave',\n 'com.microsoft.windowsDynamicLinkLibrary': 'application/x-msdownload',\n 'com.microsoft.windowsExecutable': 'application/exe',\n 'com.microsoft.windowsMediaWax': 'audio/x-ms-wax',\n 'com.microsoft.windowsMediaWm': 'video/x-ms-wm',\n 'com.microsoft.windowsMediaWma': 'audio/x-ms-wma',\n 'com.microsoft.windowsMediaWmd': 'video/x-ms-wmd',\n 'com.microsoft.windowsMediaWmp': 'video/x-ms-wmp',\n 'com.microsoft.windowsMediaWmv': 'video/x-ms-wmv',\n 'com.microsoft.windowsMediaWmx': 'video/x-ms-wmx',\n 'com.microsoft.windowsMediaWmz': 'video/x-ms-wmz',\n 'com.microsoft.windowsMediaWvx': 'video/x-ms-wvx',\n 'com.netscape.javascriptSource': 'text/javascript',\n 'com.pkware.zipArchive': 'application/zip',\n 'com.rarlab.rarArchive': 'application/rar',\n 'com.redhat.redhatPackage': 'application/x-redhat-package',\n 'com.sgi.sgiImage': 'image/sgi',\n 'com.sun.javaAppDescriptor': 'text/vnd.sun.j2me.app-descriptor',\n 'com.sun.javaArchive': 'application/java-archive',\n 'com.sun.javaClass': 'application/java',\n 'com.sun.javaSource': 'text/x-java-source',\n 'com.sun.javaWebStart': 'application/jnlp',\n 'com.truevision.tgaImage': 'image/tga',\n 'org.bzip.bzip2Archive': 'application/x-bzip2',\n 'org.debian.debianPackage': 'application/x-debian-package',\n 'org.gnu.gnuTarArchive': 'application/x-gtar',\n 'org.gnu.gnuZipArchive': 'application/gzip',\n 'org.oasis.opendocument.textMaster': 'application/vnd.oasis.opendocument.text-master',\n 'org.oasis.opendocument.textWeb': 'application/vnd.oasis.opendocument.text-web',\n 'org.xiph.oggTheora': 'video/ogg',\n 'org.xiph.oggVorbis': 'audio/ogg',\n 'public.aifcAudio': 'audio/aiff',\n 'public.aiffAudio': 'audio/aiff',\n 'public.assemblySource': 'text/x-asm',\n 'public.cHeader': 'text/x-c-header',\n 'public.cpioArchive': 'application/x-cpio',\n 'public.cPlusPlusHeader': 'text/x-c++-hdr',\n 'public.cPlusPlusSource': 'application/x-cplusplus',\n 'public.cshScript': 'application/x-csh',\n 'public.cSource': 'text/x-c-code',\n 'public.isoImage': 'application/x-iso-image',\n 'public.mpeg4Audio': 'audio/mp4',\n 'public.objectiveCPlusPlusSource': 'text/x-objcppsrc',\n 'public.objectiveCSource': 'text/x-objcsrc',\n 'public.opentypeFont': 'font/opentype',\n 'public.perlScript': 'text/x-perl',\n 'public.phpScript': 'text/php',\n 'public.plainText': 'text/plain',\n 'public.pythonScript': 'text/x-python-script',\n 'public.shellScript': 'application/x-sh',\n 'public.tarArchive': 'application/tar',\n 'public.truetypeTtfFont': 'application/x-font-ttf',\n 'public.ulawAudio': 'audio/au',\n 'public.xbitmapImage': 'image/xbm',\n 'unofficial.atomFeed': 'application/atom+xml',\n 'unofficial.m3u8Playlist': 'application/x-mpegURL',\n 'unofficial.plsPlaylist': 'audio/scpls',\n 'unofficial.rdfFeed': 'application/rdf+xml',\n 'unofficial.rssFeed': 'application/rss+xml',\n }\n\n utiRevDefs: { [key: string]: string } = {\n ...this.compatUtiRevDefs,\n 'com.adobe.encapsulated-postscript': 'image/eps',\n 'com.adobe.illustrator.ai-image': 'application/illustrator',\n 'com.adobe.indesign-image': 'image/indesign',\n 'com.adobe.pdf': 'application/pdf',\n 'com.adobe.photoshop-image': 'image/psd',\n 'com.adobe.postscript': 'application/postscript',\n 'com.adobe.postscript-pfa-font': 'application/x-font-type1',\n 'com.adobe.postscript-pfb-font': 'application/x-font-type1',\n 'com.allume.stuffit-archive': 'application/stuffit',\n 'com.apple.applescript.script': 'application/x-applescript',\n 'com.apple.applescript.text': 'application/x-applescript',\n 'com.apple.binhex-archive': 'application/binhex',\n 'com.apple.disk-image-udif': 'application/x-apple-diskimage',\n 'com.apple.ical.ics': 'text/calendar',\n 'com.apple.ical.vcs': 'text/x-vcalendar',\n 'com.apple.macbinary-archive': 'application/macbinary',\n 'com.apple.pict': 'image/pict',\n 'com.apple.quartz-composer-composition': 'application/x-quartzcomposer',\n 'com.apple.quicktime-image': 'image/x-quicktime',\n 'com.apple.quicktime-movie': 'video/quicktime',\n 'com.bittorrent.torrent': 'application/x-bittorrent',\n 'com.compuserve.gif': 'image/gif',\n 'com.js.efx-fax': 'image/efax',\n 'com.kodak.flashpix.image': 'image/vndfpx',\n 'com.lizardtech.djvu': 'image/vnd.djvu',\n 'com.macromedia.shockwave-flash': 'application/x-shockwave-flash',\n 'com.microsoft.advanced-stream-redirector': 'video/x-ms-asx',\n 'com.microsoft.advanced-systems-format': 'video/x-ms-asf',\n 'com.microsoft.bmp': 'image/bmp',\n 'com.microsoft.excel.xls': 'application/excel',\n 'com.microsoft.ico': 'image/x-icon',\n 'com.microsoft.powerpoint.ppt': 'application/powerpoint',\n 'com.microsoft.waveform-audio': 'audio/wave',\n 'com.microsoft.windows-dynamic-link-library': 'application/x-msdownload',\n 'com.microsoft.windows-executable': 'application/exe',\n 'com.microsoft.windows-media-wax': 'audio/x-ms-wax',\n 'com.microsoft.windows-media-wm': 'video/x-ms-wm',\n 'com.microsoft.windows-media-wma': 'audio/x-ms-wma',\n 'com.microsoft.windows-media-wmd': 'video/x-ms-wmd',\n 'com.microsoft.windows-media-wmp': 'video/x-ms-wmp',\n 'com.microsoft.windows-media-wmv': 'video/x-ms-wmv',\n 'com.microsoft.windows-media-wmx': 'video/x-ms-wmx',\n 'com.microsoft.windows-media-wmz': 'video/x-ms-wmz',\n 'com.microsoft.windows-media-wvx': 'video/x-ms-wvx',\n 'com.microsoft.word.doc': 'application/msword',\n 'com.netscape.javascript-source': 'text/javascript',\n 'com.pkware.zip-archive': 'application/zip',\n 'com.rarlab.rar-archive': 'application/rar',\n 'com.real.realaudio': 'audio/vnd.rn-realaudio',\n 'com.real.realmedia': 'application/vnd.rn-realmedia',\n 'com.real.smil': 'application/smil',\n 'com.redhat.redhat-package': 'application/x-redhat-package',\n 'com.sgi.sgi-image': 'image/sgi',\n 'com.soundblaster.soundfont': 'application/x-soundfont',\n 'com.sun.java-app-descriptor': 'text/vnd.sun.j2me.app-descriptor',\n 'com.sun.java-archive': 'application/java-archive',\n 'com.sun.java-class': 'application/java',\n 'com.sun.java-source': 'text/x-java-source',\n 'com.sun.java-web-start': 'application/jnlp',\n 'com.truevision.tga-image': 'image/tga',\n 'org.bzip.bzip2-archive': 'application/x-bzip2',\n 'org.debian.debian-package': 'application/x-debian-package',\n 'org.gnu.gnu-tar-archive': 'application/x-gtar',\n 'org.gnu.gnu-zip-archive': 'application/gzip',\n 'org.neooffice.calc': 'application/vnd.sun.xml.calc',\n 'org.neooffice.draw': 'application/vnd.sun.xml.draw',\n 'org.neooffice.global': 'application/vnd.sun.xml.writer.global',\n 'org.neooffice.impress': 'application/vnd.sun.xml.impress',\n 'org.neooffice.math': 'application/vnd.sun.xml.math',\n 'org.neooffice.writer': 'application/vnd.sun.xml.writer',\n 'org.oasis.opendocument.chart': 'application/vnd.oasis.opendocument.chart',\n 'org.oasis.opendocument.database': 'application/vnd.oasis.opendocument.database',\n 'org.oasis.opendocument.formula': 'application/vnd.oasis.opendocument.formula',\n 'org.oasis.opendocument.graphics': 'application/vnd.oasis.opendocument.graphics',\n 'org.oasis.opendocument.image': 'application/vnd.oasis.opendocument.image',\n 'org.oasis.opendocument.presentation': 'application/vnd.oasis.opendocument.presentation',\n 'org.oasis.opendocument.spreadsheet': 'application/vnd.oasis.opendocument.spreadsheet',\n 'org.oasis.opendocument.text': 'application/vnd.oasis.opendocument.text',\n 'org.oasis.opendocument.text-master': 'application/vnd.oasis.opendocument.text-master',\n 'org.oasis.opendocument.text-web': 'application/vnd.oasis.opendocument.text-web',\n 'org.tug.tex': 'text/tex',\n 'org.xiph.flac': 'audio/flac',\n 'org.xiph.ogg-theora': 'video/ogg',\n 'org.xiph.ogg-vorbis': 'audio/ogg',\n 'public.3gpp': 'video/3gpp',\n 'public.3gpp2': 'video/3gpp2',\n 'public.aifc-audio': 'audio/aiff',\n 'public.aiff-audio': 'audio/aiff',\n 'public.assembly-source': 'text/x-asm',\n 'public.avi': 'video/avi',\n 'public.c-header': 'text/x-c-header',\n 'public.cpio-archive': 'application/x-cpio',\n 'public.c-plus-plus-header': 'text/x-c++-hdr',\n 'public.c-plus-plus-source': 'application/x-cplusplus',\n 'public.csh-script': 'application/x-csh',\n 'public.c-source': 'text/x-c-code',\n 'public.css': 'text/css',\n 'public.dv': 'video/x-dv',\n 'public.flv': 'video/x-flv',\n 'public.html': 'text/html',\n 'public.iso-image': 'application/x-iso-image',\n 'public.jpeg': 'image/jpeg',\n 'public.jpeg2000': 'image/jp2',\n 'public.midi': 'audio/midi',\n 'public.mka': 'audio/x-matroska',\n 'public.mkv': 'video/x-matroska',\n 'public.mp3': 'audio/mp3',\n 'public.mpeg': 'video/mpeg',\n 'public.mpeg4': 'video/mp4',\n 'public.mpeg4-audio': 'audio/mp4',\n 'public.mpegts': 'video/MP2T',\n 'public.objective-c-plus-plus-source': 'text/x-objcppsrc',\n 'public.objective-c-source': 'text/x-objcsrc',\n 'public.opentype-font': 'font/opentype',\n 'public.perl-script': 'text/x-perl',\n 'public.php-script': 'text/php',\n 'public.plain-text': 'text/plain',\n 'public.png': 'image/png',\n 'public.python-script': 'text/x-python-script',\n 'public.rtf': 'text/rtf',\n 'public.shell-script': 'application/x-sh',\n 'public.tar-archive': 'application/tar',\n 'public.tiff': 'image/tiff',\n 'public.truetype-ttf-font': 'application/x-font-ttf',\n 'public.ulaw-audio': 'audio/au',\n 'public.vcard': 'text/vcard',\n 'public.webm': 'video/webm',\n 'public.xbitmap-image': 'image/xbm',\n 'public.xml': 'text/xml',\n 'unofficial.atom-feed': 'application/atom+xml',\n 'unofficial.m3u8-playlist': 'application/x-mpegURL',\n 'unofficial.opml': 'text/x-opml',\n 'unofficial.pls-playlist': 'audio/scpls',\n 'unofficial.rdf-feed': 'application/rdf+xml',\n 'unofficial.rss-feed': 'application/rss+xml',\n }\n\n utiExts: { [key: string]: string } = {\n jpg: 'public.jpeg',\n jpeg: 'public.jpeg',\n png: 'public.png',\n rtf: 'public.rtf',\n mpeg: 'public.mpeg',\n mpg: 'public.mpeg',\n html: 'public.html',\n htm: 'public.html',\n pdf: 'com.adobe.pdf',\n xls: 'com.microsoft.excel.xls',\n xlsx: 'com.microsoft.excel.xls',\n doc: 'com.microsoft.word.doc',\n docx: 'com.microsoft.word.doc',\n }\n\n utiDefs: { [key: string]: string } = {\n 'application/atom+xml': 'unofficial.atom-feed',\n 'application/bat': 'com.microsoft.windows-executable',\n 'application/binhex': 'com.apple.binhex-archive',\n 'application/binhex4': 'com.apple.binhex-archive',\n 'application/ecmascript': 'com.netscape.javascript-source',\n 'application/eps': 'com.adobe.encapsulated-postscript',\n 'application/excel': 'com.microsoft.excel.xls',\n 'application/exe': 'com.microsoft.windows-executable',\n 'application/gnutar': 'public.tar-archive',\n 'application/gzip': 'org.gnu.gnu-zip-archive',\n 'application/illustrator': 'com.adobe.illustrator.ai-image',\n 'application/indesign': 'com.adobe.indesign-image',\n 'application/java-archive': 'com.sun.java-archive',\n 'application/java-byte-code': 'com.sun.java-class',\n 'application/java': 'com.sun.java-class',\n 'application/javascript': 'com.netscape.javascript-source',\n 'application/jnlp': 'com.sun.java-web-start',\n 'application/latex': 'org.tug.tex',\n 'application/mac-binary': 'com.apple.macbinary-archive',\n 'application/mac-binhex': 'com.apple.binhex-archive',\n 'application/mac-binhex40': 'com.apple.binhex-archive',\n 'application/macbinary': 'com.apple.macbinary-archive',\n 'application/mspowerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/msword': 'com.microsoft.word.doc',\n 'application/octet-stream': 'com.microsoft.windows-executable',\n 'application/pdf': 'com.adobe.pdf',\n 'application/photoshop': 'com.adobe.photoshop-image',\n 'application/php': 'public.php-script',\n 'application/plain': 'public.plain-text',\n 'application/postscript': 'com.adobe.postscript',\n 'application/powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/rar': 'com.rarlab.rar-archive',\n 'application/rdf+xml': 'unofficial.rdf-feed',\n 'application/rss+xml': 'unofficial.rss-feed',\n 'application/rtf': 'public.rtf',\n 'application/smil': 'com.real.smil',\n 'application/stuffit': 'com.allume.stuffit-archive',\n 'application/tar': 'public.tar-archive',\n 'application/tga': 'com.truevision.tga-image',\n 'application/vnd.fpx': 'com.kodak.flashpix.image',\n 'application/vnd.ms-excel': 'com.microsoft.excel.xls',\n 'application/vnd.ms-powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/vnd.oasis.opendocument.chart': 'org.oasis.opendocument.chart',\n 'application/vnd.oasis.opendocument.database': 'org.oasis.opendocument.database',\n 'application/vnd.oasis.opendocument.formula': 'org.oasis.opendocument.formula',\n 'application/vnd.oasis.opendocument.graphics-template': 'org.oasis.opendocument.graphics',\n 'application/vnd.oasis.opendocument.graphics': 'org.oasis.opendocument.graphics',\n 'application/vnd.oasis.opendocument.image': 'org.oasis.opendocument.image',\n 'application/vnd.oasis.opendocument.presentation-template': 'org.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.presentation': 'org.oasis.opendocument.presentation',\n 'application/vnd.oasis.opendocument.spreadsheet-template': 'org.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.spreadsheet': 'org.oasis.opendocument.spreadsheet',\n 'application/vnd.oasis.opendocument.text-master': 'org.oasis.opendocument.text-master',\n 'application/vnd.oasis.opendocument.text-template': 'org.oasis.opendocument.text',\n 'application/vnd.oasis.opendocument.text-web': 'org.oasis.opendocument.text-web',\n 'application/vnd.oasis.opendocument.text': 'org.oasis.opendocument.text',\n 'application/vnd.rn-realmedia': 'com.real.realmedia',\n 'application/vnd.sun.xml.calc.template': 'org.neooffice.calc',\n 'application/vnd.sun.xml.calc': 'org.neooffice.calc',\n 'application/vnd.sun.xml.draw.template': 'org.neooffice.draw',\n 'application/vnd.sun.xml.draw': 'org.neooffice.draw',\n 'application/vnd.sun.xml.impress.template': 'org.neooffice.impress',\n 'application/vnd.sun.xml.impress': 'org.neooffice.impress',\n 'application/vnd.sun.xml.math': 'org.neooffice.math',\n 'application/vnd.sun.xml.writer.global': 'org.neooffice.global',\n 'application/vnd.sun.xml.writer.template': 'org.neooffice.writer',\n 'application/vnd.sun.xml.writer': 'org.neooffice.writer',\n 'application/vndms-excel': 'com.microsoft.excel.xls',\n 'application/vndms-powerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/vndrn-realmedia': 'com.real.realmedia',\n 'application/x-apple-diskimage': 'com.apple.disk-image-udif',\n 'application/x-applescript': 'com.apple.applescript.script',\n 'application/x-bat': 'com.microsoft.windows-executable',\n 'application/x-binary': 'com.apple.macbinary-archive',\n 'application/x-binhex40': 'com.apple.binhex-archive',\n 'application/x-bittorrent': 'com.bittorrent.torrent',\n 'application/x-bzip2': 'org.bzip.bzip2-archive',\n 'application/x-cpio': 'public.cpio-archive',\n 'application/x-cplusplus': 'public.c-plus-plus-source',\n 'application/x-csh': 'public.csh-script',\n 'application/x-deb': 'org.debian.debian-package',\n 'application/x-debian-package': 'org.debian.debian-package',\n 'application/x-eps': 'com.adobe.encapsulated-postscript',\n 'application/x-excel': 'com.microsoft.excel.xls',\n 'application/x-exe': 'com.microsoft.windows-executable',\n 'application/x-flac': 'org.xiph.flac',\n 'application/x-font-ttf': 'public.truetype-ttf-font',\n 'application/x-font-type1': 'com.adobe.postscript-pfa-font',\n 'application/x-gtar': 'org.gnu.gnu-tar-archive',\n 'application/x-gzip': 'org.gnu.gnu-zip-archive',\n 'application/x-iso-image': 'public.iso-image',\n 'application/x-java-class': 'com.sun.java-class',\n 'application/x-java': 'com.sun.java-web-start',\n 'application/x-javascript': 'com.netscape.javascript-source',\n 'application/x-latex': 'org.tug.tex',\n 'application/x-mac-binhex40': 'com.apple.binhex-archive',\n 'application/x-macbinary': 'com.apple.macbinary-archive',\n 'application/x-midi': 'public.midi',\n 'application/x-mpegURL': 'unofficial.m3u8-playlist',\n 'application/x-ms-wmd': 'com.microsoft.windows-media-wmd',\n 'application/x-ms-wmz': 'com.microsoft.windows-media-wmz',\n 'application/x-msdos-program': 'com.microsoft.windows-executable',\n 'application/x-msdownload': 'com.microsoft.windows-executable',\n 'application/x-msexcel': 'com.microsoft.excel.xls',\n 'application/x-mspowerpoint': 'com.microsoft.powerpoint.ppt',\n 'application/x-pdf': 'com.adobe.pdf',\n 'application/x-perl': 'public.perl-script',\n 'application/x-php': 'public.php-script',\n 'application/x-quartzcomposer': 'com.apple.quartz-composer-composition',\n 'application/x-rar-compressed': 'com.rarlab.rar-archive',\n 'application/x-redhat-package': 'com.redhat.redhat-package',\n 'application/x-rpm': 'com.redhat.redhat-package',\n 'application/x-rtf': 'public.rtf',\n 'application/x-sh': 'public.shell-script',\n 'application/x-shellscript': 'public.shell-script',\n 'application/x-shockwave-flash': 'com.macromedia.shockwave-flash',\n 'application/x-sit': 'com.allume.stuffit-archive',\n 'application/x-smil': 'com.real.smil',\n 'application/x-soundfont': 'com.soundblaster.soundfont',\n 'application/x-stuffit': 'com.allume.stuffit-archive',\n 'application/x-tar': 'public.tar-archive',\n 'application/x-tex': 'org.tug.tex',\n 'application/x-texinfo': 'org.tug.tex',\n 'application/x-troff-msvideo': 'public.avi',\n 'application/x-zip-compressed': 'com.pkware.zip-archive',\n 'application/xhtml+xml': 'public.html',\n 'application/xml': 'public.xml',\n 'application/zip': 'com.pkware.zip-archive',\n 'audio/3gpp': 'public.3gpp',\n 'audio/3gpp2': 'public.3gpp2',\n 'audio/aiff': 'public.aiff-audio',\n 'audio/au': 'public.ulaw-audio',\n 'audio/basic': 'public.ulaw-audio',\n 'audio/flac': 'org.xiph.flac',\n 'audio/mid': 'public.midi',\n 'audio/midi': 'public.midi',\n 'audio/mp3': 'public.mp3',\n 'audio/mp4': 'public.mpeg4-audio',\n 'audio/mp4a-latm': 'public.mpeg4-audio',\n 'audio/mpeg': 'public.mp3',\n 'audio/mpeg3': 'public.mp3',\n 'audio/mpegurl': 'unofficial.m3u-playlist',\n 'audio/mpg': 'public.mp3',\n 'audio/ogg': 'org.xiph.ogg-vorbis',\n 'audio/scpls': 'unofficial.pls-playlist',\n 'audio/snd': 'public.ulaw-audio',\n 'audio/vnd.rn-realaudio': 'com.real.realaudio',\n 'audio/wav': 'com.microsoft.waveform-audio',\n 'audio/wave': 'com.microsoft.waveform-audio',\n 'audio/webm': 'public.webm',\n 'audio/x-adpcm': 'public.ulaw-audio',\n 'audio/x-aiff': 'public.aiff-audio',\n 'audio/x-au': 'public.ulaw-audio',\n 'audio/x-flac': 'org.xiph.flac',\n 'audio/x-matroska': 'public.mka',\n 'audio/x-mid': 'public.midi',\n 'audio/x-midi': 'public.midi',\n 'audio/x-mp3': 'public.mp3',\n 'audio/x-mpeg-3': 'public.mp3',\n 'audio/x-mpeg': 'public.mp3',\n 'audio/x-mpeg3': 'public.mp3',\n 'audio/x-mpegurl': 'unofficial.m3u-playlist',\n 'audio/x-mpg': 'public.mp3',\n 'audio/x-ms-wax': 'com.microsoft.windows-media-wax',\n 'audio/x-ms-wma': 'com.microsoft.windows-media-wma',\n 'audio/x-ogg': 'org.xiph.ogg-vorbis',\n 'audio/x-pn-realaudio-plugin': 'com.real.realaudio',\n 'audio/x-pn-realaudio': 'com.real.realaudio',\n 'audio/x-pn-wav': 'com.microsoft.waveform-audio',\n 'audio/x-realaudio': 'com.real.realmedia',\n 'audio/x-scpls': 'unofficial.pls-playlist',\n 'audio/x-wav': 'com.microsoft.waveform-audio',\n 'font/opentype': 'public.opentype-font',\n 'image/bmp': 'com.microsoft.bmp',\n 'image/efax': 'com.js.efx-fax',\n 'image/eps': 'com.adobe.encapsulated-postscript',\n 'image/fpx': 'com.kodak.flashpix.image',\n 'image/gif': 'com.compuserve.gif',\n 'image/indd': 'com.adobe.indesign-image',\n 'image/indesign': 'com.adobe.indesign-image',\n 'image/jp2': 'public.jpeg2000',\n 'image/jpeg': 'public.jpeg',\n 'image/ms-bmp': 'com.microsoft.bmp',\n 'image/photoshop': 'com.adobe.photoshop-image',\n 'image/pict': 'com.apple.pict',\n 'image/pipeg': 'public.jpeg',\n 'image/pjpeg': 'public.jpeg',\n 'image/png': 'public.png',\n 'image/psd': 'com.adobe.photoshop-image',\n 'image/sgi': 'com.sgi.sgi-image',\n 'image/targa': 'com.truevision.tga-image',\n 'image/tga': 'com.truevision.tga-image',\n 'image/tiff': 'public.tiff',\n 'image/vnd.djvu': 'com.lizardtech.djvu',\n 'image/vndfpx': 'com.kodak.flashpix.image',\n 'image/vndnet-fpx': 'com.kodak.flashpix.image',\n 'image/webp': 'public.webp',\n 'image/x-bitmap': 'com.microsoft.bmp',\n 'image/x-bmp': 'com.microsoft.bmp',\n 'image/x-djvu': 'com.lizardtech.djvu',\n 'image/x-eps': 'com.adobe.encapsulated-postscript',\n 'image/x-icon': 'com.microsoft.ico',\n 'image/x-indesign': 'com.adobe.indesign-image',\n 'image/x-macpict': 'com.apple.pict',\n 'image/x-ms-bmp': 'com.microsoft.bmp',\n 'image/x-photoshop': 'com.adobe.photoshop-image',\n 'image/x-pict': 'com.apple.pict',\n 'image/x-quicktime': 'com.apple.quicktime-image',\n 'image/x-tiff': 'public.tiff',\n 'image/x-windows-bmp': 'com.microsoft.bmp',\n 'image/x-xbitmap': 'com.microsoft.bmp',\n 'image/x-xbm': 'public.xbitmap-image',\n 'image/xbm': 'public.xbitmap-image',\n 'multipart/x-gzip': 'org.gnu.gnu-zip-archive',\n 'multipart/x-zip': 'com.pkware.zip-archive',\n 'music/crescendo': 'public.midi',\n 'text/calendar': 'com.apple.ical.ics',\n 'text/css': 'public.css',\n 'text/directory': 'public.vcard',\n 'text/ecmascript': 'com.netscape.javascript-source',\n 'text/html': 'public.html',\n 'text/javascript': 'com.netscape.javascript-source',\n 'text/php': 'public.php-script',\n 'text/plain': 'public.plain-text',\n 'text/richtext': 'public.rtf',\n 'text/rtf': 'public.rtf',\n 'text/ruby-script': 'public.ruby-script',\n 'text/tex': 'org.tug.tex',\n 'text/vcard': 'public.vcard',\n 'text/vnd.sun.j2me.app-descriptor': 'com.sun.java-app-descriptor',\n 'text/x-asm': 'public.assembly-source',\n 'text/x-c-code': 'public.c-source',\n 'text/x-c-header': 'public.c-header',\n 'text/x-c': 'public.c-source',\n 'text/x-c++-code': 'public.c-plus-plus-source',\n 'text/x-c++-hdr': 'public.c-plus-plus-header',\n 'text/x-c++-src': 'public.c-plus-plus-source',\n 'text/x-c++src': 'public.c-plus-plus-source',\n 'text/x-h': 'public.c-header',\n 'text/x-java-source': 'com.sun.java-source',\n 'text/x-latex': 'org.tug.tex',\n 'text/x-objcppsrc': 'public.objective-c-plus-plus-source',\n 'text/x-objcsrc': 'public.objective-c-source',\n 'text/x-opml': 'unofficial.opml',\n 'text/x-perl-script': 'public.perl-script',\n 'text/x-perl': 'public.perl-script',\n 'text/x-php-script': 'public.php-script',\n 'text/x-python-script': 'public.python-script',\n 'text/x-python': 'public.python-script',\n 'text/x-scriptcsh': 'public.csh-script',\n 'text/x-scriptperl-module': 'public.perl-script',\n 'text/x-scriptperl': 'public.perl-script',\n 'text/x-scriptphyton': 'public.python-script',\n 'text/x-scriptsh': 'public.shell-script',\n 'text/x-server-parsed-html': 'public.html',\n 'text/x-tex': 'org.tug.tex',\n 'text/x-vcalendar': 'com.apple.ical.vcs',\n 'text/x-vcard': 'public.vcard',\n 'text/xhtml': 'public.html',\n 'text/xml': 'public.xml',\n 'video/3gpp': 'public.3gpp',\n 'video/3gpp2': 'public.3gpp2',\n 'video/avi': 'public.avi',\n 'video/MP2T': 'public.mpegts',\n 'video/mp4': 'public.mpeg4',\n 'video/mp4v': 'public.mpeg4',\n 'video/mpeg': 'public.mpeg',\n 'video/mpg': 'public.mpeg',\n 'video/msvideo': 'public.avi',\n 'video/ogg': 'org.xiph.ogg-theora',\n 'video/quicktime': 'com.apple.quicktime-movie',\n 'video/webm': 'public.webm',\n 'video/x-dv': 'public.dv',\n 'video/x-flv': 'public.flv',\n 'video/x-m4v': 'public.mpeg4',\n 'video/x-matroska': 'public.mkv',\n 'video/x-mpeg': 'public.mpeg',\n 'video/x-mpg': 'public.mpeg',\n 'video/x-ms-asf-plugin': 'com.microsoft.advanced-systems-format',\n 'video/x-ms-asf': 'com.microsoft.advanced-systems-format',\n 'video/x-ms-asx': 'com.microsoft.advanced-stream-redirector',\n 'video/x-ms-wm': 'com.microsoft.windows-media-wm',\n 'video/x-ms-wmd': 'com.microsoft.windows-media-wmd',\n 'video/x-ms-wmp': 'com.microsoft.windows-media-wmp',\n 'video/x-ms-wmv': 'com.microsoft.windows-media-wmv',\n 'video/x-ms-wmx': 'com.microsoft.windows-media-wmx',\n 'video/x-ms-wmz': 'com.microsoft.windows-media-wmz',\n 'video/x-ms-wvx': 'com.microsoft.windows-media-wvx',\n 'video/x-msvideo': 'public.avi',\n 'video/x-ogg': 'org.xiph.ogg-theora',\n 'x-msdos-program': 'com.microsoft.windows-executable',\n 'x-music/x-midi': 'public.midi',\n }\n dataOwnerApi: IccDataOwnerXApi\n authenticationProvider: AuthenticationProvider\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n private authApi: IccAuthApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.fetchImpl = fetchImpl\n this.authenticationProvider = authenticationProvider\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of document with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param message the message this document refers to.\n * @param c initialised data for the document. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of document.\n */\n async newInstance(\n user: models.User,\n message?: models.Message,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ) {\n if (!message && options.preferredSfk) throw new Error('You need to specify parent message in order to use secret foreign keys.')\n const document = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Document',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n c\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = message ? options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(message)) : undefined\n if (message && !sfk) throw new Error(`Couldn't find any sfk of parent message ${message.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Document(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(document, message?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n async findByMessage(hcpartyId: string, message: models.Message) {\n const extractedKeys = await this.crypto.entities.secretIdsOf(message, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let documents: Array = await this.findDocumentsByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n return await this.decrypt(hcpartyId, documents)\n }\n\n // Note: this is only for dealing with legacy documents: new document are not encrypted, only their attachments are\n decrypt(hcpartyId: string, documents: Array): Promise> {\n return Promise.all(\n documents.map((document) =>\n this.crypto\n .extractKeysFromDelegationsForHcpHierarchy(\n hcpartyId,\n document.id!,\n _.size(document.encryptionKeys) ? document.encryptionKeys! : document.delegations!\n )\n .then(({ extractedKeys: sfks }) => {\n if (!sfks || !sfks.length) {\n console.log('Cannot decrypt document', document.id)\n return Promise.resolve(document)\n }\n\n if (sfks.length && (document.encryptedSelf || document.encryptedAttachment)) {\n return this.crypto.AES.importKey('raw', hex2ua(sfks[0].replace(/-/g, '')))\n .then((key: CryptoKey) =>\n Promise.all([\n document.encryptedSelf\n ? new Promise((resolve: (value: ArrayBuffer | null) => any) => {\n this.crypto.AES.decrypt(key, string2ua(a2b(document.encryptedSelf!))).then(resolve, () => {\n console.log('Cannot decrypt document', document.id)\n resolve(null)\n })\n })\n : Promise.resolve(null),\n document.encryptedAttachment\n ? new Promise((resolve: (value: ArrayBuffer | null) => any) => {\n this.crypto.AES.decrypt(key, document.encryptedAttachment!).then(resolve, () => {\n console.log('Cannot decrypt document', document.id)\n resolve(null)\n })\n })\n : Promise.resolve(null),\n ])\n )\n .then((decrypted: [ArrayBuffer | null, ArrayBuffer | null]) => {\n if (decrypted) {\n if (decrypted[0]) {\n document = _.extend(document, JSON.parse(ua2string(decrypted[0])))\n }\n if (decrypted[1]) {\n document.decryptedAttachment = decrypted[1]\n }\n }\n return document\n })\n } else {\n return Promise.resolve(document)\n }\n })\n )\n ).catch(function (e: Error) {\n console.log(e)\n return Promise.resolve(documents)\n })\n }\n\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"application/octet-stream\", enckeys?: string, fileName?: string): Promise\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"text/plain\", enckeys?: string, fileName?: string): Promise\n //prettier-ignore\n getAttachmentAs(documentId: string, attachmentId: string, returnType: \"application/json\", enckeys?: string, fileName?: string): Promise\n getAttachmentAs(\n documentId: string,\n attachmentId: string,\n returnType: 'application/octet-stream' | 'text/plain' | 'application/json',\n enckeys?: string,\n fileName?: string\n ): Promise {\n const url =\n this.host +\n `/document/${documentId}/attachment/${attachmentId}` +\n '?ts=' +\n new Date().getTime() +\n (enckeys ? `&enckeys=${enckeys}` : '') +\n (fileName ? `&fileName=${fileName}` : '')\n return XHR.sendCommand('GET', url, this.headers, null, this.fetchImpl, returnType, this.authenticationProvider.getAuthService())\n .then((doc) => doc.body)\n .catch((err) => this.handleError(err))\n }\n\n // noinspection JSUnusedGlobalSymbols\n getAttachmentUrl(documentId: string, attachmentId: string, sfks: Array<{ delegatorId: string; key: CryptoKey }>, fileName?: string) {\n return this.authApi\n .token('GET', `/rest/v1/document/${documentId}/attachment/${attachmentId}`)\n .then(\n (token) =>\n this.host +\n `/document/${documentId}/attachment/${attachmentId}${token ? `;tokenid=${token}` : ''}` +\n (sfks && sfks.length ? '?enckeys=' + sfks.join(',') : '') +\n (fileName && fileName.length ? `${sfks && sfks.length ? '&' : '?'}fileName=${encodeURIComponent(fileName)}` : '')\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n uti(mimeType: string, extension: string) {\n return (mimeType && mimeType !== 'application/octet-stream' ? this.utiDefs[mimeType] : this.utiExts[extension]) || this.utiDefs[mimeType]\n }\n\n // noinspection JSUnusedGlobalSymbols\n mimeType(uti: string) {\n return this.utiRevDefs[uti]\n }\n\n /**\n * Adds an attachment to a document, encrypting it on client side using the encryption keys of the provided document.\n * @param document a document.\n * @param attachment a new main attachment for the document.\n * @return the updated document.\n */\n async encryptAndSetDocumentAttachment(document: models.Document, attachment: ArrayBuffer | Uint8Array): Promise {\n const encryptedData = await this.crypto.entities.encryptDataOf(document, attachment)\n return await this.setDocumentAttachment(document.id!, undefined, encryptedData)\n }\n\n /**\n * Adds an unencrypted attachment to a document.\n * @param document a document.\n * @param attachment a new main attachment for the document.\n * @return the updated document.\n */\n async setClearDocumentAttachment(document: models.Document, attachment: ArrayBuffer | Uint8Array): Promise {\n return await this.setDocumentAttachment(document.id!, undefined, attachment)\n }\n\n /**\n * Adds a secondary attachment to a document, encrypting it on client side using the encryption keys of the provided document.\n * @param document a document.\n * @param secondaryAttachmentKey key for the secondary attachment.\n * @param attachment a new secondary attachment for the document.\n * @return the updated document.\n */\n async encryptAndSetSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n attachment: ArrayBuffer | Uint8Array\n ): Promise {\n const encryptedData = await this.crypto.entities.encryptDataOf(document, attachment)\n return await this.setSecondaryAttachment(document.id!, secondaryAttachmentKey, document.rev!, encryptedData)\n }\n\n /**\n * Adds an unencrypted secondary attachment to a document.\n * @param document a document.\n * @param secondaryAttachmentKey key for the secondary attachment.\n * @param attachment a new secondary attachment for the document.\n * @return the updated document.\n */\n async setClearSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n attachment: ArrayBuffer | Uint8Array\n ): Promise {\n return await this.setSecondaryAttachment(document.id!, secondaryAttachmentKey, document.rev!, attachment)\n }\n\n /**\n * Gets the main attachment of a document and tries to decrypt it using the encryption keys of the document, throwing an error if the operation fails.\n * @param document a document.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptDocumentAttachment(\n document: models.Document,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const { data, wasDecrypted } = await this.crypto.entities.tryDecryptDataOf(\n document,\n await this.getDocumentAttachment(document.id!, 'ignored'),\n (x) => validator(x)\n )\n if (!wasDecrypted) throw new Error(`No valid key found to decrypt data of document ${document.id}.`)\n return data\n }\n\n /**\n * Gets the main attachment of a document and tries to decrypt it using the encryption keys of the document.\n * @param document a document.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptDocumentAttachment(\n document: models.Document,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.entities.tryDecryptDataOf(document, await this.getDocumentAttachment(document.id!, 'ignored'), (x) => validator(x))\n }\n\n /**\n * Gets the secondary attachment of a document and tries to decrypt it using the encryption keys of the document, throwing an error if the operation fails.\n * @param document a document.\n * @param secondaryAttachmentKey key of the secondary attachment.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment.\n */\n async getAndDecryptSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const { data, wasDecrypted } = await this.crypto.entities.tryDecryptDataOf(\n document,\n await this.getSecondaryAttachment(document.id!, secondaryAttachmentKey),\n (x) => validator(x)\n )\n if (!wasDecrypted) throw new Error(`No valid key found to decrypt data of document ${document.id}.`)\n return data\n }\n\n /**\n * Gets the secondary attachment of a document and tries to decrypt it using the encryption keys of the document.\n * @param document a document.\n * @param secondaryAttachmentKey key of the secondary attachment.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the document has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptSecondaryDocumentAttachment(\n document: models.Document,\n secondaryAttachmentKey: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.entities.tryDecryptDataOf(document, await this.getSecondaryAttachment(document.id!, secondaryAttachmentKey), (x) =>\n validator(x)\n )\n }\n\n /**\n * @param document a document\n * @return the id of the message that the document refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptMessageIdOf(document: models.Document): Promise {\n return this.crypto.entities.owningEntityIdsOf(document, undefined)\n }\n\n /**\n * Share an existing document with other data owners, allowing them to access the non-encrypted data of the document and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the document.\n * @param document the document to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareMessageId: specifies if the id of the message that this document refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated document.\n */\n async shareWith(\n delegateId: string,\n document: models.Document,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n shareMessageId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(document, { [delegateId]: options })\n }\n\n /**\n * Share an existing document with other data owners, allowing them to access the non-encrypted data of the document and optionally also\n * the encrypted content.\n * @param document the document to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareMessageId: specifies if the id of the message that this document refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated document.\n */\n async shareWithMany(\n document: models.Document,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n shareMessageId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n document,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.shareMessageId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyDocument(extended)\n } else return document\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.Document\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Document): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccFormApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\n\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccFormXApi extends IccFormApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of form with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this form refers to.\n * @param c initialised data for the form. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of form.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n c: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ) {\n const form = _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Form',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n c || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Form(\n await this.crypto.entities.entityWithInitialisedEncryptedMetadata(form, patient.id, sfk, true, extraDelegations).then((x) => x.updatedEntity)\n )\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all contacts with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the contacts of the patient.\n *\n * @param hcpartyId\n * @param patient\n * @param usingPost (Promise)\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false) {\n const extractedKeys = await this.crypto.entities.secretIdsOf(patient, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let forms: Array = usingPost\n ? await this.findFormsByHCPartyPatientForeignKeysUsingPost(topmostParentId, undefined, undefined, undefined, _.uniq(extractedKeys))\n : await this.findFormsByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n return await this.decrypt(hcpartyId, forms)\n }\n\n decrypt(hcpartyId: string, forms: Array) {\n return Promise.all(\n forms.map((form) => this.crypto.entities.decryptEntity(form, hcpartyId, (x) => new models.Form(x)).then(({ entity }) => entity))\n )\n }\n\n /**\n * @param form a form\n * @return the id of the patient that the form refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(form: models.Form): Promise {\n return this.crypto.entities.owningEntityIdsOf(form, undefined)\n }\n\n /**\n * Share an existing form with other data owners, allowing them to access the non-encrypted data of the form and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the form.\n * @param form the form to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * form does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this form refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated form.\n */\n async shareWith(\n delegateId: string,\n form: models.Form,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(form, { [delegateId]: options })\n }\n /**\n * Share an existing form with other data owners, allowing them to access the non-encrypted data of the form and optionally also\n * the encrypted content.\n * @param form the form to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * form does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this form refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated form.\n */\n async shareWithMany(\n form: models.Form,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n form,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyForm(extended)\n } else return form\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.Form\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Form): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccHcpartyApi } from '../icc-api'\nimport { HealthcareParty } from '../icc-api/model/HealthcareParty'\nimport * as models from '../icc-api/model/models'\nimport { findName, garnishPersonWithName, hasName } from './utils/person-util'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccHcpartyXApi extends IccHcpartyApi {\n hcPartyKeysCache: { [key: string]: { [key: string]: string } } = {}\n hcPartyCache: { [key: string]: [number, Promise] } = {}\n\n private CACHE_RETENTION_IN_MS = 300_000\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n }\n\n private getHcPartyFromCache(key: string) {\n const hcpInCache = this.hcPartyCache[key]\n const now = Date.now()\n if (hcpInCache && hcpInCache[0] > now) {\n return hcpInCache[1]\n }\n if (!hcpInCache) {\n console.log(`Cache miss for key ${key} because not in cache`)\n } else {\n console.log(`Cache miss for key ${key} because ${hcpInCache[0]} > ${now}`)\n }\n return null\n }\n\n completeNames(hcParty?: models.HealthcareParty): models.HealthcareParty | undefined {\n if (!hcParty) {\n return hcParty\n }\n\n let finalHcParty = hcParty\n\n if ((!!finalHcParty.lastName || !!finalHcParty.name) && !hasName(finalHcParty, models.PersonName.UseEnum.Official)) {\n finalHcParty = garnishPersonWithName(\n finalHcParty,\n models.PersonName.UseEnum.Official,\n finalHcParty.lastName,\n finalHcParty.firstName,\n finalHcParty.name\n )\n }\n\n if ((!finalHcParty.lastName || !finalHcParty.name) && !!hasName(finalHcParty, models.PersonName.UseEnum.Official)) {\n let officialName = findName(finalHcParty, models.PersonName.UseEnum.Official)\n finalHcParty = {\n ...finalHcParty,\n lastName: officialName!.lastName,\n firstName: officialName!.firstNames ? officialName!.firstNames[0] : undefined,\n name: officialName!.text,\n }\n }\n\n return finalHcParty\n }\n\n putHcPartyInCache(key: string, value: Promise | null = null): Promise {\n const hcp =\n value ||\n super.getHealthcareParty(key).catch((e) => {\n console.log(`Evict key ${key} because of error`)\n delete this.hcPartyCache[key]\n throw e\n })\n this.hcPartyCache[key] = [Date.now() + this.CACHE_RETENTION_IN_MS, hcp]\n return hcp\n }\n\n createHealthcareParty(body?: HealthcareParty): Promise {\n return super.createHealthcareParty(this.completeNames(body))\n }\n\n createHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise {\n return super.createHealthcarePartyInGroup(groupId, this.completeNames(body))\n }\n\n modifyHealthcareParty(body?: HealthcareParty): Promise {\n if (body && body.id) {\n console.log(`Evict key ${body.id} because of modification`)\n delete this.hcPartyCache[body.id]\n }\n\n return super.modifyHealthcareParty(this.completeNames(body)).then((hcp) => this.putHcPartyInCache(hcp.id!, Promise.resolve(hcp)))\n }\n\n getHealthcareParty(healthcarePartyId: string, bypassCache = false): Promise {\n const fromCache = bypassCache ? undefined : this.getHcPartyFromCache(healthcarePartyId)\n return fromCache || this.putHcPartyInCache(healthcarePartyId)\n }\n\n getHealthcarePartyHierarchyIds(healthcarePartyId: string, bypassCache = false): Promise {\n const fromCache = bypassCache ? undefined : this.getHcPartyFromCache(healthcarePartyId)\n return (fromCache || this.putHcPartyInCache(healthcarePartyId)).then(async (hcp: HealthcareParty) => {\n return hcp ? (hcp.parentId ? (await this.getHealthcarePartyHierarchyIds(hcp.parentId!, bypassCache)).concat([hcp.id!]) : [hcp.id!]) : []\n })\n }\n\n getHealthcareParties(healthcarePartyIds: string): Promise | any> {\n const ids = healthcarePartyIds.split(',').filter((x) => !!x)\n const cached: Array<[string, Promise | null]> = ids.map((id) => [id, this.getHcPartyFromCache(id)])\n const toFetch = cached.filter((x) => !x[1]).map((x) => x[0])\n\n if (!toFetch.length) {\n return Promise.all(cached.map((x) => x[1]!))\n }\n\n const prom: Promise = super.getHealthcareParties(toFetch.join(','))\n return Promise.all(\n cached.map(\n (x) =>\n x[1] ||\n this.putHcPartyInCache(\n x[0],\n prom.then((hcps) => hcps.find((h) => h.id === x[0])!)\n )\n )\n )\n }\n\n getCurrentHealthcareParty(): Promise {\n return super.getCurrentHealthcareParty().then((hcp) => this.putHcPartyInCache(hcp.id!, Promise.resolve(hcp)))\n }\n\n getHcPartyKeysForDelegate(healthcarePartyId: string, bypassCache = false): Promise<{ [key: string]: string }> {\n const cached = bypassCache ? null : this.hcPartyKeysCache[healthcarePartyId]\n return cached\n ? Promise.resolve(cached)\n : super.getHcPartyKeysForDelegate(healthcarePartyId).then((r) => (this.hcPartyKeysCache[healthcarePartyId] = r))\n }\n\n isValidCbe(cbe: string) {\n cbe = cbe.replace(new RegExp('[^(0-9)]', 'g'), '')\n cbe = cbe.length == 9 ? '0' + cbe : cbe\n\n return 97 - (Number(cbe.substring(0, 8)) % 97) === Number(cbe.substring(8, 2))\n }\n}\n","import { IccHelementApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as models from '../icc-api/model/models'\n\nimport * as _ from 'lodash'\nimport * as moment from 'moment'\nimport { FilterChainHealthElement, HealthElement, PaginatedListHealthElement } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccHelementXApi extends IccHelementApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n private readonly encryptedKeys: Array\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n encryptedKeys: Array = ['descr', 'note'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n this.encryptedKeys = encryptedKeys\n }\n\n /**\n * Creates a new instance of health element with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this health element refers to.\n * @param h initialised data for the health element. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * - confidential: if true, the entity will be created as confidential. Confidential entities are not shared with auto-delegations, and the default\n * foreign key used is any key that is not shared with any of the data owner parents. By default entities are created as non-confidential.\n * @return a new instance of health element.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n h: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n confidential?: boolean\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n const helement = _.assign(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.HealthElement',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: dataOwnerId,\n author: user.id,\n codes: [],\n tags: [],\n healthElementId: this.crypto.primitives.randomUuid(),\n openingDate: parseInt(moment().format('YYYYMMDDHHmmss')),\n },\n h || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk =\n options.preferredSfk ??\n (!!options.confidential\n ? await this.crypto.confidential.getConfidentialSecretId(patient)\n : await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id} for confidential=${!!options.confidential}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(options.confidential ? [] : [...(user.autoDelegations?.all ?? []), ...(user.autoDelegations?.medicalInformation ?? [])]),\n ]\n const initialisationInfo = await this.crypto.entities.entityWithInitialisedEncryptedMetadata(helement, patient.id, sfk, true, extraDelegations)\n return new models.HealthElement(initialisationInfo.updatedEntity)\n }\n\n createHealthElement(body?: models.HealthElement): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n createHealthElementWithUser(user: models.User, body?: models.HealthElement): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((hes) => super.createHealthElement(hes[0]))\n .then((he) => this.decryptWithUser(user, [he]))\n .then((hes) => hes[0])\n : Promise.resolve(null)\n }\n\n createHealthElements(body?: Array): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n createHealthElementsWithUser(user: models.User, bodies?: models.HealthElement[]): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((hes) => super.createHealthElements(hes))\n .then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n : Promise.resolve(null)\n }\n\n getHealthElement(healthElementId: string): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n getHealthElementWithUser(user: models.User, healthElementId: string): Promise {\n return super\n .getHealthElement(healthElementId)\n .then((he) => this.decryptWithUser(user, [he]))\n .then((hes) => hes[0])\n }\n\n getHealthElements(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n getHealthElementsWithUser(user: models.User, body?: models.ListOfIds): Promise {\n return super.getHealthElements(body).then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n }\n\n newHealthElementDelegations(healthElementId: string, body?: Array): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n newHealthElementDelegationsWithUser(user: models.User, healthElementId: string, body?: Array): Promise {\n return super\n .newHealthElementDelegations(healthElementId, body)\n .then((he) => this.decryptWithUser(user, [he]))\n .then((he) => he[0])\n }\n\n findHealthElementsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n findHealthElementsByHCPartyPatientForeignKeysWithUser(user: models.User, hcPartyId: string, secretFKeys: string): Promise {\n return super.findHealthElementsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((hes) => this.decryptWithUser(user, hes))\n }\n\n findHealthElementsByHCPartyPatientForeignKeysArrayWithUser(user: models.User, hcPartyId: string, secretFKeys: string[]): Promise {\n return super.findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys).then((hes) => this.decryptWithUser(user, hes))\n }\n\n async findHealthElementsByHCPartyAndPatientWithUser(\n user: models.User,\n hcPartyId: string,\n patient: models.Patient,\n usingPost: boolean = false\n ): Promise {\n let keysAndHcPartyId = await this.crypto.entities.secretIdsForHcpHierarchyOf(patient)\n const keys = keysAndHcPartyId.find((secretForeignKeys) => secretForeignKeys.ownerId == hcPartyId)?.extracted\n if (keys == undefined) {\n throw Error('No delegation for user')\n }\n return usingPost\n ? this.findHealthElementsByHCPartyPatientForeignKeysArrayWithUser(user, hcPartyId, keys)\n : this.findHealthElementsByHCPartyPatientForeignKeysWithUser(user, hcPartyId, keys.join(','))\n }\n\n modifyHealthElement(body?: HealthElement): never {\n throw new Error('Cannot call a method that returns health element without providing a user for de/encryption')\n }\n\n modifyHealthElementWithUser(user: models.User, body?: HealthElement): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n private modifyAs(dataOwner: string, body: HealthElement): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((hes) => super.modifyHealthElement(hes[0]))\n .then((he) => this.decrypt(dataOwner, [he]))\n .then((hes) => hes[0])\n }\n\n modifyHealthElements(body?: Array): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n modifyHealthElementsWithUser(user: models.User, bodies?: HealthElement[]): Promise {\n return bodies\n ? this.encrypt(\n user,\n bodies.map((c) => _.cloneDeep(c))\n )\n .then((hes) => super.modifyHealthElements(hes))\n .then((hes) => this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes))\n : Promise.resolve(null)\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all helements with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the helements of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param keepObsoleteVersions\n * @param usingPost\n */\n\n findBy(hcpartyId: string, patient: models.Patient, keepObsoleteVersions = false, usingPost = false) {\n return this.crypto.entities\n .secretIdsForHcpHierarchyOf(patient)\n .then((secretForeignKeys) =>\n secretForeignKeys && secretForeignKeys.length > 0\n ? Promise.all(\n secretForeignKeys\n .reduce((acc, level) => {\n return acc.concat([\n {\n hcpartyId: level.ownerId,\n extractedKeys: level.extracted.filter((key) => !acc.some((previousLevel) => previousLevel.extractedKeys.includes(key))),\n },\n ])\n }, [] as Array<{ hcpartyId: string; extractedKeys: Array }>)\n .filter((l) => l.extractedKeys.length > 0)\n .map(({ hcpartyId, extractedKeys }) =>\n usingPost\n ? this.findByHCPartyPatientSecretFKeysArray(hcpartyId, _.uniq(extractedKeys))\n : this.findByHCPartyPatientSecretFKeys(hcpartyId, _.uniq(extractedKeys).join(','))\n )\n ).then((results) => _.uniqBy(_.flatMap(results), (x) => x.id))\n : Promise.resolve([])\n )\n .then((decryptedHelements: Array) => {\n const byIds: { [key: string]: models.HealthElement } = {}\n\n if (keepObsoleteVersions) {\n return decryptedHelements\n } else {\n decryptedHelements.forEach((he) => {\n if (he.healthElementId) {\n const phe = byIds[he.healthElementId]\n if (!phe || !phe.modified || (he.modified && phe.modified < he.modified)) {\n byIds[he.healthElementId] = he\n }\n }\n })\n return _.values(byIds).filter((s: any) => !s.endOfLife)\n }\n })\n }\n\n findByHCPartyPatientSecretFKeys(hcPartyId: string, secretFKeys: string): Promise | any> {\n return super.findHealthElementsByHCPartyPatientForeignKeys(hcPartyId, secretFKeys).then((helements) => this.decrypt(hcPartyId, helements))\n }\n\n findByHCPartyPatientSecretFKeysArray(hcPartyId: string, secretFKeys: string[]): Promise | any> {\n return super\n .findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId, secretFKeys)\n .then((helements) => this.decrypt(hcPartyId, helements))\n }\n\n encrypt(user: models.User, healthElements: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), healthElements)\n }\n\n private encryptAs(owner: string, healthElements: Array): Promise> {\n return Promise.all(\n healthElements.map((he) =>\n this.crypto.entities.tryEncryptEntity(he, owner, this.encryptedKeys, false, true, (x) => new models.HealthElement(x))\n )\n )\n }\n\n decryptWithUser(user: models.User, hes: Array): Promise> {\n return this.decrypt(this.dataOwnerApi.getDataOwnerIdOf(user), hes)\n }\n\n decrypt(dataOwnerId: string, hes: Array): Promise> {\n return Promise.all(\n hes.map((he) => this.crypto.entities.decryptEntity(he, dataOwnerId, (x) => new models.HealthElement(x)).then(({ entity }) => entity))\n )\n }\n\n filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement): never {\n throw new Error('Cannot call a method that returns health elements without providing a user for de/encryption')\n }\n\n filterByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: FilterChainHealthElement\n ): Promise {\n return super\n .filterHealthElementsBy(startDocumentId, limit, body)\n .then((pl) => this.decryptWithUser(user, pl.rows!).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n // noinspection JSUnusedGlobalSymbols\n serviceToHealthElement(user: models.User, patient: models.Patient, heSvc: models.Service, descr: string) {\n return this.newInstance(user, patient, {\n idService: heSvc.id,\n author: heSvc.author,\n responsible: heSvc.responsible,\n openingDate: heSvc.valueDate || heSvc.openingDate,\n descr: descr,\n idOpeningContact: heSvc.contactId,\n modified: heSvc.modified,\n created: heSvc.created,\n codes: heSvc.codes,\n tags: heSvc.tags,\n }).then((he) => {\n return this.createHealthElement(he)\n })\n }\n\n // noinspection JSUnusedGlobalSymbols, JSMethodCanBeStatic\n stringToCode(code: string) {\n const c = code.split('|')\n return new models.Code({\n type: c[0],\n code: c[1],\n version: c[2],\n id: code,\n })\n }\n\n /**\n * @param healthElement a health element\n * @return the id of the patient that the health element refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(healthElement: models.HealthElement): Promise {\n return this.crypto.entities.owningEntityIdsOf(healthElement, undefined)\n }\n\n /**\n * Share an existing health element with other data owners, allowing them to access the non-encrypted data of the health element and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the health element.\n * @param healthElement the health element to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * health element does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this health element refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated health element.\n */\n async shareWith(\n delegateId: string,\n healthElement: models.HealthElement,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(healthElement, { [delegateId]: options })\n }\n /**\n * Share an existing health element with other data owners, allowing them to access the non-encrypted data of the health element and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param healthElement the health element to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * health element does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this health element refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated health element.\n */\n async shareWithMany(\n healthElement: models.HealthElement,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n healthElement,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return healthElement\n }\n\n async getDataOwnersWithAccessTo(\n entity: HealthElement\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: HealthElement): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { KeyPair } from './crypto/RSA'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { MaintenanceTask } from '../icc-api/model/MaintenanceTask'\nimport { ua2hex } from './utils'\nimport { PropertyStub } from '../icc-api/model/PropertyStub'\nimport { PropertyTypeStub } from '../icc-api/model/PropertyTypeStub'\nimport { TypedValueObject } from '../icc-api/model/TypedValueObject'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { KeyPairUpdateRequest } from './maintenance/KeyPairUpdateRequest'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { User } from '../icc-api/model/User'\nimport { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum'\n\ntype ExchangeKeyInfo = { delegator: string; delegate: string; fingerprints: Set }\n\n/**\n * Api for interpreting maintenance tasks and applying required client-side actions.\n */\nexport class IccIcureMaintenanceXApi {\n private readonly crypto: IccCryptoXApi\n private readonly tasksApi: IccMaintenanceTaskXApi\n private readonly dataOwnerApi: IccDataOwnerXApi\n\n constructor(crypto: IccCryptoXApi, tasksApi: IccMaintenanceTaskXApi, dataOwnerApi: IccDataOwnerXApi) {\n this.crypto = crypto\n this.tasksApi = tasksApi\n this.dataOwnerApi = dataOwnerApi\n }\n\n // TODO api to get all tasks for current owner from owner with id\n\n /**\n * Applies a key pair update request between another data owner and the current data owner to allow the other data owner to access existing exchange\n * keys shared with the current data owner. IMPORTANT: it is your responsibility to verify the authenticity of the public key / update request\n * before calling this method: this method assumes the new public key for the concerned data owner is authentic.\n * @param update a keypair update request to the current data owner.\n */\n async applyKeyPairUpdate(update: KeyPairUpdateRequest) {\n await this.crypto.exchangeKeys.base.giveAccessBackTo(\n update.concernedDataOwnerId,\n update.newPublicKey,\n this.crypto.userKeysManager.getDecryptionKeys()\n )\n }\n\n /**\n * @internal This method is intended only for internal use and may be changed without notice.\n * Creates the necessary maintenance tasks to request access to existing exchange keys with the new key pair for the current user.\n * @param user the user which owns the new key pair.\n * @param keypair a new key pair for the current user.\n */\n async createMaintenanceTasksForNewKeypair(user: User, keypair: KeyPair): Promise {\n const currentUserType = await this.dataOwnerApi.getCurrentDataOwnerType()\n if (currentUserType === DataOwnerTypeEnum.Device) {\n console.warn('Current data owner is a device and there is no need to create maintenance tasks for updated keypair.')\n } else if (currentUserType === DataOwnerTypeEnum.Patient || currentUserType === DataOwnerTypeEnum.Hcp) {\n const requestsToOwnerTypes =\n currentUserType === DataOwnerTypeEnum.Patient ? [DataOwnerTypeEnum.Patient, DataOwnerTypeEnum.Hcp] : [DataOwnerTypeEnum.Hcp]\n const hexNewPubKey = ua2hex(await this.crypto.primitives.RSA.exportKey(keypair.publicKey, 'spki'))\n const hexNewPubKeyFp = hexNewPubKey.slice(-32)\n const selfId = await this.dataOwnerApi.getCurrentDataOwnerId()\n const keysInfo = await this.getExchangeKeysInfosOf(selfId, requestsToOwnerTypes)\n const requestDataOwners = new Set(\n keysInfo\n .filter((info) => !info.fingerprints.has(hexNewPubKeyFp))\n .flatMap((info) => [info.delegate, info.delegator])\n .filter((dataOwner) => dataOwner !== selfId)\n )\n if (requestDataOwners.size > 0) {\n const tasksToCreate = [...requestDataOwners].map((dataOwner) => ({\n delegate: dataOwner,\n task: this.createMaintenanceTask(selfId, hexNewPubKey),\n }))\n for (const taskToCreate of tasksToCreate) {\n const instance = await this.tasksApi.newInstance(user, taskToCreate.task, { additionalDelegates: { [taskToCreate.delegate]: 'WRITE' } })\n if (instance) {\n // TODO create in bulk\n await this.tasksApi.createMaintenanceTaskWithUser(user, instance)\n }\n }\n }\n } else throw new Error(`Unknown data owner type for current user ${currentUserType}`)\n }\n\n private async getExchangeKeysInfosOf(dataOwnerId: string, otherOwnerTypes: DataOwnerTypeEnum[]): Promise {\n const allExchangeKeys = await this.crypto.exchangeKeys.base.getAllExchangeKeysWith(dataOwnerId, otherOwnerTypes)\n const infoTo = Object.entries(allExchangeKeys.keysToOwner).flatMap(([delegatorId, delegatorFpToKeys]) =>\n Object.values(delegatorFpToKeys).map((encryptedKeys) => ({\n delegator: delegatorId,\n delegate: dataOwnerId,\n fingerprints: new Set(Object.keys(encryptedKeys).map((x) => x.slice(-32))),\n }))\n )\n const infoFrom = Object.values(allExchangeKeys.keysFromOwner).flatMap((delegateIdToKeys) =>\n Object.entries(delegateIdToKeys).map(([delegateId, encryptedKeys]) => ({\n delegator: dataOwnerId,\n delegate: delegateId,\n fingerprints: new Set(Object.keys(encryptedKeys).map((x) => x.slice(-32))),\n }))\n )\n return [...infoFrom, ...infoTo]\n }\n\n private createMaintenanceTask(ownerId: string, concernedPubKey: string) {\n return new MaintenanceTask({\n id: this.crypto.primitives.randomUuid(),\n taskType: KeyPairUpdateRequest.TASK_TYPE,\n status: MaintenanceTask.StatusEnum.Pending,\n properties: [\n new PropertyStub({\n id: KeyPairUpdateRequest.OWNER_ID_PROP_ID,\n type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),\n typedValue: new TypedValueObject({\n type: TypedValueObject.TypeEnum.STRING,\n stringValue: ownerId,\n }),\n }),\n new PropertyStub({\n id: KeyPairUpdateRequest.OWNER_PUB_PROP_ID,\n type: new PropertyTypeStub({ type: PropertyTypeStub.TypeEnum.STRING }),\n typedValue: new TypedValueObject({\n type: TypedValueObject.TypeEnum.STRING,\n stringValue: concernedPubKey,\n }),\n }),\n ],\n })\n }\n}\n","import { IccEntityrefApi, IccInvoiceApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { Invoice } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccInvoiceXApi extends IccInvoiceApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n entityrefApi: IccEntityrefApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n entityrefApi: IccEntityrefApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.entityrefApi = entityrefApi\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of invoice with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this invoice refers to.\n * @param inv initialised data for the invoice. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of invoice.\n */\n async newInstance(\n user: models.User,\n patient: models.Patient,\n inv: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ): Promise {\n const invoice = new models.Invoice(\n _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n groupId: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Invoice',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n invoicingCodes: [],\n },\n inv || {}\n )\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = options.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient))\n if (!sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.financialInformation ?? []),\n ]\n return new models.Invoice(\n await this.crypto.entities.entityWithInitialisedEncryptedMetadata(invoice, patient.id, sfk, true, extraDelegations).then((x) => x.updatedEntity)\n )\n }\n\n createInvoice(invoice: Invoice, prefix?: string): Promise {\n if (!prefix) {\n return super.createInvoice(invoice)\n }\n if (!invoice.id) {\n invoice.id = this.crypto.primitives.randomUuid()\n }\n return this.getNextInvoiceReference(prefix, this.entityrefApi)\n .then((reference) => this.createInvoiceReference(reference, invoice.id!, prefix, this.entityrefApi))\n .then((entityReference) => {\n if (!entityReference.id) {\n throw new Error('Cannot create invoice')\n }\n\n if (invoice.internshipNihii) {\n invoice.invoiceReference = entityReference.id.substring(prefix.length).replace('0', '1')\n } else {\n invoice.invoiceReference = entityReference.id.substring(prefix.length)\n }\n return super.createInvoice(invoice)\n })\n }\n\n getNextInvoiceReference(prefix: string, entityrefApi: IccEntityrefApi): Promise {\n return entityrefApi.getLatest(prefix).then((entRef: models.EntityReference) => {\n if (!entRef || !entRef.id || !entRef.id!.startsWith(prefix)) return 1\n const sequenceNumber = entRef.id!.split(':').pop() || 0\n return Number(sequenceNumber) + 1\n })\n }\n\n createInvoiceReference(nextReference: number, docId: string, prefix: string, entityrefApi: IccEntityrefApi): Promise {\n return entityrefApi\n .createEntityReference(\n new models.EntityReference({\n id: prefix + nextReference.toString().padStart(6, '0'),\n docId,\n })\n )\n .catch((err) => {\n console.log(err)\n return this.createInvoiceReference(nextReference + 1, docId, prefix, entityrefApi)\n })\n }\n\n /**\n * 1. Check whether there is a delegation with 'hcpartyId' or not.\n * 2. 'fetchHcParty[hcpartyId][1]': is encrypted AES exchange key by RSA public key of him.\n * 3. Obtain the AES exchange key, by decrypting the previous step value with hcparty private key\n * 3.1. KeyPair should be fetch from cache (in jwk)\n * 3.2. if it doesn't exist in the cache, it has to be loaded from Browser Local store, and then import it to WebCrypto\n * 4. Obtain the array of delegations which are delegated to his ID (hcpartyId) in this patient\n * 5. Decrypt and collect all keys (secretForeignKeys) within delegations of previous step (with obtained AES key of step 4)\n * 6. Do the REST call to get all invoices with (allSecretForeignKeysDelimitedByComa, hcpartyId)\n *\n * After these painful steps, you have the invoices of the patient.\n *\n * @param hcpartyId\n * @param patient (Promise)\n * @param usingPost\n */\n async findBy(hcpartyId: string, patient: models.Patient, usingPost: boolean = false): Promise> {\n const extractedKeys = await this.crypto.entities.secretIdsOf(patient, hcpartyId)\n const topmostParentId = (await this.dataOwnerApi.getCurrentDataOwnerHierarchyIds())[0]\n let invoices: Array = usingPost\n ? await this.findInvoicesByHCPartyPatientForeignKeysUsingPost(topmostParentId, _.uniq(extractedKeys))\n : await this.findInvoicesByHCPartyPatientForeignKeys(topmostParentId, _.uniq(extractedKeys).join(','))\n return await this.decrypt(hcpartyId, invoices)\n }\n\n encrypt(user: models.User, invoices: Array) {\n return Promise.resolve(invoices)\n }\n\n decrypt(hcpartyId: string, invoices: Array): Promise> {\n return Promise.resolve(invoices)\n }\n\n /**\n * @param invoice a invoice\n * @return the id of the patient that the invoice refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(invoice: models.Invoice): Promise {\n return this.crypto.entities.owningEntityIdsOf(invoice, undefined)\n }\n\n /**\n * Share an existing invoice with other data owners, allowing them to access the non-encrypted data of the invoice and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the invoice.\n * @param invoice the invoice to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * invoice does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this invoice refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated invoice.\n */\n async shareWith(\n delegateId: string,\n invoice: models.Invoice,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(invoice, { [delegateId]: options })\n }\n /**\n * Share an existing invoice with other data owners, allowing them to access the non-encrypted data of the invoice and optionally also\n * the encrypted content.\n * @param invoice the invoice to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * invoice does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this invoice refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated invoice.\n */\n async shareWithMany(\n invoice: models.Invoice,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n invoice,\n true,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyInvoice(extended)\n } else return invoice\n }\n\n async getDataOwnersWithAccessTo(\n entity: Invoice\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: Invoice): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccMaintenanceTaskApi } from '../icc-api/api/IccMaintenanceTaskApi'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as models from '../icc-api/model/models'\nimport { DocIdentifier, MaintenanceTask } from '../icc-api/model/models'\nimport * as _ from 'lodash'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccMaintenanceTaskXApi extends IccMaintenanceTaskApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n hcPartyApi: IccHcpartyXApi\n dataOwnerApi: IccDataOwnerXApi\n\n private readonly encryptedKeys: Array\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n hcPartyApi: IccHcpartyXApi,\n dataOwnerApi: IccDataOwnerXApi,\n encryptedKeys: Array = [],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.hcPartyApi = hcPartyApi\n this.dataOwnerApi = dataOwnerApi\n this.encryptedKeys = encryptedKeys\n }\n\n /**\n * Creates a new instance of maintenance task with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param m initialised data for the maintenance task. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of maintenance task.\n */\n async newInstance(\n user: models.User,\n m: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ) {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n const maintenanceTask = _.assign(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.MaintenanceTask',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: dataOwnerId,\n author: user.id,\n },\n m || {}\n )\n\n const extraDelegations = [...Object.keys(options.additionalDelegates ?? {}), ...(user.autoDelegations?.all ?? [])]\n return new models.MaintenanceTask(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(maintenanceTask, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n createMaintenanceTask(body?: models.MaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n createMaintenanceTaskWithUser(user: models.User, body?: models.MaintenanceTask): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(body)])\n .then((tasks) => super.createMaintenanceTask(tasks[0]))\n .then((mt) => this.decrypt(user, [mt]))\n .then((tasks) => tasks[0])\n : Promise.resolve(null)\n }\n\n filterMaintenanceTasksBy(startDocumentId?: string, limit?: number, body?: models.FilterChainMaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n deleteMaintenanceTask(_maintenanceTaskIds: string): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n deleteMaintenanceTaskWithUser(user: models.User, maintenanceTaskId: string): Promise> | never {\n return super.deleteMaintenanceTask(maintenanceTaskId)\n }\n\n filterMaintenanceTasksByWithUser(\n user: models.User,\n startDocumentId?: string,\n limit?: number,\n body?: models.FilterChainMaintenanceTask\n ): Promise {\n return super\n .filterMaintenanceTasksBy(startDocumentId, limit, body)\n .then((pl) => this.decrypt(user, pl.rows!).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n getMaintenanceTask(maintenanceTaskId: string): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n getMaintenanceTaskWithUser(user: models.User, maintenanceTaskId: string): Promise {\n return super\n .getMaintenanceTask(maintenanceTaskId)\n .then((mt) => this.decrypt(user, [mt]))\n .then((mts) => mts[0])\n }\n\n modifyMaintenanceTask(body?: models.MaintenanceTask): never {\n throw new Error('Cannot call a method that returns maintenance tasks without providing a user for de/encryption')\n }\n\n modifyMaintenanceTaskWithUser(user: models.User, body?: models.MaintenanceTask): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n\n private modifyAs(dataOwner: string, body: models.MaintenanceTask): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(body)])\n .then((encTasks) => super.modifyMaintenanceTask(encTasks[0]))\n .then((mt) => this.decryptAs(dataOwner, [mt]))\n .then((mts) => mts[0])\n }\n\n encrypt(user: models.User, maintenanceTasks: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), maintenanceTasks)\n }\n\n private encryptAs(dataOwnerId: string, maintenanceTasks: Array): Promise> {\n return Promise.all(\n maintenanceTasks.map((m) =>\n this.crypto.entities.tryEncryptEntity(m, dataOwnerId, this.encryptedKeys, true, true, (x) => new models.MaintenanceTask(x))\n )\n )\n }\n\n decrypt(user: models.User, maintenanceTasks: Array): Promise> {\n return this.decryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), maintenanceTasks)\n }\n\n private decryptAs(dataOwnerId: string, maintenanceTasks: Array): Promise> {\n return Promise.all(\n maintenanceTasks.map(async (mT) =>\n this.crypto.entities.decryptEntity(mT, dataOwnerId, (x) => new MaintenanceTask(x)).then(({ entity }) => entity)\n )\n )\n }\n\n /**\n * Share an existing maintenance task with other data owners, allowing them to access the non-encrypted data of the maintenance task and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the maintenance task.\n * @param maintenanceTask the maintenance task to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * maintenance task does not have encrypted content.\n * @return a promise which will contain the updated maintenance task\n */\n async shareWith(\n delegateId: string,\n maintenanceTask: models.MaintenanceTask,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(maintenanceTask, { [delegateId]: options })\n }\n\n /**\n * Share an existing maintenance task with other data owners, allowing them to access the non-encrypted data of the maintenance task and optionally also\n * the encrypted content.\n * @param maintenanceTask the maintenance task to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * maintenance task does not have encrypted content.\n * @return a promise which will contain the updated maintenance task\n */\n async shareWithMany(\n maintenanceTask: models.MaintenanceTask,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(maintenanceTask, true, delegates)\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return maintenanceTask\n }\n\n async getDataOwnersWithAccessTo(\n entity: MaintenanceTask\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: MaintenanceTask): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccMessageApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\n\nimport * as _ from 'lodash'\n\nimport { Patient, User } from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport * as models from '../icc-api/model/models'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccMessageXApi extends IccMessageApi implements EncryptedEntityXApi {\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n // noinspection JSUnusedGlobalSymbols\n newInstance(user: User, m: any) {\n return this.newInstanceWithPatient(user, null, m)\n }\n\n /**\n * Creates a new instance of message with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param patient the patient this message refers to.\n * @param m initialised data for the message. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * - preferredSfk: secret id of the patient to use as the secret foreign key to use for the classification. The default value will be a\n * secret id of patient known by the topmost parent in the current data owner hierarchy.\n * @return a new instance of message.\n */\n async newInstanceWithPatient(\n user: User,\n patient: Patient | null,\n m: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n preferredSfk?: string\n } = {}\n ) {\n if (!patient && options.preferredSfk) throw new Error('You need to specify parent patient in order to use secret foreign keys.')\n const message = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Message',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n m || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const sfk = patient ? options?.preferredSfk ?? (await this.crypto.confidential.getAnySecretIdSharedWithParents(patient)) : undefined\n if (patient && !sfk) throw new Error(`Couldn't find any sfk of parent patient ${patient.id}`)\n const extraDelegations = [\n ...Object.keys(options?.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Message(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(message, patient?.id, sfk, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * @param message a message\n * @return the id of the patient that the message refers to, retrieved from the encrypted metadata. Normally there should only be one element\n * in the returned array, but in case of entity merges there could be multiple values.\n */\n async decryptPatientIdOf(message: models.Message): Promise {\n return this.crypto.entities.owningEntityIdsOf(message, undefined)\n }\n\n /**\n * Share an existing message with other data owners, allowing them to access the non-encrypted data of the message and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the message.\n * @param message the message to share.\n * @param shareSecretIds the secret ids of the Message that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Message is the owning entity id.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * message does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this message refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated message\n */\n async shareWith(\n delegateId: string,\n message: models.Message,\n shareSecretIds: string[],\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(message, { [delegateId]: { shareSecretIds, ...options } })\n }\n\n /**\n * Share an existing message with other data owners, allowing them to access the non-encrypted data of the message and optionally also\n * the encrypted content.\n * @param message the message to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * message does not have encrypted content.\n * - sharePatientId: specifies if the id of the patient that this message refers to should be shared with the delegate (defaults to\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * - shareSecretIds the secret ids of the Message that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Message is the owning entity id.\n * @return a promise which will contain the updated message\n */\n async shareWithMany(\n message: models.Message,\n delegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n sharePatientId?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n } = {}\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(\n message,\n false,\n Object.fromEntries(\n Object.entries(delegates).map(([delegateId, options]) => [\n delegateId,\n {\n shareSecretIds: options.shareSecretIds,\n shareEncryptionKey: options.shareEncryptionKey,\n shareOwningEntityIds: options.sharePatientId,\n },\n ])\n )\n )\n if (!!extended) {\n return await this.modifyMessage(extended)\n } else return message\n }\n\n /**\n * @param message a message\n * @return the secret ids of the message, retrieved from the encrypted metadata. The result may be used to find entities where the message is\n * the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptSecretIdsOf(message: models.Message): Promise {\n return this.crypto.entities.secretIdsOf(message, undefined)\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.Message\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Message): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccPatientApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\n\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { CalendarItem, Classification, Document, IcureStub, Invoice, ListOfIds, Patient } from '../icc-api/model/models'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { b64_2ab } from '../icc-api/model/ModelHelper'\nimport { findName, garnishPersonWithName, hasName } from './utils/person-util'\nimport { retry } from './utils'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\n// noinspection JSUnusedGlobalSymbols\nexport class IccPatientXApi extends IccPatientApi implements EncryptedEntityXApi {\n crypto: IccCryptoXApi\n contactApi: IccContactXApi\n formApi: IccFormXApi\n helementApi: IccHelementXApi\n invoiceApi: IccInvoiceXApi\n hcpartyApi: IccHcpartyXApi\n documentApi: IccDocumentXApi\n classificationApi: IccClassificationXApi\n calendarItemApi: IccCalendarItemXApi\n dataOwnerApi: IccDataOwnerXApi\n\n private readonly encryptedKeys: Array\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n contactApi: IccContactXApi,\n formApi: IccFormXApi,\n helementApi: IccHelementXApi,\n invoiceApi: IccInvoiceXApi,\n documentApi: IccDocumentXApi,\n hcpartyApi: IccHcpartyXApi,\n classificationApi: IccClassificationXApi,\n dataOwnerApi: IccDataOwnerXApi,\n calendarItemaApi: IccCalendarItemXApi,\n encryptedKeys: Array = ['note'],\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.contactApi = contactApi\n this.formApi = formApi\n this.helementApi = helementApi\n this.invoiceApi = invoiceApi\n this.hcpartyApi = hcpartyApi\n this.documentApi = documentApi\n this.classificationApi = classificationApi\n this.calendarItemApi = calendarItemaApi\n this.dataOwnerApi = dataOwnerApi\n\n this.encryptedKeys = encryptedKeys\n }\n\n /**\n * Creates a new instance of patient with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param p initialised data for the patient. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of patient.\n */\n async newInstance(\n user: models.User,\n p: any = {},\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ) {\n const patient = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.Patient',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n p || {}\n )\n\n const ownerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (ownerId !== (await this.dataOwnerApi.getCurrentDataOwnerId())) throw new Error('Can only initialise entities as current data owner.')\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n const initialisationInfo = await this.crypto.entities.entityWithInitialisedEncryptedMetadata(\n patient,\n undefined,\n undefined,\n true,\n extraDelegations\n )\n return new models.Patient(initialisationInfo.updatedEntity)\n }\n\n completeNames(patient: models.Patient): models.Patient {\n let finalPatient = patient\n\n if (!!finalPatient.lastName && !hasName(finalPatient, models.PersonName.UseEnum.Official)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Official, finalPatient.lastName, finalPatient.firstName)\n }\n\n if (!!finalPatient.maidenName && !hasName(finalPatient, models.PersonName.UseEnum.Maiden)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Maiden, finalPatient.maidenName, finalPatient.firstName)\n }\n\n if (!!finalPatient.alias && !hasName(finalPatient, models.PersonName.UseEnum.Nickname)) {\n finalPatient = garnishPersonWithName(finalPatient, models.PersonName.UseEnum.Nickname, finalPatient.alias, finalPatient.firstName)\n }\n\n if (!finalPatient.lastName && !!hasName(finalPatient, models.PersonName.UseEnum.Official)) {\n const officialName = findName(finalPatient, models.PersonName.UseEnum.Official)\n finalPatient = {\n ...finalPatient,\n lastName: officialName!.lastName,\n firstName: officialName!.firstNames?.[0],\n }\n }\n\n if (!finalPatient.maidenName && !!hasName(finalPatient, models.PersonName.UseEnum.Maiden)) {\n finalPatient = {\n ...finalPatient,\n maidenName: findName(finalPatient, models.PersonName.UseEnum.Maiden)!.lastName,\n }\n }\n\n if (!finalPatient.alias && !!hasName(finalPatient, models.PersonName.UseEnum.Nickname)) {\n finalPatient = {\n ...finalPatient,\n alias: findName(finalPatient, models.PersonName.UseEnum.Nickname)!.lastName,\n }\n }\n\n return finalPatient\n }\n\n /**\n * @deprecated replace with {@link initConfidentialSecretId}\n */\n async initConfidentialDelegation(patient: models.Patient, user: models.User): Promise {\n return this.initConfidentialSecretId(patient, user)\n }\n\n /**\n * Ensures that the current data owner has some confidential secret ids for the provided patient. If not creates them and updates the patient in the\n * database.\n * @param patient the patient for which you want to initialise the confidential secret id.\n * @param user the current user.\n * @return the updated patient or the original patient if no change was necessary.\n */\n async initConfidentialSecretId(patient: models.Patient, user: models.User): Promise {\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (dataOwnerId !== (await this.dataOwnerApi.getCurrentDataOwnerId()))\n throw new Error('You can initialise confidential delegations only for the current data owner')\n const initialised = await this.crypto.confidential.entityWithInitialisedConfidentialSecretId(patient)\n if (initialised) {\n return initialised.rev ? this.modifyPatientWithUser(user, initialised) : this.createPatientWithUser(user, initialised)\n } else {\n return patient\n }\n }\n\n createPatient(body?: models.Patient): never {\n throw new Error('Cannot call a method that returns patients without providing a user for de/encryption')\n }\n\n createPatientWithUser(user: models.User, body?: models.Patient): Promise {\n return body\n ? this.encrypt(user, [_.cloneDeep(this.completeNames(body))])\n .then((pats) => super.createPatient(pats[0]))\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n : Promise.resolve(null)\n }\n\n filterBy(\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean,\n body?: models.FilterChainPatient\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n filterByWithUser(\n user: models.User,\n filterChain: models.FilterChainPatient,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n skip?: number,\n sort?: string,\n desc?: boolean\n ): Promise {\n return super\n .filterPatientsBy(startKey, startDocumentId, limit, skip, sort, desc, filterChain)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n findByAccessLogUserAfterDate(\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByAccessLogUserAfterDateWithUser(\n user: models.User,\n userId: string,\n accessType?: string,\n startDate?: number,\n startKey?: string,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .findByAccessLogUserAfterDate(userId, accessType, startDate, startKey, startDocumentId, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n findByAccessLogUserAfterDate_1(externalId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByExternalIdWithUser(user: models.User, externalId: string): Promise {\n return super\n .findByExternalId(externalId)\n .then((pats) => this.decrypt(user, [pats]))\n .then((x) => x[0])\n }\n\n findByNameBirthSsinAuto(\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n findByNameBirthSsinAutoWithUser(\n user: models.User,\n healthcarePartyId?: string,\n filterValue?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .findByNameBirthSsinAuto(healthcarePartyId, filterValue, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n fuzzySearch(firstName?: string, lastName?: string, dateOfBirth?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n fuzzySearchWithUser(user: models.User, firstName?: string, lastName?: string, dateOfBirth?: number): Promise | any> {\n return super.fuzzySearch(firstName, lastName, dateOfBirth).then((pats) => this.decrypt(user, pats))\n }\n\n getPatient(patientId: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getPatientRaw(patientId: string): Promise {\n return super.getPatient(patientId)\n }\n\n getPatientWithUser(user: models.User, patientId: string): Promise {\n return super\n .getPatient(patientId)\n .then((p) => this.tryDecryptOrReturnOriginal(this.dataOwnerApi.getDataOwnerIdOf(user), [p]))\n .then((pats) => pats[0].entity)\n }\n\n getPotentiallyEncryptedPatientWithUser(user: models.User, patientId: string): Promise<{ patient: models.Patient; decrypted: boolean }> {\n return super\n .getPatient(patientId)\n .then((p) => this.tryDecryptOrReturnOriginal(this.dataOwnerApi.getDataOwnerIdOf(user), [p]))\n .then((pats) => ({ patient: pats[0].entity, decrypted: pats[0].decrypted }))\n }\n\n getPatients(body?: models.ListOfIds): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n getPatientsWithUser(user: models.User, body?: models.ListOfIds): Promise | any> {\n return super.getPatients(body).then((pats) => this.decrypt(user, pats))\n }\n\n listDeletedPatients(startDate?: number, endDate?: number, desc?: boolean, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listDeletedPatientsWithUser(\n user: models.User,\n startDate?: number,\n endDate?: number,\n desc?: boolean,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listDeletedPatients(startDate, endDate, desc, startDocumentId, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listDeletedPatients_2(firstName?: string, lastName?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listDeletedPatientsByNameWithUser(user: models.User, firstName?: string, lastName?: string): Promise | any> {\n return super.listDeletedPatientsByName(firstName, lastName).then((rows) => this.decrypt(user, rows, false))\n }\n\n listOfMergesAfter(date: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listOfMergesAfterWithUser(user: models.User, date: number): Promise | any> {\n return super.listOfMergesAfter(date).then((pats) => this.decrypt(user, pats, false))\n }\n\n listOfPatientsModifiedAfter(date: number, startKey?: number, startDocumentId?: string, limit?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listOfPatientsModifiedAfterWithUser(\n user: models.User,\n date: number,\n startKey?: number,\n startDocumentId?: string,\n limit?: number\n ): Promise {\n return super\n .listOfPatientsModifiedAfter(date, startKey, startDocumentId, limit)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatients(hcPartyId?: string, sortField?: string, startKey?: string, startDocumentId?: string, limit?: number, sortDirection?: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsWithUser(\n user: models.User,\n hcPartyId?: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatients(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatientsByHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsByHcPartyWithUser(\n user: models.User,\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatientsByHcParty(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n listPatientsOfHcParty(\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n listPatientsOfHcPartyWithUser(\n user: models.User,\n hcPartyId: string,\n sortField?: string,\n startKey?: string,\n startDocumentId?: string,\n limit?: number,\n sortDirection?: string\n ): Promise {\n return super\n .listPatientsOfHcParty(hcPartyId, sortField, startKey, startDocumentId, limit, sortDirection)\n .then((pl) => this.decrypt(user, pl.rows!, false).then((dr) => Object.assign(pl, { rows: dr })))\n }\n\n mergeInto(toId: string, fromIds: string): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n mergeIntoWithUser(user: models.User, toId: string, fromIds: string): Promise {\n return super\n .mergeInto(toId, fromIds)\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n }\n\n modifyPatient(body?: models.Patient): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n modifyPatientRaw(body?: models.Patient): Promise {\n return super.modifyPatient(body)\n }\n\n modifyPatientWithUser(user: models.User, body?: models.Patient): Promise {\n return body ? this.modifyAs(this.dataOwnerApi.getDataOwnerIdOf(user), body) : Promise.resolve(null)\n }\n\n modifyAs(dataOwner: string, body: models.Patient): Promise {\n return this.encryptAs(dataOwner, [_.cloneDeep(this.completeNames(body))])\n .then((pats) => super.modifyPatient(pats[0]))\n .then((p) => this.tryDecryptOrReturnOriginal(dataOwner, [p]))\n .then((pats) => pats[0].entity)\n }\n\n modifyPatientReferral(patientId: string, referralId: string, start?: number, end?: number): never {\n throw new Error('Cannot call a method that returns contacts without providing a user for de/encryption')\n }\n\n modifyPatientReferralWithUser(\n user: models.User,\n patientId: string,\n referralId: string,\n start?: number,\n end?: number\n ): Promise {\n return super\n .modifyPatientReferral(patientId, referralId, start, end)\n .then((p) => this.decrypt(user, [p]))\n .then((pats) => pats[0])\n }\n\n encrypt(user: models.User, pats: Array): Promise> {\n return this.encryptAs(this.dataOwnerApi.getDataOwnerIdOf(user), pats)\n }\n\n private encryptAs(dataOwnerId: string | undefined, pats: Array): Promise> {\n return Promise.all(\n pats.map((p) => this.crypto.entities.tryEncryptEntity(p, dataOwnerId, this.encryptedKeys, true, false, (x) => new models.Patient(x)))\n )\n }\n\n // If patient can't be decrypted returns patient with encrypted data.\n decrypt(user: models.User, patients: Array, fillDelegations = true): Promise> {\n return this.tryDecryptOrReturnOriginal(this.dataOwnerApi.getDataOwnerIdOf(user), patients).then((ps) => ps.map((p) => p.entity))\n }\n\n tryDecryptOrReturnOriginal(\n dataOwnerId: string | undefined,\n patients: Array\n ): Promise<{ entity: models.Patient; decrypted: boolean }[]> {\n return Promise.all(\n patients.map(\n async (p) =>\n await this.crypto.entities\n .decryptEntity(p, dataOwnerId, (x) => new models.Patient(x))\n .then((p) => {\n if (p.entity.picture && !(p.entity.picture instanceof ArrayBuffer)) {\n return {\n entity: new models.Patient({\n ...p.entity,\n picture: b64_2ab(p.entity.picture),\n }),\n decrypted: p.decrypted,\n }\n } else return p\n })\n )\n )\n }\n\n share(\n user: models.User,\n patId: string,\n ownerId: string,\n delegateIds: Array,\n delegationTags: { [key: string]: Array },\n usingPost: boolean = false\n ): Promise<{\n patient: models.Patient | null\n statuses: { [key: string]: { success: boolean | null; error: Error | null } }\n } | null> {\n const addDelegationsAndKeys = (\n dtos: Array,\n markerPromise: Promise,\n delegateId: string,\n patient: models.Patient | null\n ) => {\n return dtos.reduce(\n (p, x) =>\n p.then(async () => {\n const secretIds = await this.crypto.entities.secretIdsOf(x, ownerId)\n const encryptionKeys = await this.crypto.entities.encryptionKeysOf(x, ownerId)\n const parentIds = await this.crypto.entities.owningEntityIdsOf(x, ownerId)\n const updatedX = await this.crypto.entities\n .entityWithExtendedEncryptedMetadata(x, delegateId, secretIds, encryptionKeys, parentIds, [])\n .catch((e: any) => {\n console.log(e)\n return x\n })\n _.assign(x, updatedX)\n return x\n }),\n markerPromise\n )\n }\n\n const allTags: string[] = _.uniq(_.flatMap(Object.values(delegationTags)))\n\n // Determine which keys to share, depending on the delegation tag. For example, anonymousMedicalData only shares encryption keys and no delegations or secret foreign keys.\n const shareDelegations: boolean = allTags.some((tag) => tag != 'anonymousMedicalInformation')\n const shareEncryptionKeys = true\n const shareCryptedForeignKeys: boolean = allTags.some((tag) => tag != 'anonymousMedicalInformation')\n\n // Anonymous sharing, will not change anything to the patient, only its contacts and health elements.\n const shareAnonymously: boolean = allTags.every((tag) => tag == 'anonymousMedicalInformation')\n\n return this.hcpartyApi.getHealthcareParty(ownerId).then((hcp) => {\n const parentId = hcp.parentId\n const status = {\n contacts: {\n success:\n allTags.includes('medicalInformation') || allTags.includes('anonymousMedicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n forms: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n healthElements: {\n success:\n allTags.includes('medicalInformation') || allTags.includes('anonymousMedicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n invoices: {\n success: allTags.includes('financialInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n documents: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n classifications: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n calendarItems: {\n success: allTags.includes('medicalInformation') || allTags.includes('all') ? false : null,\n error: null,\n modified: 0,\n },\n patient: { success: false, error: null, modified: 0 } as {\n success: boolean\n error: Error | null\n },\n }\n return retry(() => this.getPatientWithUser(user, patId))\n .then((patient: models.Patient) =>\n patient.encryptionKeys && Object.keys(patient.encryptionKeys || {}).length\n ? Promise.resolve(patient)\n : this.crypto.entities.ensureEncryptionKeysInitialised(patient).then((p) => (!!p ? this.modifyPatientWithUser(user, p) : patient))\n )\n .then(async (patient: models.Patient | null) => {\n if (!patient) {\n status.patient = {\n success: false,\n error: new Error('Patient does not exist or cannot initialise encryption keys'),\n }\n return Promise.resolve({ patient: patient, statuses: status })\n }\n\n const delSfks = await this.crypto.entities.secretIdsOf(patient, ownerId)\n const ecKeys = await this.crypto.entities.encryptionKeysOf(patient, ownerId)\n return delSfks.length\n ? Promise.all([\n retry(() =>\n (usingPost\n ? this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((hes) =>\n parentId\n ? (usingPost\n ? this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.helementApi.findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreHes) => _.uniqBy(hes.concat(moreHes), 'id'))\n : hes\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((frms) =>\n parentId\n ? (usingPost\n ? this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.formApi.findFormsDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreFrms) => _.uniqBy(frms.concat(moreFrms), 'id'))\n : frms\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(ownerId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ctcs) =>\n parentId\n ? (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysUsingPost(parentId, undefined, undefined, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCtcs) => _.uniqBy(ctcs.concat(moreCtcs), 'id'))\n : ctcs\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.invoiceApi.findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ivs) =>\n parentId\n ? this.invoiceApi\n .findInvoicesDelegationsStubsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreIvs) => _.uniqBy(ivs.concat(moreIvs), 'id'))\n : ivs\n )\n ) as Promise>,\n retry(() =>\n this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n .then((cls) =>\n parentId\n ? this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((cls) =>\n parentId\n ? (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(parentId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n ) as Promise>,\n ]).then(([hes, frms, ctcs, ivs, cls, cis]) => {\n const cloneKeysAndDelegations = function (x: models.IcureStub) {\n return {\n delegations: shareDelegations ? _.clone(x.delegations) : undefined,\n cryptedForeignKeys: shareCryptedForeignKeys ? _.clone(x.cryptedForeignKeys) : undefined,\n encryptionKeys: shareEncryptionKeys ? _.clone(x.encryptionKeys) : undefined,\n }\n }\n\n const ctcsStubs = ctcs.map((c) => ({\n id: c.id,\n rev: c.rev,\n ...cloneKeysAndDelegations(c),\n }))\n const oHes = hes.map((x) => _.assign(new IcureStub({}), x, cloneKeysAndDelegations(x)))\n const oFrms = frms.map((x) => _.assign(new IcureStub({}), x, cloneKeysAndDelegations(x)))\n const oCtcsStubs = ctcsStubs.map((x) => _.assign({}, x, cloneKeysAndDelegations(x)))\n const oIvs = ivs.map((x) => _.assign(new Invoice({}), x, cloneKeysAndDelegations(x)))\n const oCls = cls.map((x) => _.assign(new Classification({}), x, cloneKeysAndDelegations(x)))\n const oCis = cis.map((x) => _.assign(new CalendarItem({}), x, cloneKeysAndDelegations(x)))\n\n const docIds: { [key: string]: number } = {}\n ctcs.forEach(\n (c: models.Contact) =>\n c.services &&\n c.services.forEach((s) => s.content && Object.values(s.content).forEach((c) => c && c.documentId && (docIds[c.documentId] = 1)))\n )\n\n return retry(() => this.documentApi.getDocuments(new ListOfIds({ ids: Object.keys(docIds) }))).then((docs: Array) => {\n const oDocs = docs.map((x) => _.assign({}, x, cloneKeysAndDelegations(x)))\n\n let markerPromise: Promise = Promise.resolve(null)\n delegateIds.forEach((delegateId) => {\n const tags = delegationTags[delegateId]\n markerPromise = markerPromise.then(async () => {\n //Share patient\n const updatedPatient = await this.crypto.entities\n .entityWithExtendedEncryptedMetadata(patient, delegateId, delSfks, ecKeys, [], [])\n .catch((e) => {\n console.log(e)\n return patient\n })\n return _.assign(patient, updatedPatient)\n })\n ;(tags.includes('medicalInformation') || tags.includes('anonymousMedicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(hes, markerPromise, delegateId, patient))\n ;(tags.includes('medicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(frms, markerPromise, delegateId, patient))\n ;(tags.includes('medicalInformation') || tags.includes('anonymousMedicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(ctcsStubs, markerPromise, delegateId, patient))\n ;(tags.includes('medicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(cls, markerPromise, delegateId, patient))\n ;(tags.includes('medicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(cis, markerPromise, delegateId, patient))\n ;(tags.includes('financialInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(ivs, markerPromise, delegateId, patient))\n ;(tags.includes('medicalInformation') || tags.includes('all')) &&\n (markerPromise = addDelegationsAndKeys(docs, markerPromise, delegateId, null))\n })\n\n return markerPromise\n .then(() => {\n //console.log(\"scd\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('anonymousMedicalInformation') || allTags.includes('all')) &&\n ctcsStubs &&\n ctcsStubs.length &&\n !_.isEqual(oCtcsStubs, ctcsStubs) &&\n this.contactApi\n .setContactsDelegations(ctcsStubs)\n .then(() => {\n status.contacts.success = true\n status.contacts.modified += ctcsStubs.length\n })\n .catch((e) => (status.contacts.error = e))) ||\n Promise.resolve((status.contacts.success = true))\n )\n })\n .then(() => {\n //console.log(\"shed\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('anonymousMedicalInformation') || allTags.includes('all')) &&\n hes &&\n hes.length &&\n !_.isEqual(oHes, hes) &&\n this.helementApi\n .setHealthElementsDelegations(hes)\n .then(() => {\n status.healthElements.success = true\n status.healthElements.modified += hes.length\n })\n .catch((e) => (status.healthElements.error = e))) ||\n Promise.resolve((status.healthElements.success = true))\n )\n })\n .then(() => {\n //console.log(\"sfd\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('all')) &&\n frms &&\n frms.length &&\n !_.isEqual(oFrms, frms) &&\n this.formApi\n .setFormsDelegations(frms)\n .then(() => {\n status.forms.success = true\n status.forms.modified += frms.length\n })\n .catch((e) => (status.forms.error = e))) ||\n Promise.resolve((status.forms.success = true))\n )\n })\n .then(() => {\n //console.log(\"sid\")\n return (\n ((allTags.includes('financialInformation') || allTags.includes('all')) &&\n ivs &&\n ivs.length &&\n !_.isEqual(oIvs, ivs) &&\n this.invoiceApi\n .setInvoicesDelegations(ivs)\n .then(() => {\n status.invoices.success = true\n status.invoices.modified += ivs.length\n })\n .catch((e) => (status.invoices.error = e))) ||\n Promise.resolve((status.invoices.success = true))\n )\n })\n .then(() => {\n //console.log(\"sdd\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('all')) &&\n docs &&\n docs.length &&\n !_.isEqual(oDocs, docs) &&\n this.documentApi\n .setDocumentsDelegations(docs)\n .then(() => {\n status.documents.success = true\n status.documents.modified += docs.length\n })\n .catch((e) => (status.documents.error = e))) ||\n Promise.resolve((status.documents.success = true))\n )\n })\n .then(() => {\n //console.log(\"scld\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('all')) &&\n cls &&\n cls.length &&\n !_.isEqual(oCls, cls) &&\n this.classificationApi\n .setClassificationsDelegations(cls)\n .then(() => {\n status.classifications.success = true\n status.classifications.modified += cls.length\n })\n .catch((e) => (status.classifications.error = e))) ||\n Promise.resolve((status.classifications.success = true))\n )\n })\n .then(() => {\n //console.log(\"scid\")\n return (\n ((allTags.includes('medicalInformation') || allTags.includes('all')) &&\n cis &&\n cis.length &&\n !_.isEqual(oCis, cis) &&\n this.calendarItemApi\n .setCalendarItemsDelegations(cis)\n .then(() => {\n status.calendarItems.success = true\n status.calendarItems.modified += cis.length\n })\n .catch((e) => (status.calendarItems.error = e))) ||\n Promise.resolve((status.calendarItems.success = true))\n )\n })\n .then(() => this.modifyPatientWithUser(user, patient))\n .then((p) => {\n status.patient.success = true\n console.log(\n `c: ${status.contacts.modified}, he: ${status.healthElements.modified}, docs: ${status.documents.modified}, frms: ${status.forms.modified}, ivs: ${status.invoices.modified}, cis: ${status.calendarItems.modified}, cls: ${status.classifications.modified}`\n )\n return { patient: p, statuses: status }\n })\n .catch((e) => {\n status.patient.error = e\n return { patient: patient, statuses: status }\n })\n })\n })\n : (allTags.includes('anonymousMedicalInformation')\n ? Promise.resolve(patient)\n : this.modifyPatientWithUser(\n user,\n _.assign(patient, {\n delegations: _.assign(\n patient.delegations,\n delegateIds\n .filter((id) => !patient.delegations || !patient.delegations[id]) //If there are delegations do not modify\n .reduce((acc, del: string) => Object.assign(acc, _.fromPairs([[del, []]])), patient.delegations || {})\n ),\n })\n )\n )\n .then((p) => {\n status.patient.success = true\n return { patient: p, statuses: status }\n })\n .catch((e) => {\n status.patient.error = e\n return { patient: patient, statuses: status }\n })\n })\n })\n }\n\n export(user: models.User, patId: string, ownerId: string, usingPost: boolean = false): Promise<{ id: string }> {\n return this.hcpartyApi.getHealthcareParty(ownerId).then((hcp) => {\n const parentId = hcp.parentId\n\n return retry(() => this.getPatientWithUser(user, patId))\n .then((patient: models.Patient) =>\n patient.encryptionKeys && Object.keys(patient.encryptionKeys || {}).length\n ? Promise.resolve(patient)\n : this.crypto.entities.ensureEncryptionKeysInitialised(patient).then((p) => (!!p ? this.modifyPatientWithUser(user, p) : patient))\n )\n .then(async (patient: models.Patient | null) => {\n if (!patient) {\n return Promise.resolve({ id: patId })\n }\n const delSfks = await this.crypto.entities.secretIdsOf(patient, ownerId)\n return Promise.resolve().then(() => {\n return delSfks.length\n ? Promise.all([\n retry(() =>\n (usingPost\n ? this.helementApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.helementApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((hes) =>\n parentId\n ? this.helementApi\n .findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreHes) => _.uniqBy(hes.concat(moreHes), 'id'))\n : hes\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.formApi.findFormsByHCPartyPatientForeignKeysUsingPost(ownerId, undefined, undefined, undefined, _.uniq(delSfks))\n : this.formApi.findFormsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((frms) =>\n parentId\n ? (usingPost\n ? this.formApi.findFormsByHCPartyPatientForeignKeysUsingPost(parentId, undefined, undefined, undefined, _.uniq(delSfks))\n : this.formApi.findFormsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreFrms) => _.uniqBy(frms.concat(moreFrms), 'id'))\n : frms\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ctcs) =>\n parentId\n ? (usingPost\n ? this.contactApi.findByHCPartyPatientSecretFKeysArray(parentId, _.uniq(delSfks))\n : this.contactApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreCtcs) => _.uniqBy(ctcs.concat(moreCtcs), 'id'))\n : ctcs\n )\n ) as Promise>,\n retry(() =>\n (usingPost\n ? this.invoiceApi.findInvoicesByHCPartyPatientForeignKeysUsingPost(ownerId, _.uniq(delSfks))\n : this.invoiceApi.findInvoicesByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n ).then((ivs) =>\n parentId\n ? (usingPost\n ? this.invoiceApi.findInvoicesByHCPartyPatientForeignKeysUsingPost(parentId, _.uniq(delSfks))\n : this.invoiceApi.findInvoicesByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n ).then((moreIvs) => _.uniqBy(ivs.concat(moreIvs), 'id'))\n : ivs\n )\n ) as Promise>,\n retry(() =>\n this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(ownerId, _.uniq(delSfks).join(','))\n .then((cls) =>\n parentId\n ? this.classificationApi\n .findClassificationsByHCPartyPatientForeignKeys(parentId, _.uniq(delSfks).join(','))\n .then((moreCls) => _.uniqBy(cls.concat(moreCls), 'id'))\n : cls\n )\n ) as Promise>,\n retry(async () => {\n const delegationSFKs = _.uniq(delSfks).join(',')\n try {\n let calendarItems = await (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(ownerId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(ownerId, _.uniq(delSfks).join(',')))\n\n if (parentId) {\n const moreCalendarItems = await (usingPost\n ? this.calendarItemApi.findByHCPartyPatientSecretFKeysArray(parentId, _.uniq(delSfks))\n : this.calendarItemApi.findByHCPartyPatientSecretFKeys(parentId, _.uniq(delSfks).join(',')))\n calendarItems = _.uniqBy(calendarItems.concat(moreCalendarItems), 'id')\n }\n\n return calendarItems\n } catch (ex) {\n console.log(`exception occured exporting calendarItem for ownerId: ${ownerId} - ${ex}`)\n //throw ex\n }\n }) as Promise>,\n ]).then(([hes, frms, ctcs, ivs, cls, cis]) => {\n const docIds: { [key: string]: number } = {}\n ctcs.forEach(\n (c: models.Contact) =>\n c.services &&\n c.services.forEach((s) => s.content && Object.values(s.content).forEach((c) => c && c.documentId && (docIds[c.documentId] = 1)))\n )\n\n return retry(() => this.documentApi.getDocuments(new ListOfIds({ ids: Object.keys(docIds) }))).then((docs: Array) => {\n return {\n id: patId,\n patient: patient,\n contacts: ctcs,\n forms: frms,\n healthElements: hes,\n invoices: ivs,\n classifications: cls,\n calItems: cis,\n documents: docs,\n }\n })\n })\n : Promise.resolve({\n id: patId,\n patient: patient,\n contacts: [],\n forms: [],\n healthElements: [],\n invoices: [],\n classifications: [],\n calItems: [],\n documents: [],\n })\n })\n })\n })\n }\n\n checkInami(inami: string): boolean {\n const num_inami = inami.replace(new RegExp('[^(0-9)]', 'g'), '')\n\n const checkDigit = num_inami.substring(6, 2)\n const numSansCheck = num_inami.substring(0, 6)\n let retour = false\n\n //modulo du niss\n const modINAMI = parseInt(numSansCheck) % 97\n\n //obtention du num de check 97 - le resultat du mod\n const checkDigit_2 = 97 - modINAMI\n\n if (parseInt(checkDigit) == checkDigit_2) {\n retour = true\n }\n return retour\n }\n\n isValidSsin(ssin: string) {\n ssin = ssin.replace(new RegExp('[^(0-9)]', 'g'), '')\n let isValidNiss = false\n\n const normalNumber =\n /^[0-9][0-9](([0][0-9])|([1][0-2]))(([0-2][0-9])|([3][0-1]))(([0-9]{2}[1-9])|([0-9][1-9][0-9])|([1-9][0-9]{2}))(([0-8][0-9])|([9][0-7]))$/.test(\n ssin\n )\n const bisNumber = /^[0-9][0-9](([2][0-9])|([3][0-2]))(([0-2][0-9])|([3][0-1]))[0-9]{3}(([0-8][0-9])|([9][0-7]))$/.test(ssin)\n const terNumber = /^[0-9][0-9](([4][0-9])|([5][0-2]))(([0-2][0-9])|([3][0-1]))[0-9]{3}(([0-8][0-9])|([9][0-7]))$/.test(ssin)\n\n if (normalNumber || bisNumber || terNumber) {\n isValidNiss =\n 97 - (Number(ssin.substring(0, 9)) % 97) === Number(ssin.substring(9, 2))\n ? true\n : 97 - (Number('2' + ssin.substring(0, 9)) % 97) === Number(ssin.substring(9, 2))\n }\n\n return isValidNiss\n }\n\n async getPatientIdOfChildDocumentForHcpAndHcpParents(\n childDocument: models.Invoice | models.CalendarItem | models.Contact | models.AccessLog,\n hcpId: string\n ): Promise {\n const parentIdsArray = await this.crypto.entities.owningEntityIdsOf(childDocument, hcpId)\n\n const multipleParentIds = _.uniq(parentIdsArray).length > 1\n\n if (multipleParentIds) {\n throw 'Child document with id ' + childDocument.id + ' contains multiple parent ids in its CFKs for hcpId: ' + hcpId\n }\n\n const parentId = _.first(parentIdsArray)\n\n if (!parentId) {\n throw 'Parent id is empty in CFK of child document with id ' + childDocument.id + ' for hcpId: ' + hcpId\n }\n\n let patient: models.Patient = await super.getPatient(parentId!)\n\n let mergeLevel = 0\n const maxMergeLevel = 10\n while (patient.mergeToPatientId) {\n mergeLevel++\n if (mergeLevel === maxMergeLevel) {\n throw 'Too many merged levels for parent (Patient) of child document ' + childDocument.id + ' ; hcpId: ' + hcpId\n }\n\n patient = await super.getPatient(patient.mergeToPatientId!)\n }\n\n return patient.id!\n }\n\n /**\n * Share an existing patient with other data owners, allowing them to access the non-encrypted data of the patient and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the patient.\n * @param patient the patient to share.\n * @param shareSecretIds the secret ids of the Patient that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Patient is the owning entity id.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * patient does not have encrypted content.\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated patient.\n */\n async shareWith(\n delegateId: string,\n patient: models.Patient,\n shareSecretIds: string[],\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(patient, { [delegateId]: { shareSecretIds, ...options } })\n }\n\n /**\n * Share an existing patient with other data owners, allowing them to access the non-encrypted data of the patient and optionally also\n * the encrypted content.\n * @param patient the patient to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * patient does not have encrypted content.\n * - shareSecretIds the secret ids of the Patient that the delegate will be given access to. Allows the delegate to search for data where the\n * shared Patient is the owning entity id.\n * {@link ShareMetadataBehaviour.IF_AVAILABLE}).\n * @return a promise which will contain the updated patient.\n */\n async shareWithMany(\n patient: models.Patient,\n delegates: {\n [delegateId: string]: {\n shareSecretIds: string[]\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const self = await this.dataOwnerApi.getCurrentDataOwnerId()\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(patient, false, delegates)\n if (!!extended) {\n return await this.modifyAs(self, extended)\n } else return patient\n }\n\n /**\n * @param patient a patient\n * @return all the decryptable secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.entities.secretIdsOf(patient, undefined)\n }\n\n /**\n * @param patient a patient\n * @return the confidential secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptConfidentialSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.confidential.getConfidentialSecretIds(patient, undefined)\n }\n\n /**\n * @param patient a patient\n * @return the non-confidential secret ids of the patient, retrieved from the encrypted metadata. The result may be used to find entities where the\n * patient is the 'owning entity', or in the {@link shareWith} method in order to share it with other data owners.\n */\n decryptNonConfidentialSecretIdsOf(patient: models.Patient): Promise {\n return this.crypto.confidential.getSecretIdsSharedWithParents(patient)\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.Patient\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Patient): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n\n /**\n * Merge two patients into one. This method performs the following operations:\n * - The `from` patient will be soft-deleted, and it will point to the `into` patient. Only the `deletionDate` and `mergeToPatientId` fields of the\n * patient will be changed (automatically by this method). Note that the value of {@link from} is only used to verify that the client is aware of\n * the last version of the `from` patient: any changes to its content and/or metadata compared to what is actually stored in the database will be\n * ignored.\n * - The metadata of the `into` patient will be automatically updated to contain also the metadata of the `from` patient and to keep track of the\n * merge:\n * - the `mergedIds` will be updated to contain the `from` patient id\n * - all secret ids of the `from` patient will be added to the `into` patient\n * - all data owners (including anonymous data owners) with access to the `from` patient will have the same access to the merged `into` patient\n * (unless they already had greater access to the `into` patient, in which case they keep the greater access)\n * - The content of the `into` patient will be updated to match the content (name, address, note, ...) of the provided {@link mergedInto} parameter.\n * Note that since the metadata is automatically updated by this method you must not change the metadata of the `mergedInto` patient\n * (`delegations`, mergedInto`, ...): if there is any change between the metadata of the provided `mergedInto` patient and the stored patient this\n * method will fail with an error.\n *\n * In case the revisions of {@link from} and/or {@link mergedInto} does not match the latest revisions for these patients in the database this\n * method will fail without soft-deleting the `from` patient and without updating the `into` patient with the merged content and metadata. You will\n * have to retrieve the updated versions of both patients before retrying the merge.\n *\n * Finally, note that this method only merges existing data, and does not perform any automatic sharing of the data. The secret ids and encryption\n * keys will not be shared with users that had access only to one of the entity, you will have to use the {@link shareWith} method after the merge\n * if you want to do so.\n * For example consider hcps A, B with access to P' and hcps A, C with access to P'', and we merge P'' into P'. After the merge:\n * - A has access to all secret ids of the merged patient and to the encryption key of the merged patient\n * - B has access to the encryption key of the merged patient (since it is the same as in P'), but only to the secret id which was originally from\n * the unmerged P'\n * - C has no access to the encryption key of the merged patient, and has access only to the secret id which was originally from the unmerged P''\n *\n * @param from the original, unmodified `from` patient. Its content will be unchanged and its metadata will be automatically updated by this method\n * to reflect the merge.\n * @param mergedInto the `into` patient with updated content result of the merge with the `from` patient, as specified by your application logic.\n * The metadata of the `mergedInto` patient must not differ from the metadata of the stored version of the patient, since it will be automatically\n * updated by the method.\n * @return the updated `into` patient.\n */\n async mergePatients(from: Patient, mergedInto: Patient): Promise {\n const encryptedMerged = (await this.encryptAs(undefined, [mergedInto]))[0]\n const merged = await super.baseMergePatients(from.id!, from.rev!, encryptedMerged)\n return (await this.tryDecryptOrReturnOriginal(undefined, [merged]))[0].entity\n }\n}\n","import { IccReceiptApi } from '../icc-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport * as _ from 'lodash'\nimport * as models from '../icc-api/model/models'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccReceiptXApi extends IccReceiptApi implements EncryptedEntityXApi {\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n private crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of receipt with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param r initialised data for the receipt. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of receipt.\n */\n async newInstance(\n user: models.User,\n r: any,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ): Promise {\n const receipt = new models.Receipt(\n _.extend(\n {\n id: this.crypto.randomUuid(),\n _type: 'org.taktik.icure.entities.Receipt',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n r || {}\n )\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.medicalInformation ?? []),\n ]\n return new models.Receipt(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(receipt, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n logReceipt(user: models.User, docId: string, refs: Array, blobType: string, blob: ArrayBuffer) {\n return this.newInstance(user, { documentId: docId, references: refs })\n .then((rcpt) => this.createReceipt(rcpt))\n .then((rcpt) => (blob.byteLength != 0 ? this.setReceiptAttachment(rcpt.id!, blobType, '', blob) : Promise.resolve(rcpt)))\n }\n\n /**\n * Adds an attachment to a receipt, encrypting it on client side using the encryption keys of the provided receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async encryptAndSetReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise {\n const encryptedData = await this.crypto.entities.encryptDataOf(receipt, attachment)\n return await this.setReceiptAttachment(receipt.id!, blobType, undefined, encryptedData)\n }\n\n /**\n * Adds an unencrypted attachment to a receipt.\n * @param receipt a receipt.\n * @param blobType the type of the attachment.\n * @param attachment a attachment for the receipt.\n * @return the updated receipt.\n */\n async setClearReceiptAttachment(receipt: models.Receipt, blobType: string, attachment: ArrayBuffer | Uint8Array): Promise {\n return await this.setReceiptAttachment(receipt.id!, blobType, undefined, attachment)\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt, throwing an error if the operation fails.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n */\n async getAndDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise {\n const { data, wasDecrypted } = await this.crypto.entities.tryDecryptDataOf(\n receipt,\n await this.getReceiptAttachment(receipt.id!, attachmentId, ''),\n (x) => validator(x)\n )\n if (!wasDecrypted) throw new Error(`No valid key found to decrypt data of receipt ${receipt.id}.`)\n return data\n }\n\n /**\n * Gets the attachment of a receipt and tries to decrypt it using the encryption keys of the receipt.\n * @param receipt a receipt.\n * @param attachmentId id of the attachment of this receipt to retrieve.\n * @param validator optionally a validator function which checks if the decryption was successful. In cases where the receipt has many encryption\n * keys and it is unclear which one should be used this function can help to detect bad decryptions.\n * @return an object containing:\n * - data: the decrypted attachment, if it could be decrypted, else the encrypted attachment.\n * - wasDecrypted: if the data was successfully decrypted or not\n */\n async getAndTryDecryptReceiptAttachment(\n receipt: models.Receipt,\n attachmentId: string,\n validator: (decrypted: ArrayBuffer) => Promise = () => Promise.resolve(true)\n ): Promise<{ data: ArrayBuffer; wasDecrypted: boolean }> {\n return await this.crypto.entities.tryDecryptDataOf(receipt, await this.getReceiptAttachment(receipt.id!, attachmentId, ''), (x) => validator(x))\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content.\n * @param delegateId the id of the data owner which will be granted access to the receipt.\n * @param receipt the receipt to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * @return a promise which will contain the updated receipt.\n */\n async shareWith(\n delegateId: string,\n receipt: models.Receipt,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(receipt, { [delegateId]: options })\n }\n\n /**\n * Share an existing receipt with other data owners, allowing them to access the non-encrypted data of the receipt and optionally also\n * the encrypted content.\n * @param receipt the receipt to share.\n * @param delegates sharing options for each delegate which will gain access to the entity:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * receipt does not have encrypted content.\n * @return a promise which will contain the updated receipt.\n */\n async shareWithMany(\n receipt: models.Receipt,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(receipt, true, delegates)\n if (!!extended) {\n return await this.modifyReceipt(extended)\n } else return receipt\n }\n\n async getDataOwnersWithAccessTo(entity: models.Receipt): Promise<{\n permissionsByDataOwnerId: { [dataOwnerId: string]: 'WRITE' }\n hasUnknownAnonymousDataOwners: boolean\n }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.Receipt): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import * as i18n from './rsrc/contact.i18n'\n\nimport * as _ from 'lodash'\nimport { IccTimeTableApi } from '../icc-api'\nimport { User } from '../icc-api/model/User'\nimport { TimeTable } from '../icc-api/model/TimeTable'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport * as models from '../icc-api/model/models'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\nimport { ShareMetadataBehaviour } from './crypto/ShareMetadataBehaviour'\nimport { EncryptedEntityXApi } from './basexapi/EncryptedEntityXApi'\n\nexport class IccTimeTableXApi extends IccTimeTableApi implements EncryptedEntityXApi {\n i18n: any = i18n\n crypto: IccCryptoXApi\n dataOwnerApi: IccDataOwnerXApi\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n crypto: IccCryptoXApi,\n dataOwnerApi: IccDataOwnerXApi,\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.crypto = crypto\n this.dataOwnerApi = dataOwnerApi\n }\n\n /**\n * Creates a new instance of timetable with initialised encryption metadata (not in the database).\n * @param user the current user.\n * @param tt initialised data for the timetable. Metadata such as id, creation data, etc. will be automatically initialised, but you can specify\n * other kinds of data or overwrite generated metadata with this. You can't specify encryption metadata.\n * @param options optional parameters:\n * - additionalDelegates: delegates which will have access to the entity in addition to the current data owner and delegates from the\n * auto-delegations. Must be an object which associates each data owner id with the access level to give to that data owner. May overlap with\n * auto-delegations, in such case the access level specified here will be used. Currently only WRITE access is supported, but in future also read\n * access will be possible.\n * @return a new instance of timetable.\n */\n async newInstance(\n user: User,\n tt: TimeTable,\n options: {\n additionalDelegates?: { [dataOwnerId: string]: 'WRITE' }\n } = {}\n ) {\n const timeTable = _.extend(\n {\n id: this.crypto.primitives.randomUuid(),\n _type: 'org.taktik.icure.entities.TimeTable',\n created: new Date().getTime(),\n modified: new Date().getTime(),\n responsible: this.dataOwnerApi.getDataOwnerIdOf(user),\n author: user.id,\n codes: [],\n tags: [],\n },\n tt || {}\n )\n\n const extraDelegations = [\n ...Object.keys(options.additionalDelegates ?? {}),\n ...(user.autoDelegations?.all ?? []),\n ...(user.autoDelegations?.administrativeData ?? []),\n ]\n return new models.TimeTable(\n await this.crypto.entities\n .entityWithInitialisedEncryptedMetadata(timeTable, undefined, undefined, true, extraDelegations)\n .then((x) => x.updatedEntity)\n )\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param delegateId the id of the data owner which will be granted access to the time table.\n * @param timeTable the time table to share.\n * @param options optional parameters to customize the sharing behaviour:\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWith(\n delegateId: string,\n timeTable: models.TimeTable,\n options: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n } = {}\n ): Promise {\n return this.shareWithMany(timeTable, { [delegateId]: options })\n }\n\n /**\n * Share an existing time table with other data owners, allowing them to access the non-encrypted data of the time table and optionally also\n * the encrypted content, with read-only or read-write permissions.\n * @param timeTable the time table to share.\n * @param delegates sharing options for each delegate.\n * - shareEncryptionKey: specifies if the encryption key of the access log should be shared with the delegate, giving access to all encrypted\n * content of the entity, excluding other encrypted metadata (defaults to {@link ShareMetadataBehaviour.IF_AVAILABLE}). Note that by default a\n * time table does not have encrypted content.\n * @return a promise which will contain the result of the operation: the updated entity if the operation was successful or details of the error if\n * the operation failed.\n */\n async shareWithMany(\n timeTable: models.TimeTable,\n delegates: {\n [delegateId: string]: {\n shareEncryptionKey?: ShareMetadataBehaviour // Defaults to ShareMetadataBehaviour.IF_AVAILABLE\n }\n }\n ): Promise {\n const extended = await this.crypto.entities.entityWithAutoExtendedEncryptedMetadata(timeTable, true, delegates)\n if (!!extended) {\n return await this.modifyTimeTable(extended)\n } else return timeTable\n }\n\n async getDataOwnersWithAccessTo(\n entity: models.TimeTable\n ): Promise<{ permissionsByDataOwnerId: { [p: string]: 'WRITE' }; hasUnknownAnonymousDataOwners: boolean }> {\n return await this.crypto.entities.getDataOwnersWithAccessTo(entity)\n }\n\n async getEncryptionKeysOf(entity: models.TimeTable): Promise {\n return await this.crypto.entities.encryptionKeysOf(entity)\n }\n}\n","import { IccUserApi } from '../icc-api/api/IccUserApi'\nimport { AuthenticationProvider, NoAuthenticationProvider } from './auth/AuthenticationProvider'\n\nexport class IccUserXApi extends IccUserApi {\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise\n\n constructor(\n host: string,\n headers: { [key: string]: string },\n authenticationProvider: AuthenticationProvider = new NoAuthenticationProvider(),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n super(host, headers, authenticationProvider, fetchImpl)\n this.fetchImpl = fetchImpl\n }\n}\n","import {\n IccAgendaApi,\n IccAnonymousAccessApi,\n IccApplicationsettingsApi,\n IccArticleApi,\n IccAuthApi,\n IccBeefactApi,\n IccBeresultexportApi,\n IccBeresultimportApi,\n IccBesamv2Api,\n IccCalendarItemTypeApi,\n IccClassificationTemplateApi,\n IccEntityrefApi,\n IccEntitytemplateApi,\n IccFrontendmigrationApi,\n IccGroupApi,\n IccIcureApi,\n IccInsuranceApi,\n IccKeywordApi,\n IccMedexApi,\n IccMedicallocationApi,\n IccPatientApi,\n IccPermissionApi,\n IccPlaceApi,\n IccPubsubApi,\n IccReplicationApi,\n IccTarificationApi,\n IccTmpApi,\n OAuthThirdParty,\n} from '../icc-api'\nimport { IccUserXApi } from './icc-user-x-api'\nimport { IccCryptoXApi } from './icc-crypto-x-api'\nimport { IccContactXApi } from './icc-contact-x-api'\nimport { IccInvoiceXApi } from './icc-invoice-x-api'\nimport { IccDocumentXApi } from './icc-document-x-api'\nimport { IccHcpartyXApi } from './icc-hcparty-x-api'\nimport { IccFormXApi } from './icc-form-x-api'\nimport { IccHelementXApi } from './icc-helement-x-api'\nimport { IccClassificationXApi } from './icc-classification-x-api'\nimport { IccCalendarItemXApi } from './icc-calendar-item-x-api'\nimport { IccPatientXApi } from './icc-patient-x-api'\nimport { IccMessageXApi } from './icc-message-x-api'\nimport { IccReceiptXApi } from './icc-receipt-x-api'\nimport { IccAccesslogXApi } from './icc-accesslog-x-api'\nimport { IccTimeTableXApi } from './icc-time-table-x-api'\nimport { IccDeviceApi } from '../icc-api'\nimport { IccCodeXApi } from './icc-code-x-api'\nimport { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api'\nimport { IccDataOwnerXApi } from './icc-data-owner-x-api'\nimport { StorageFacade } from './storage/StorageFacade'\nimport { KeyStorageFacade } from './storage/KeyStorageFacade'\nimport { LocalStorageImpl } from './storage/LocalStorageImpl'\nimport { KeyStorageImpl } from './storage/KeyStorageImpl'\nimport {\n AuthenticationProvider,\n BasicAuthenticationProvider,\n EnsembleAuthenticationProvider,\n JwtAuthenticationProvider,\n NoAuthenticationProvider,\n} from './auth/AuthenticationProvider'\nimport { CryptoPrimitives } from './crypto/CryptoPrimitives'\nimport { KeyManager } from './crypto/KeyManager'\nimport { IcureStorageFacade } from './storage/IcureStorageFacade'\nimport { DefaultStorageEntryKeysFactory } from './storage/DefaultStorageEntryKeysFactory'\nimport { KeyRecovery } from './crypto/KeyRecovery'\nimport { BaseExchangeKeysManager } from './crypto/BaseExchangeKeysManager'\nimport { StorageEntryKeysFactory } from './storage/StorageEntryKeysFactory'\nimport { CryptoStrategies } from './crypto/CryptoStrategies'\nimport { ExchangeKeysManager } from './crypto/ExchangeKeysManager'\nimport { ShamirKeysManager } from './crypto/ShamirKeysManager'\nimport { TransferKeysManager } from './crypto/TransferKeysManager'\nimport { IccIcureMaintenanceXApi } from './icc-icure-maintenance-x-api'\nimport { EntitiesEncryption } from './crypto/EntitiesEncryption'\nimport { ConfidentialEntities } from './crypto/ConfidentialEntities'\nimport { ensureDelegationForSelf } from './crypto/utils'\nimport { CryptoActorStubWithType } from '../icc-api/model/CryptoActorStub'\nimport { IccBekmehrXApi } from './icc-bekmehr-x-api'\nimport { IccDoctemplateXApi } from './icc-doctemplate-x-api'\nimport { UserGroup } from '../icc-api/model/UserGroup'\n\nexport * from './icc-accesslog-x-api'\nexport * from './icc-bekmehr-x-api'\nexport * from './icc-calendar-item-x-api'\nexport * from './icc-classification-x-api'\nexport * from './icc-code-x-api'\nexport * from './icc-contact-x-api'\nexport * from './icc-crypto-x-api'\nexport * from './icc-doctemplate-x-api'\nexport * from './icc-document-x-api'\nexport * from './icc-form-x-api'\nexport * from './icc-hcparty-x-api'\nexport * from './icc-helement-x-api'\nexport * from './icc-invoice-x-api'\nexport * from './icc-message-x-api'\nexport * from './icc-patient-x-api'\nexport * from './icc-user-x-api'\nexport * from './icc-time-table-x-api'\nexport * from './icc-receipt-x-api'\nexport * from './utils'\nexport { KeyStorageFacade } from './storage/KeyStorageFacade'\nexport { LocalStorageImpl } from './storage/LocalStorageImpl'\nexport { StorageFacade } from './storage/StorageFacade'\nexport { KeyStorageImpl } from './storage/KeyStorageImpl'\nexport { CryptoStrategies } from './crypto/CryptoStrategies'\n\nexport interface Apis {\n readonly authApi: IccAuthApi\n readonly codeApi: IccCodeXApi\n readonly calendarItemTypeApi: IccCalendarItemTypeApi\n readonly medicalLocationApi: IccMedicallocationApi\n readonly entityReferenceApi: IccEntityrefApi\n readonly userApi: IccUserXApi\n readonly permissionApi: IccPermissionApi\n readonly healthcarePartyApi: IccHcpartyXApi\n readonly deviceApi: IccDeviceApi\n readonly cryptoApi: IccCryptoXApi\n readonly accessLogApi: IccAccesslogXApi\n readonly agendaApi: IccAgendaApi\n readonly contactApi: IccContactXApi\n readonly formApi: IccFormXApi\n readonly groupApi: IccGroupApi\n readonly invoiceApi: IccInvoiceXApi\n readonly insuranceApi: IccInsuranceApi\n readonly documentApi: IccDocumentXApi\n readonly healthcareElementApi: IccHelementXApi\n readonly classificationApi: IccClassificationXApi\n readonly calendarItemApi: IccCalendarItemXApi\n readonly receiptApi: IccReceiptXApi\n readonly timetableApi: IccTimeTableXApi\n readonly patientApi: IccPatientXApi\n readonly messageApi: IccMessageXApi\n readonly maintenanceTaskApi: IccMaintenanceTaskXApi\n readonly dataOwnerApi: IccDataOwnerXApi\n readonly icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n readonly anonymousAccessApi: IccAnonymousAccessApi\n readonly applicationSettingsApi: IccApplicationsettingsApi\n readonly articleApi: IccArticleApi\n readonly bekmehrApi: IccBekmehrXApi\n readonly beefactApi: IccBeefactApi\n readonly beresultexportApi: IccBeresultexportApi\n readonly beresultimportApi: IccBeresultimportApi\n readonly besamv2Api: IccBesamv2Api\n readonly classificationTemplateApi: IccClassificationTemplateApi\n readonly doctemplateApi: IccDoctemplateXApi\n readonly entitytemplateApi: IccEntitytemplateApi\n readonly frontendmigrationApi: IccFrontendmigrationApi\n readonly icureApi: IccIcureApi\n readonly keywordApi: IccKeywordApi\n readonly medexApi: IccMedexApi\n readonly placeApi: IccPlaceApi\n readonly pubsubApi: IccPubsubApi\n readonly replicationApi: IccReplicationApi\n readonly tarificationApi: IccTarificationApi\n readonly tmpApi: IccTmpApi\n}\n\n/**\n * Allows to customise the behaviour of the iCure API by providing various optional parameters.\n */\nexport interface IcureApiOptions {\n /**\n * Specifies how iCure can store string values (e.g. json). In production this should be persistent storage.\n * @default the browser's localStorage.\n */\n readonly storage?: StorageFacade\n /**\n * Specifies how iCure can store cryptographic keys. Preferably this should be some ad-hoc storage key storage.\n * @default stores the json of the jwk representation of the key in {@link storage}.\n */\n readonly keyStorage?: KeyStorageFacade\n /**\n * Specifies where iCure should store his data within the {@link storage} and {@link keyStorage}.\n * @default {@link DefaultStorageEntryKeysFactory}\n */\n readonly entryKeysFactory?: StorageEntryKeysFactory\n /**\n * Specifies if iCure should create maintenance tasks for requesting access back when a new key is generated at initialisation time.\n * @default true\n */\n readonly createMaintenanceTasksOnNewKey?: boolean\n /**\n * Additional headers to use on each request made by the iCure api.\n * @default no additional headers\n */\n readonly headers?: { [headerName: string]: string }\n /**\n * Specifies which fields should be encrypted for each kind of encryptable entity. You should make sure that every application in your environment\n * specifies the same values for this configuration.\n * @default see documentation for {@link EncryptedFieldsConfig}\n */\n readonly encryptedFieldsConfig?: EncryptedFieldsConfig\n /**\n * Each user may exist in multiple groups, but an instance of {@link IcureApi} is specialised for a single group. This function allows you to decide\n * the group to use for a given user. This functions will be called only if a user exists in at least 2 groups, takes in input the information on\n * the groups the user can access (in no specific order) and must return the id of one of these groups.\n * @default takes the first group provided. The group chosen by this method may vary between different instantiations of the {@link IcureApi} even\n * if for the same user and if the groups available for the user do not change.\n */\n readonly groupSelector?: (availableGroupsInfo: UserGroup[]) => Promise\n}\nnamespace IcureApiOptions {\n export namespace Defaults {\n export const entryKeysFactory = new DefaultStorageEntryKeysFactory()\n export const createMaintenanceTasksOnNewKey = true\n export const headers = {}\n }\n export class WithDefaults implements IcureApiOptions {\n constructor(custom: IcureApiOptions) {\n this.entryKeysFactory = custom.entryKeysFactory ?? Defaults.entryKeysFactory\n this.createMaintenanceTasksOnNewKey = custom.createMaintenanceTasksOnNewKey ?? Defaults.createMaintenanceTasksOnNewKey\n this.storage = custom.storage ?? new LocalStorageImpl()\n this.keyStorage = custom.keyStorage ?? new KeyStorageImpl(this.storage)\n this.headers = custom.headers ?? Defaults.headers\n this.encryptedFieldsConfig = custom.encryptedFieldsConfig ?? EncryptedFieldsConfig.Defaults\n this.groupSelector = custom.groupSelector ?? ((groups) => Promise.resolve(groups[0].groupId!))\n }\n\n readonly entryKeysFactory: StorageEntryKeysFactory\n readonly createMaintenanceTasksOnNewKey: boolean\n readonly storage: StorageFacade\n readonly keyStorage: KeyStorageFacade\n readonly headers: { [headerName: string]: string }\n readonly encryptedFieldsConfig: EncryptedFieldsConfig\n readonly groupSelector: (availableGroupsInfo: UserGroup[]) => Promise\n }\n}\n\n/**\n * Specifies which fields should be encrypted for each kind of encryptable entity.\n * Note that any value you specify here overrides the default values. For example if you specify `['medicalLocationId']` for `healthElement` the\n * fields `['descr', 'note']` which are usually encrypted by default will no longer be encrypted. If you want to add fields to the default values\n * you can use {@link EncryptedFieldsConfig.Defaults}, for example `[...EncryptedFieldsConfig.Defaults.healthElement, 'medicalLocationId'].\n */\nexport interface EncryptedFieldsConfig {\n /**\n * Fields to encrypt for entities of type {@link AccessLog}\n * @default ['detail', 'objectId']\n */\n readonly accessLog?: string[]\n /**\n * Fields to encrypt for entities of type {@link CalendarItem}\n * @default ['details', 'title', 'patientId']\n */\n readonly calendarItem?: string[]\n /*TODO\n * configuration not yet supported for contact; automatically applies to descr and content of services\n */\n // readonly contact?: string[]\n /**\n * Fields to encrypt for entities of type {@link HealthElement}\n * @default ['descr', 'note']\n */\n readonly healthElement?: string[]\n /**\n * Fields to encrypt for entities of type {@link MaintenanceTask}\n * @default ['properties']\n */\n readonly maintenanceTask?: string[]\n /**\n * Fields to encrypt for entities of type {@link Patient}\n * @default ['note']\n */\n readonly patient?: string[]\n}\nexport namespace EncryptedFieldsConfig {\n export const Defaults = {\n accessLog: ['detail', 'objectId'],\n calendarItem: ['details', 'title', 'patientId'],\n // TODO contact\n healthElement: ['descr', 'note'],\n maintenanceTask: ['properties'],\n patient: ['note'],\n }\n}\n\n/**\n * Details for the authentication of a user\n */\nexport type AuthenticationDetails = {\n username: string\n password: string\n forceBasic?: boolean // default false\n icureTokens?: { token: string; refreshToken: string }\n thirdPartyTokens?: { [thirdParty: string]: string }\n}\n\n/**\n * Main entry point for the iCure API. Provides entity-specific sub-apis and some general methods which are not related to a specific entity.\n */\nexport interface IcureApi extends Apis {\n /**\n * Get the information on groups that the current user can access and the current group that this api instance is working on.\n * Note that the values you will get for `availableGroups` may differ from the values you would get if you call {@link IccUserApi.getMatchingUsers}\n * on {@link Apis.userApi}, since the latter is specialised on the specific instance of the user in `currentGroup`.\n */\n getGroupsInfo(): Promise<{ currentGroup: UserGroup; availableGroups: UserGroup[] }>\n\n /**\n * Switches the api to allow the user to work on a different group.\n * @param newGroupId the id of the group to switch to.\n * @return a new api for the specified group.\n */\n switchGroup(newGroupId: string): Promise\n}\nexport namespace IcureApi {\n /**\n * Initialises a new instance of the iCure API.\n */\n export async function initialise(\n host: string,\n authenticationOptions: AuthenticationDetails | AuthenticationProvider,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n options: IcureApiOptions = {}\n ): Promise {\n const params = new IcureApiOptions.WithDefaults(options)\n let grouplessAuthenticationProvider: AuthenticationProvider\n if ('username' in authenticationOptions && 'password' in authenticationOptions) {\n grouplessAuthenticationProvider = new EnsembleAuthenticationProvider(\n new IccAuthApi(host, params.headers, new NoAuthenticationProvider(), fetchImpl),\n authenticationOptions.username,\n authenticationOptions.password,\n 3600,\n undefined,\n undefined,\n authenticationOptions.thirdPartyTokens\n )\n } else if ('icureTokens' in authenticationOptions) {\n grouplessAuthenticationProvider = new JwtAuthenticationProvider(\n new IccAuthApi(host, {}, new NoAuthenticationProvider(), fetchImpl),\n undefined,\n undefined,\n undefined,\n (authenticationOptions as unknown as AuthenticationDetails).icureTokens!\n )\n } else {\n grouplessAuthenticationProvider = authenticationOptions\n }\n const grouplessUserApi = new IccUserXApi(host, params.headers, grouplessAuthenticationProvider, fetchImpl)\n const matches = await grouplessUserApi.getMatchingUsers()\n const chosenGroupId = matches.length > 1 ? await params.groupSelector(matches) : matches[0].groupId!\n /*TODO\n * On new very new users switching the authentication provider to a specific group may fail and block the user for too many requests. This is\n * probably linked to replication of the user in the fallback database.\n */\n const groupSpecificAuthenticationProvider =\n matches.length > 1 ? await grouplessAuthenticationProvider.switchGroup(chosenGroupId, matches) : grouplessAuthenticationProvider\n const cryptoApis = await initialiseCryptoWithProvider(host, fetchImpl, groupSpecificAuthenticationProvider, params, cryptoStrategies, crypto)\n return new IcureApiImpl(\n cryptoApis,\n host,\n groupSpecificAuthenticationProvider,\n fetch,\n grouplessUserApi,\n matches,\n matches.find((match) => match.groupId === chosenGroupId)!,\n params,\n cryptoStrategies\n )\n }\n}\n\n// Apis which are used during crypto api initialisation, to avoid re-instantiating them later\ntype CryptoInitialisationApis = {\n cryptoApi: IccCryptoXApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceApi\n // no patient api since it is base\n dataOwnerApi: IccDataOwnerXApi\n userApi: IccUserXApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n}\n\nasync function initialiseCryptoWithProvider(\n host: string,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise,\n groupSpecificAuthenticationProvider: AuthenticationProvider,\n params: IcureApiOptions.WithDefaults,\n cryptoStrategies: CryptoStrategies,\n crypto: Crypto\n): Promise {\n const healthcarePartyApi = new IccHcpartyXApi(host, params.headers, groupSpecificAuthenticationProvider, fetchImpl)\n const deviceApi = new IccDeviceApi(host, params.headers, groupSpecificAuthenticationProvider, fetchImpl)\n const basePatientApi = new IccPatientApi(host, params.headers, groupSpecificAuthenticationProvider, fetchImpl)\n const dataOwnerApi = new IccDataOwnerXApi(host, params.headers, groupSpecificAuthenticationProvider, fetchImpl)\n // Crypto initialisation\n const icureStorage = new IcureStorageFacade(params.keyStorage, params.storage, params.entryKeysFactory)\n const cryptoPrimitives = new CryptoPrimitives(crypto)\n const baseExchangeKeysManager = new BaseExchangeKeysManager(cryptoPrimitives, dataOwnerApi, healthcarePartyApi, basePatientApi, deviceApi)\n const keyRecovery = new KeyRecovery(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi)\n const keyManager = new KeyManager(cryptoPrimitives, dataOwnerApi, icureStorage, keyRecovery, baseExchangeKeysManager, cryptoStrategies)\n const newKey = await keyManager.initialiseKeys()\n await new TransferKeysManager(cryptoPrimitives, baseExchangeKeysManager, dataOwnerApi, keyManager, icureStorage).updateTransferKeys(\n CryptoActorStubWithType.fromDataOwner(await dataOwnerApi.getCurrentDataOwner())\n )\n // TODO customise cache size?\n const exchangeKeysManager = new ExchangeKeysManager(\n 100,\n 500,\n 60000,\n 600000,\n cryptoStrategies,\n cryptoPrimitives,\n keyManager,\n baseExchangeKeysManager,\n dataOwnerApi,\n icureStorage\n )\n const entitiesEncryption = new EntitiesEncryption(cryptoPrimitives, dataOwnerApi, exchangeKeysManager)\n const shamirManager = new ShamirKeysManager(cryptoPrimitives, dataOwnerApi, keyManager, exchangeKeysManager)\n const confidentialEntitites = new ConfidentialEntities(entitiesEncryption, cryptoPrimitives, dataOwnerApi)\n await ensureDelegationForSelf(dataOwnerApi, entitiesEncryption, cryptoPrimitives, basePatientApi)\n const cryptoApi = new IccCryptoXApi(\n exchangeKeysManager,\n cryptoPrimitives,\n keyManager,\n dataOwnerApi,\n entitiesEncryption,\n shamirManager,\n params.storage,\n params.keyStorage,\n icureStorage,\n healthcarePartyApi,\n confidentialEntitites\n )\n const maintenanceTaskApi = new IccMaintenanceTaskXApi(\n host,\n params.headers,\n cryptoApi,\n healthcarePartyApi,\n dataOwnerApi,\n params.encryptedFieldsConfig?.maintenanceTask ?? EncryptedFieldsConfig.Defaults.maintenanceTask,\n groupSpecificAuthenticationProvider,\n fetchImpl\n )\n const icureMaintenanceTaskApi = new IccIcureMaintenanceXApi(cryptoApi, maintenanceTaskApi, dataOwnerApi)\n const userApi = new IccUserXApi(host, params.headers, groupSpecificAuthenticationProvider, fetchImpl)\n if (newKey && params.createMaintenanceTasksOnNewKey) {\n await icureMaintenanceTaskApi.createMaintenanceTasksForNewKeypair(await userApi.getCurrentUser(), newKey.newKeyPair)\n }\n return {\n cryptoApi,\n healthcarePartyApi,\n deviceApi,\n dataOwnerApi,\n userApi,\n icureMaintenanceTaskApi,\n maintenanceTaskApi,\n }\n}\n\nclass IcureApiImpl implements IcureApi {\n private latestGroupsRequest: Promise\n private _authApi: IccAuthApi | undefined\n private _codeApi: IccCodeXApi | undefined\n private _calendarItemTypeApi: IccCalendarItemTypeApi | undefined\n private _medicalLocationApi: IccMedicallocationApi | undefined\n private _entityReferenceApi: IccEntityrefApi | undefined\n private _permissionApi: IccPermissionApi | undefined\n private _accessLogApi: IccAccesslogXApi | undefined\n private _agendaApi: IccAgendaApi | undefined\n private _contactApi: IccContactXApi | undefined\n private _formApi: IccFormXApi | undefined\n private _groupApi: IccGroupApi | undefined\n private _invoiceApi: IccInvoiceXApi | undefined\n private _insuranceApi: IccInsuranceApi | undefined\n private _documentApi: IccDocumentXApi | undefined\n private _healthcareElementApi: IccHelementXApi | undefined\n private _classificationApi: IccClassificationXApi | undefined\n private _calendarItemApi: IccCalendarItemXApi | undefined\n private _receiptApi: IccReceiptXApi | undefined\n private _timetableApi: IccTimeTableXApi | undefined\n private _patientApi: IccPatientXApi | undefined\n private _messageApi: IccMessageXApi | undefined\n private _anonymousAccessApi: IccAnonymousAccessApi | undefined\n private _applicationSettingsApi: IccApplicationsettingsApi | undefined\n private _articleApi: IccArticleApi | undefined\n private _bekmehrApi: IccBekmehrXApi | undefined\n private _beefactApi: IccBeefactApi | undefined\n private _beresultexportApi: IccBeresultexportApi | undefined\n private _beresultimportApi: IccBeresultimportApi | undefined\n private _besamv2Api: IccBesamv2Api | undefined\n private _classificationTemplateApi: IccClassificationTemplateApi | undefined\n private _doctemplateApi: IccDoctemplateXApi | undefined\n private _entitytemplateApi: IccEntitytemplateApi | undefined\n private _frontendmigrationApi: IccFrontendmigrationApi | undefined\n private _icureApi: IccIcureApi | undefined\n private _keywordApi: IccKeywordApi | undefined\n private _medexApi: IccMedexApi | undefined\n private _placeApi: IccPlaceApi | undefined\n private _pubsubApi: IccPubsubApi | undefined\n private _replicationApi: IccReplicationApi | undefined\n private _tarificationApi: IccTarificationApi | undefined\n private _tmpApi: IccTmpApi | undefined\n\n get cryptoApi(): IccCryptoXApi {\n return this.cryptoInitApis.cryptoApi\n }\n\n get dataOwnerApi(): IccDataOwnerXApi {\n return this.cryptoInitApis.dataOwnerApi\n }\n\n get accessLogApi(): IccAccesslogXApi {\n return (\n this._accessLogApi ??\n (this._accessLogApi = new IccAccesslogXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.params.encryptedFieldsConfig.accessLog ?? EncryptedFieldsConfig.Defaults.accessLog,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get agendaApi(): IccAgendaApi {\n return (\n this._agendaApi ?? (this._agendaApi = new IccAgendaApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get anonymousAccessApi(): IccAnonymousAccessApi {\n return (\n this._anonymousAccessApi ??\n (this._anonymousAccessApi = new IccAnonymousAccessApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get applicationSettingsApi(): IccApplicationsettingsApi {\n return (\n this._applicationSettingsApi ??\n (this._applicationSettingsApi = new IccApplicationsettingsApi(\n this.host,\n this.params.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get articleApi(): IccArticleApi {\n return (\n this._articleApi ?? (this._articleApi = new IccArticleApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get authApi(): IccAuthApi {\n return this._authApi ?? (this._authApi = new IccAuthApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get beefactApi(): IccBeefactApi {\n return (\n this._beefactApi ?? (this._beefactApi = new IccBeefactApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get bekmehrApi(): IccBekmehrXApi {\n return (\n this._bekmehrApi ??\n (this._bekmehrApi = new IccBekmehrXApi(\n this.host,\n this.params.headers,\n this.authApi,\n this.contactApi,\n this.healthcareElementApi,\n this.documentApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get beresultexportApi(): IccBeresultexportApi {\n return (\n this._beresultexportApi ??\n (this._beresultexportApi = new IccBeresultexportApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get beresultimportApi(): IccBeresultimportApi {\n return (\n this._beresultimportApi ??\n (this._beresultimportApi = new IccBeresultimportApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get besamv2Api(): IccBesamv2Api {\n return (\n this._besamv2Api ?? (this._besamv2Api = new IccBesamv2Api(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get calendarItemApi(): IccCalendarItemXApi {\n return (\n this._calendarItemApi ??\n (this._calendarItemApi = new IccCalendarItemXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.params.encryptedFieldsConfig.calendarItem ?? EncryptedFieldsConfig.Defaults.calendarItem,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get calendarItemTypeApi(): IccCalendarItemTypeApi {\n return (\n this._calendarItemTypeApi ??\n (this._calendarItemTypeApi = new IccCalendarItemTypeApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get classificationApi(): IccClassificationXApi {\n return (\n this._classificationApi ??\n (this._classificationApi = new IccClassificationXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get classificationTemplateApi(): IccClassificationTemplateApi {\n return (\n this._classificationTemplateApi ??\n (this._classificationTemplateApi = new IccClassificationTemplateApi(\n this.host,\n this.params.headers,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get codeApi(): IccCodeXApi {\n return this._codeApi ?? (this._codeApi = new IccCodeXApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get contactApi(): IccContactXApi {\n return (\n this._contactApi ??\n (this._contactApi = new IccContactXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get deviceApi(): IccDeviceApi {\n return this.cryptoInitApis.deviceApi\n }\n get doctemplateApi(): IccDoctemplateXApi {\n return (\n this._doctemplateApi ??\n (this._doctemplateApi = new IccDoctemplateXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get documentApi(): IccDocumentXApi {\n return (\n this._documentApi ??\n (this._documentApi = new IccDocumentXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.authApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get entityReferenceApi(): IccEntityrefApi {\n return (\n this._entityReferenceApi ??\n (this._entityReferenceApi = new IccEntityrefApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get entitytemplateApi(): IccEntitytemplateApi {\n return (\n this._entitytemplateApi ??\n (this._entitytemplateApi = new IccEntitytemplateApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get formApi(): IccFormXApi {\n return (\n this._formApi ??\n (this._formApi = new IccFormXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get frontendmigrationApi(): IccFrontendmigrationApi {\n return (\n this._frontendmigrationApi ??\n (this._frontendmigrationApi = new IccFrontendmigrationApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get groupApi(): IccGroupApi {\n return this._groupApi ?? (this._groupApi = new IccGroupApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get healthcareElementApi(): IccHelementXApi {\n return (\n this._healthcareElementApi ??\n (this._healthcareElementApi = new IccHelementXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.params.encryptedFieldsConfig.healthElement ?? EncryptedFieldsConfig.Defaults.healthElement,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get healthcarePartyApi(): IccHcpartyXApi {\n return this.cryptoInitApis.healthcarePartyApi\n }\n get icureApi(): IccIcureApi {\n return this._icureApi ?? (this._icureApi = new IccIcureApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get icureMaintenanceTaskApi(): IccIcureMaintenanceXApi {\n return this.cryptoInitApis.icureMaintenanceTaskApi\n }\n get insuranceApi(): IccInsuranceApi {\n return (\n this._insuranceApi ??\n (this._insuranceApi = new IccInsuranceApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get invoiceApi(): IccInvoiceXApi {\n return (\n this._invoiceApi ??\n (this._invoiceApi = new IccInvoiceXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.entityReferenceApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get keywordApi(): IccKeywordApi {\n return (\n this._keywordApi ?? (this._keywordApi = new IccKeywordApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get maintenanceTaskApi(): IccMaintenanceTaskXApi {\n return this.cryptoInitApis.maintenanceTaskApi\n }\n get medexApi(): IccMedexApi {\n return this._medexApi ?? (this._medexApi = new IccMedexApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get medicalLocationApi(): IccMedicallocationApi {\n return (\n this._medicalLocationApi ??\n (this._medicalLocationApi = new IccMedicallocationApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get messageApi(): IccMessageXApi {\n return (\n this._messageApi ??\n (this._messageApi = new IccMessageXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get patientApi(): IccPatientXApi {\n return (\n this._patientApi ??\n (this._patientApi = new IccPatientXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.contactApi,\n this.formApi,\n this.healthcareElementApi,\n this.invoiceApi,\n this.documentApi,\n this.healthcarePartyApi,\n this.classificationApi,\n this.dataOwnerApi,\n this.calendarItemApi,\n this.params.encryptedFieldsConfig.patient ?? EncryptedFieldsConfig.Defaults.patient,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get permissionApi(): IccPermissionApi {\n return (\n this._permissionApi ??\n (this._permissionApi = new IccPermissionApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get placeApi(): IccPlaceApi {\n return this._placeApi ?? (this._placeApi = new IccPlaceApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get pubsubApi(): IccPubsubApi {\n return (\n this._pubsubApi ?? (this._pubsubApi = new IccPubsubApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get receiptApi(): IccReceiptXApi {\n return (\n this._receiptApi ??\n (this._receiptApi = new IccReceiptXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get replicationApi(): IccReplicationApi {\n return (\n this._replicationApi ??\n (this._replicationApi = new IccReplicationApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get tarificationApi(): IccTarificationApi {\n return (\n this._tarificationApi ??\n (this._tarificationApi = new IccTarificationApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n )\n }\n get timetableApi(): IccTimeTableXApi {\n return (\n this._timetableApi ??\n (this._timetableApi = new IccTimeTableXApi(\n this.host,\n this.params.headers,\n this.cryptoApi,\n this.dataOwnerApi,\n this.groupSpecificAuthenticationProvider,\n this.fetch\n ))\n )\n }\n get tmpApi(): IccTmpApi {\n return this._tmpApi ?? (this._tmpApi = new IccTmpApi(this.host, this.params.headers, this.groupSpecificAuthenticationProvider, this.fetch))\n }\n get userApi(): IccUserXApi {\n return this.cryptoInitApis.userApi\n }\n\n constructor(\n private readonly cryptoInitApis: CryptoInitialisationApis,\n private readonly host: string,\n private readonly groupSpecificAuthenticationProvider: AuthenticationProvider,\n private readonly fetch: (input: RequestInfo, init?: RequestInit) => Promise,\n private readonly grouplessUserApi: IccUserXApi,\n private readonly latestMatches: UserGroup[],\n private readonly currentGroupInfo: UserGroup,\n private readonly params: IcureApiOptions.WithDefaults,\n private readonly cryptoStrategies: CryptoStrategies\n ) {\n this.latestGroupsRequest = Promise.resolve(latestMatches)\n }\n\n async getGroupsInfo(): Promise<{ currentGroup: UserGroup; availableGroups: UserGroup[] }> {\n this.latestGroupsRequest = this.grouplessUserApi.getMatchingUsers()\n return { currentGroup: this.currentGroupInfo, availableGroups: await this.latestGroupsRequest }\n }\n\n async switchGroup(newGroupId: string): Promise {\n const availableGroups = await this.latestGroupsRequest\n const switchedProvider = await this.groupSpecificAuthenticationProvider.switchGroup(newGroupId, availableGroups)\n const cryptoInitApis = await initialiseCryptoWithProvider(\n this.host,\n this.fetch,\n switchedProvider,\n this.params,\n this.cryptoStrategies,\n this.cryptoApi.primitives.crypto\n )\n return new IcureApiImpl(\n cryptoInitApis,\n this.host,\n switchedProvider,\n this.fetch,\n this.grouplessUserApi,\n availableGroups,\n availableGroups.find((x) => x.groupId === newGroupId)!,\n this.params,\n this.cryptoStrategies\n )\n }\n}\n\n/**\n * @experimental This function still needs development and will be changed\n * Build apis which do not need crypto and can be used by non-data-owner users\n */\nexport const BasicApis = async function (\n host: string,\n username: string,\n password: string,\n crypto: Crypto = typeof window !== 'undefined' ? window.crypto : typeof self !== 'undefined' ? self.crypto : ({} as Crypto),\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch,\n forceBasic: boolean = false\n) {\n const headers = {}\n const authenticationProvider = forceBasic\n ? new BasicAuthenticationProvider(username, password)\n : new EnsembleAuthenticationProvider(new IccAuthApi(host, headers, new NoAuthenticationProvider(), fetchImpl), username, password)\n const authApi = new IccAuthApi(host, headers, authenticationProvider, fetchImpl)\n\n const codeApi = new IccCodeXApi(host, headers, authenticationProvider, fetchImpl)\n const entityReferenceApi = new IccEntityrefApi(host, headers, authenticationProvider, fetchImpl)\n const userApi = new IccUserXApi(host, headers, authenticationProvider, fetchImpl)\n const permissionApi = new IccPermissionApi(host, headers, authenticationProvider, fetchImpl)\n const agendaApi = new IccAgendaApi(host, headers, authenticationProvider, fetchImpl)\n const groupApi = new IccGroupApi(host, headers, authenticationProvider)\n const insuranceApi = new IccInsuranceApi(host, headers, authenticationProvider, fetchImpl)\n const healthcarePartyApi = new IccHcpartyXApi(host, headers, authenticationProvider, fetchImpl)\n\n return {\n authApi,\n codeApi,\n userApi,\n permissionApi,\n insuranceApi,\n entityReferenceApi,\n agendaApi,\n groupApi,\n healthcarePartyApi,\n }\n}\n","/**\n * Represents a request to update aes exchange keys following the creation of a new key pair for a data owner.\n */\nimport { MaintenanceTask } from '../../icc-api/model/MaintenanceTask'\nimport { PropertyStub } from '../../icc-api/model/PropertyStub'\n\nexport interface KeyPairUpdateRequest {\n /**\n * New public key of the data owner, in hex-encoded spki format.\n */\n readonly newPublicKey: string\n\n /**\n * Id of the data owner which created a new key pair and wants to regain access to his exchange keys.\n */\n readonly concernedDataOwnerId: string\n\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n readonly originalTask?: MaintenanceTask\n}\n\nexport namespace KeyPairUpdateRequest {\n /**\n * Create a key pair update request from a maintenance task.\n */\n export function fromMaintenanceTask(task: MaintenanceTask): KeyPairUpdateRequest {\n if (task.taskType !== KeyPairUpdateRequest.TASK_TYPE)\n throw new Error(`Key pair update tasks should have task type ${KeyPairUpdateRequest.TASK_TYPE}, but got task with type ${task.taskType}`)\n\n function findStringProp(propId: string): string {\n const prop: PropertyStub | undefined = task.properties?.find((x) => x.id === propId)\n if (!prop) throw new Error(`Task is missing required string property ${propId} for KeyPairUpdateRequest. ${JSON.stringify(task)}`)\n const propValue = prop.typedValue?.stringValue\n if (!propValue)\n throw new Error(`Invalid value ${prop.typedValue?.stringValue} for property ${propId} for KeyPairUpdateRequest. ${JSON.stringify(task)}`)\n return propValue\n }\n\n return {\n concernedDataOwnerId: findStringProp(KeyPairUpdateRequest.OWNER_ID_PROP_ID),\n newPublicKey: findStringProp(KeyPairUpdateRequest.OWNER_PUB_PROP_ID),\n originalTask: task,\n }\n }\n}\n\nexport namespace KeyPairUpdateRequest {\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const OWNER_ID_PROP_ID = 'dataOwnerConcernedId'\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const OWNER_PUB_PROP_ID = 'dataOwnerConcernedPubKey'\n /**\n * @internal this field is intended for internal use only and may be changed in future without notice\n */\n export const TASK_TYPE = MaintenanceTask.TaskTypeEnum.KeyPairUpdate\n}\n","export default {\n 'BE-THESAURUS': ['fr', 'nl'],\n 'CD-ATC': ['fr', 'nl'],\n 'CD-DRUG-CNK': ['fr', 'nl'],\n 'CD-INNCLUSTER': ['fr', 'nl'],\n ICPC: ['fr', 'nl'],\n ICD: ['fr', 'nl'],\n}\n","export default {\n fr: {\n package: 'boîte',\n packages: 'boîtes',\n packageOf: 'boîte de',\n packagesOf: 'boîtes de',\n during: 'pendant',\n take_s_: 'prise(s)',\n weekly: '/semaine',\n monthly: '/mois',\n daily: '/jour',\n the: 'le',\n onDay: 'le jour',\n on: 'le',\n afterwakingup: 'Au lever',\n afterbreakfast: 'Après ptit déj.',\n afterdinner: 'Après rep. soir',\n afterlunch: 'Après rep. midi',\n afternoon: 'Après-midi',\n beforebreakfast: 'Avant ptit déj.',\n beforedinner: 'Avant rep. soir',\n beforelunch: 'Avant rep. midi',\n duringbreakfast: 'Pdt ptit déj.',\n duringdinner: 'Pdt rep. soir',\n duringlunch: 'Pdt rep. midi',\n betweenbreakfastandlunch: 'Entre ptit déj et rep. midi',\n betweenlunchanddinner: 'Entre rep. midi et rep. soir',\n betweendinnerandsleep: 'Entre rep. soir et couch.',\n evening: 'Soir',\n knownuse: 'Usage connu',\n morning: 'Matin',\n night: 'Avt couch.',\n midday: 'Midi',\n noon: 'Midi',\n at: 'à',\n thehourofsleep: 'Au coucher',\n },\n en: {\n package: 'package',\n packages: 'packages',\n packageOf: 'package of',\n packagesOf: 'packages of',\n during: 'during',\n take_s_: 'take(s)',\n weekly: 'weekly',\n monthly: 'monthly',\n daily: 'daily',\n the: 'the',\n onDay: 'on day',\n on: 'on',\n afterwakingup: 'After Waking Up',\n afterbreakfast: 'After Breakfast',\n afterdinner: 'After Dinner',\n afterlunch: 'After Lunch',\n afternoon: 'Afternoon',\n beforebreakfast: 'Before Breakfast',\n beforedinner: 'Before Dinner',\n beforelunch: 'Before Lunch',\n duringbreakfast: 'During Breakfast',\n duringdinner: 'During Dinner',\n duringlunch: 'During Lunch',\n betweenbreakfastandlunch: 'Between Breakfast and Lunch',\n betweenlunchanddinner: 'Between Lunch and Dinner',\n betweendinnerandsleep: 'Between Dinner and Sleep',\n evening: 'Evening',\n knownuse: 'Known Usage',\n morning: 'Morning',\n night: 'Night',\n midday: 'Midday',\n noon: 'Noon',\n at: 'at',\n thehourofsleep: 'At Bedtime',\n },\n nl: {\n package: 'verpakking',\n packages: 'verpakkingen',\n packageOf: 'verpakking van',\n packagesOf: 'verpakkingen van',\n during: 'gedurende',\n take_s_: 'inname(s)',\n weekly: 'wekelijks',\n monthly: 'maandelijks',\n daily: 'dagelijks',\n the: 'de',\n onDay: 'op dag',\n on: 'op',\n afterwakingup: 'Bij het opstaan',\n afterbreakfast: 'Na ontbijt',\n afterdinner: 'Na avondeten',\n afterlunch: 'Na middageten',\n afternoon: 'Namiddag',\n beforebreakfast: 'Voor ontbijt',\n beforedinner: 'Voor avondeten',\n beforelunch: 'Voor middageten',\n duringbreakfast: 'Tijdens ontbijt',\n duringdinner: 'Tijdens avondeten',\n duringlunch: 'Tijdens middageten',\n betweenbreakfastandlunch: 'Tussen ontbijt en middageten',\n betweenlunchanddinner: 'Tussen middag- en avondeten',\n betweendinnerandsleep: 'Tussen avondmaal en slapeneten',\n evening: 'Avond',\n knownuse: 'Gekend gebruik',\n morning: \"'s Morgens\",\n night: 'Vóór slapengaan',\n midday: 'Middag',\n noon: 'Middag',\n at: 'om',\n thehourofsleep: 'Voor het slapen',\n },\n}\n","export default {\n 'A00-B99': {\n en: 'Infectious and parasitic',\n fr: 'Infections & parasites',\n colour: 'ICD-10--IV',\n },\n 'C00-D48': {\n en: 'Neoplasms',\n fr: 'Tumeurs',\n colour: 'ICD-10--IV',\n },\n 'D49-D89': {\n en: 'Blood & immunity',\n fr: 'Sang & immunité',\n colour: 'ICD-10--IV',\n },\n 'E00-E99': {\n en: 'Endocrine, nutritional & metabolic',\n fr: 'Endocrino, nutrition et métabolisme',\n colour: 'ICD-10--IV',\n },\n 'F00-F99': {\n en: 'Mental and behavioural disorders',\n fr: 'Troubles mentaux et du comportement',\n colour: 'ICD-10--V',\n },\n 'G00-G99': {\n en: 'Nervous system',\n fr: 'Système nerveux',\n colour: 'ICD-10--VI',\n },\n 'H00-H59': {\n en: 'Eye and adnexa',\n fr: 'Œil et de ses annexes',\n colour: 'ICD-10--VII',\n },\n 'H60-H99': {\n en: 'Ear and mastoid process',\n fr: \"Oreille et de l'apophyse mastoïde\",\n colour: 'ICD-10--VII',\n },\n 'I00-I99': {\n en: 'Circulatory system',\n fr: 'Appareil circulatoire',\n colour: 'ICD-10--VIII',\n },\n 'J00-J99': {\n en: 'Respiratory system',\n fr: 'Appareil respiratoire',\n colour: 'ICD-10--IX',\n },\n 'K00-K99': {\n en: 'Digestive system',\n fr: 'Appareil digestif',\n colour: 'ICD-10--X',\n },\n 'L00-L99': {\n en: 'Skin and subcutaneous tissue',\n fr: 'Peau et Tissu cellulaire sous-cutané',\n colour: 'ICD-10--XI',\n },\n 'M00-M99': {\n en: 'Musculoskeletal system and connective tissue',\n fr: 'Système ostéo-articulaire, des muscles et du tissu conjonctif',\n colour: 'ICD-10--XII',\n },\n 'N00-N99': {\n en: 'Genitourinary system',\n fr: 'Appareil génito-urinaire',\n colour: 'ICD-10--XIII',\n },\n 'O00-O99': {\n en: 'Pregnancy, childbirth and the puerperium',\n fr: 'Grossesse, accouchement et puerpéralité',\n colour: 'ICD-10--XIV',\n },\n 'P00-P99': {\n en: 'Perinatal period conditions',\n fr: 'Affections périnatale',\n colour: 'ICD-10--XV',\n },\n 'Q00-Q99': {\n en: 'Congenital malformations, deformations and chromosomal abnormalities',\n fr: 'Malformations congénitales et anomalies chromosomiques',\n colour: 'ICD-10--XVI',\n },\n 'R00-R69': {\n en: 'Symptoms and signs',\n fr: 'Symptômes et signes',\n colour: 'ICD-10--other',\n },\n 'R70-R94': {\n en: 'Abnormal clinical and laboratory findings',\n fr: 'Examens cliniques et laboratoires anormaux',\n colour: 'ICD-10--other',\n },\n 'R95-R99': {\n en: 'Ill-defined and unknown causes of mortality',\n fr: 'Cause de décès mal-définie ou inconnue',\n colour: 'ICD-10--other',\n },\n 'S00-T99': {\n en: 'Injuries & poisoning',\n fr: 'Traumato & toxicologie',\n colour: 'ICD-10--other',\n },\n 'U00-Y99': { en: 'Unsorted', fr: 'Non-classé', colour: 'ICD-10--other' },\n 'Z00-Z99': {\n en: 'General health status',\n fr: 'Etat général',\n colour: 'ICD-10--other',\n },\n}\n","export default {\n A: { en: 'General and unspecified', colour: 'ICPC-2--A' },\n B: {\n en: 'Blood, blood forming organs, lymphatics, spleen',\n colour: 'ICPC-2--B',\n },\n D: { en: 'Digestive', colour: 'ICPC-2--D' },\n F: { en: 'Eye', colour: 'ICPC-2--F' },\n H: { en: 'Ear', colour: 'ICPC-2--H' },\n K: { en: 'Circulatory', colour: 'ICPC-2--K' },\n L: { en: 'Musculoskeletal', colour: 'ICPC-2--L' },\n N: { en: 'Neurological', colour: 'ICPC-2--N' },\n P: { en: 'Psychological', colour: 'ICPC-2--P' },\n R: { en: 'Respiratory', colour: 'ICPC-2--R' },\n S: { en: 'Skin', colour: 'ICPC-2--S' },\n T: { en: 'Endocrine, metabolic and nutritional', colour: 'ICPC-2--T' },\n U: { en: 'Urology', colour: 'ICPC-2--U' },\n W: { en: 'Pregnancy, childbirth, family planning', colour: 'ICPC-2--W' },\n X: { en: 'Female genital system and breast', colour: 'ICPC-2--X' },\n Y: { en: 'Male genital system', colour: 'ICPC-2--Y' },\n Z: { en: 'Social problems', colour: 'ICPC-2--Z' },\n}\n","import { StorageEntryKeysFactory } from './StorageEntryKeysFactory'\n\n/**\n * Default implementation for {@link StorageEntryKeysFactory}, compatible with legacy local storage keys.\n */\nexport class DefaultStorageEntryKeysFactory implements StorageEntryKeysFactory {\n cachedRecoveredKeypairOfDataOwner(dataOwnerId: string, publicKeyFingerprint: string): string {\n if (publicKeyFingerprint.length != 32) throw new Error(`Invalid key fingerprint: ${publicKeyFingerprint}`)\n return `org.taktik.icure.rsa.recovered.${dataOwnerId}.${publicKeyFingerprint}`\n }\n\n deviceKeypairOfDataOwner(dataOwnerId: string, publicKeyFingerprint: string): string {\n if (publicKeyFingerprint.length != 32) throw new Error(`Invalid key fingerprint: ${publicKeyFingerprint}`)\n return `org.taktik.icure.rsa.device.${dataOwnerId}.${publicKeyFingerprint}`\n }\n\n selfPublicKeysVerificationCacheForDataOwner(dataOwnerId: string): string {\n return `org.taktik.icure.rsa.${dataOwnerId}.verification.self`\n }\n}\n","import { KeyStorageFacade } from './KeyStorageFacade'\nimport { StorageFacade } from './StorageFacade'\nimport { StorageEntryKeysFactory } from './StorageEntryKeysFactory'\nimport { KeyPair } from '../crypto/RSA'\n\n/**\n * @internal This class is meant for internal use only and may be changed without notice.\n * Simplifies access to the storage facades for iCure-specific data storage.\n */\nexport class IcureStorageFacade {\n private readonly keys: KeyStorageFacade\n private readonly data: StorageFacade\n private readonly entryFor: StorageEntryKeysFactory\n\n constructor(keyStorage: KeyStorageFacade, storage: StorageFacade, entryKeysFactory: StorageEntryKeysFactory) {\n this.keys = keyStorage\n this.data = storage\n this.entryFor = entryKeysFactory\n }\n\n /**\n * Saves a key pair for the data owner.\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of the public key of the pair.\n * @param keyPair a key pair of the data owner.\n * @param isDevice true if the key was generated on this device.\n */\n async saveKey(dataOwnerId: string, publicKeyFingerprint: string, keyPair: KeyPair, isDevice: boolean): Promise {\n const key = isDevice\n ? this.entryFor.deviceKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint)\n : this.entryFor.cachedRecoveredKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint)\n await this.keys.storeKeyPair(key, keyPair)\n }\n\n /**\n * Get an existing key pair for the data owner.\n * @param dataOwnerId id of the data owner with the key.\n * @param publicKeyFingerprint fingerprint of a public key of the data owner.\n * @param legacyPublicKey the legacy public key of the data owner, if present\n * @return the keypair and if the key was generated on this device or undefined if the key pair could not be found.\n */\n async loadKey(\n dataOwnerId: string,\n publicKeyFingerprint: string,\n legacyPublicKey: string | undefined\n ): Promise<{ pair: KeyPair; isDevice: boolean } | undefined> {\n const deviceKey =\n (await this.keys.getKeypair(this.entryFor.deviceKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint))) ??\n (await this.keys.getKeypair(`org.taktik.icure.rsa.${dataOwnerId}.${publicKeyFingerprint}`)) ??\n (legacyPublicKey?.slice(-32) === publicKeyFingerprint ? await this.keys.getKeypair(`org.taktik.icure.rsa.${dataOwnerId}`) : undefined)\n if (deviceKey) return { pair: deviceKey, isDevice: true }\n const cachedKey = await this.keys.getKeypair(this.entryFor.cachedRecoveredKeypairOfDataOwner(dataOwnerId, publicKeyFingerprint))\n if (cachedKey) return { pair: cachedKey, isDevice: false }\n return undefined\n }\n\n /**\n * Save the results of public key verification. If there were already results stored the entries will be merged. In case of conflicts the new\n * {@link verificationDetails} take priority over the stored data.\n * @param dataOwnerId id of a data owner.\n * @param verificationDetails results of verification, associates key fingerprints to true if they were verified by the user or false otherwise.\n * @return the udpated keys\n */\n async saveSelfVerifiedKeys(\n dataOwnerId: string,\n verificationDetails: { [keyFingerprint: string]: boolean }\n ): Promise<{ [keyFingerprint: string]: boolean }> {\n const updated = {\n ...(await this.loadSelfVerifiedKeys(dataOwnerId)),\n ...verificationDetails,\n }\n await this.data.setItem(this.entryFor.selfPublicKeysVerificationCacheForDataOwner(dataOwnerId), JSON.stringify(updated))\n return updated\n }\n\n /**\n * Get the last saved results of public key verification.\n * @param dataOwnerId id of a data owner.\n * @return saved results of verification, associates key fingerprints to true if they were verified by the user or false otherwise. If no results\n * were saved returns an empty object instead.\n * @throws if the stored results are not in a valid format.\n */\n async loadSelfVerifiedKeys(dataOwnerId: string): Promise<{ [keyFingerprint: string]: boolean }> {\n const dataString = await this.data.getItem(this.entryFor.selfPublicKeysVerificationCacheForDataOwner(dataOwnerId))\n if (dataString) {\n const parsed = JSON.parse(dataString)\n Object.entries(parsed).forEach(([k, v]) => {\n if (v !== true && v !== false) throw new Error(`Unexpected entry ${k}:${v}`)\n })\n return parsed\n } else return {}\n }\n}\n","import { StorageFacade } from './StorageFacade'\nimport { KeyStorageFacade } from './KeyStorageFacade'\n\nexport class KeyStorageImpl implements KeyStorageFacade {\n private readonly _storage: StorageFacade\n\n constructor(storage: StorageFacade) {\n this._storage = storage\n }\n\n async deleteKeypair(key: string): Promise {\n return await this._storage.removeItem(key)\n }\n\n async getKeypair(key: string): Promise<{ publicKey: JsonWebKey; privateKey: JsonWebKey } | undefined> {\n const keyPair = JSON.parse((await this._storage.getItem(key)) ?? '{}')\n return keyPair.hasOwnProperty('publicKey') && keyPair.hasOwnProperty('privateKey')\n ? {\n publicKey: keyPair.publicKey as JsonWebKey,\n privateKey: keyPair.privateKey as JsonWebKey,\n }\n : undefined\n }\n\n async getPrivateKey(key: string): Promise {\n return (await this.getKeypair(key))?.privateKey\n }\n\n async getPublicKey(key: string): Promise {\n return (await this.getKeypair(key))?.publicKey\n }\n\n async storeKeyPair(key: string, keyPair: { publicKey: JsonWebKey; privateKey: JsonWebKey }): Promise {\n return await this._storage.setItem(key, JSON.stringify(keyPair))\n }\n}\n","import { StorageFacade } from './StorageFacade'\n\nexport class LocalStorageImpl implements StorageFacade {\n async getItem(key: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.getItem(key) ?? undefined\n }\n\n async removeItem(key: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.removeItem(key)\n }\n\n async setItem(key: string, valueToStore: string): Promise {\n if (typeof Storage === 'undefined') {\n console.error('Your browser does not support HTML5 Browser Local Storage !')\n throw new Error('Your browser does not support HTML5 Browser Local Storage !')\n }\n return localStorage.setItem(key, valueToStore)\n }\n}\n","// Copyright 2018 AJ ONeal. All rights reserved\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Ported to Typescript by iCure sa */\n\nconst numToHex = function (d: number): string {\n const ds = d.toString(16)\n if (ds.length % 2) {\n return '0' + ds\n }\n return ds\n}\n\n//\n// Packer\n//\n// Almost every ASN.1 type that's important for CSR\n// can be represented generically with only a few rules.\nexport function packOther(...args: string[]) {\n const typ: string = args.shift()!\n const str: string = args.join('').replace(/\\s+/g, '').toLowerCase()\n var len: number = str.length / 2\n var lenlen = 0\n var hex = typ\n\n // We can't have an odd number of hex chars\n if (len !== Math.round(len)) {\n throw new Error('invalid hex')\n }\n\n // The first byte of any ASN.1 sequence is the type (Sequence, Integer, etc)\n // The second byte is either the size of the value, or the size of its size\n // 1. If the second byte is < 0x80 (128) it is considered the size\n // 2. If it is > 0x80 then it describes the number of bytes of the size\n // ex: 0x82 means the next 2 bytes describe the size of the value\n // 3. The special case of exactly 0x80 is \"indefinite\" length (to end-of-file)\n if (len > 127) {\n lenlen += 1\n while (len > 255) {\n lenlen += 1\n len = len >> 8\n }\n }\n\n if (lenlen) {\n hex += numToHex(0x80 + lenlen)\n }\n return hex + numToHex(str.length / 2) + str\n}\n\n// The Integer type has some special rules\nfunction packUInt(...arr: string[]) {\n const str = arr.join('')\n const first = parseInt(str.slice(0, 2), 16)\n\n // If the first byte is 0x80 or greater, the number is considered negative\n // Therefore we add a '00' prefix if the 0x80 bit is set\n return 0x80 & first ? packOther('02', '00' + str) : packOther('02', str)\n}\n\n// The Bit String type also has a special rule\nfunction packBitStr(...arr: string[]) {\n var str = arr.join('')\n // '00' is a mask of how many bits of the next byte to ignore\n return packOther('03', '00' + str)\n}\n\nexport type Asn1Item = number | string | Asn1Item[]\n\nexport function pack(arr: Asn1Item[]) {\n var typ = numToHex(arr[0] as number)\n var str = ''\n if (arr[1]) {\n if (Array.isArray(arr[1])) {\n arr[1].forEach((a) => (str += pack(a as Asn1Item[])))\n } else if ('string' === typeof arr[1]) {\n str = arr[1]\n } else {\n throw new Error('unexpected item')\n }\n }\n const packed = '03' === typ ? packBitStr(str) : '02' === typ ? packUInt(str) : packOther(typ, str)\n\n return packed\n}\n","// Copyright 2018 AJ ONeal. All rights reserved\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n//\n// Parser\n//\n\n// Although I've only seen 9 max in https certificates themselves,\n// but each domain list could have up to 100\nconst ELOOPN = 102\nconst ELOOP = 'ujs Error: iterated over ' + ELOOPN + '+ elements (probably a malformed file)'\n// I've seen https certificates go 29 deep\nconst EDEEPN = 60\nconst EDEEP = 'ujs Error: element nested ' + EDEEPN + '+ layers deep (probably a malformed file)'\n// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)\n// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e Value Array? (0x82)\n// Bit String (0x03) and Octet String (0x04) may be values or containers\n// Sometimes Bit String is used as a container (RSA Pub Spki)\nconst CTYPES = [0x30, 0x31, 0xa0, 0xa1]\nconst VTYPES = [0x01, 0x02, 0x05, 0x06, 0x0c, 0x82]\n\nconst numToHex = (d: number) => {\n const dh = d.toString(16)\n if (dh.length % 2) {\n return '0' + dh\n }\n return dh\n}\n\nconst bufToHex = (u8: Uint8Array) => {\n var hex = []\n var i, h\n var len = u8.byteLength || u8.length\n\n for (i = 0; i < len; i += 1) {\n h = u8[i].toString(16)\n if (h.length % 2) {\n h = '0' + h\n }\n hex.push(h)\n }\n return hex.join('').toLowerCase()\n}\n\nconst _replacer = function (k: string, v: any) {\n if ('type' === k) {\n return '0x' + numToHex(v)\n }\n if (v && 'value' === k) {\n return '0x' + bufToHex(v.data || v)\n }\n return v\n}\n\nexport type Asn1 = { type: number; lengthSize: number; length: number; children?: Asn1[]; value?: Uint8Array }\n\nexport function parseAsn1(buf: Uint8Array, depth: number[] = [], eager: boolean = false): Asn1 {\n if (depth.length >= EDEEPN) {\n throw new Error(EDEEP)\n }\n\n var index = 2 // we know, at minimum, data starts after type (0) and lengthSize (1)\n var asn1: Asn1 = { type: buf[0], lengthSize: 0, length: buf[1] }\n var child\n var iters = 0\n var adjust = 0\n var adjustedLen: number\n\n // Determine how many bytes the length uses, and what it is\n if (0x80 & asn1.length) {\n asn1.lengthSize = 0x7f & asn1.length\n // I think that buf->hex->int solves the problem of Endianness... not sure\n asn1.length = parseInt(bufToHex(buf.slice(index, index + asn1.lengthSize)), 16)\n index += asn1.lengthSize\n }\n\n // High-order bit Integers have a leading 0x00 to signify that they are positive.\n // Bit Streams use the first byte to signify padding, which x.509 doesn't use.\n if (0x00 === buf[index] && (0x02 === asn1.type || 0x03 === asn1.type)) {\n // However, 0x00 on its own is a valid number\n if (asn1.length > 1) {\n index += 1\n adjust = -1\n }\n }\n adjustedLen = asn1.length + adjust\n\n function parseChildren(eager: boolean) {\n asn1.children = []\n //console.warn('1 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', 0);\n while (iters < ELOOPN && index < 2 + asn1.length + asn1.lengthSize) {\n iters += 1\n depth.length += 1\n child = parseAsn1(buf.slice(index, index + adjustedLen), depth, eager)\n depth.length -= 1\n // The numbers don't match up exactly and I don't remember why...\n // probably something with adjustedLen or some such, but the tests pass\n index += 2 + child.lengthSize + child.length\n //console.warn('2 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', (2 + child.lengthSize + child.length));\n if (index > 2 + asn1.lengthSize + asn1.length) {\n if (!eager) {\n console.error(JSON.stringify(asn1, _replacer, 2))\n }\n throw new Error(\n 'Parse error: child value length (' +\n child.length +\n ') is greater than remaining parent length (' +\n (asn1.length - index) +\n ' = ' +\n asn1.length +\n ' - ' +\n index +\n ')'\n )\n }\n asn1.children.push(child)\n //console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);\n }\n if (index !== 2 + asn1.lengthSize + asn1.length) {\n //console.warn('index:', index, 'length:', (2 + asn1.lengthSize + asn1.length));\n throw new Error('premature end-of-file')\n }\n if (iters >= ELOOPN) {\n throw new Error(ELOOP)\n }\n\n delete asn1.value\n return asn1\n }\n\n // Recurse into types that are _always_ containers\n if (-1 !== CTYPES.indexOf(asn1.type)) {\n return parseChildren(eager)\n }\n\n // Return types that are _always_ values\n asn1.value = buf.slice(index, index + adjustedLen)\n if (-1 !== VTYPES.indexOf(asn1.type)) {\n return asn1\n }\n\n // For ambigious / unknown types, recurse and return on failure\n // (and return child array size to zero)\n try {\n return parseChildren(true)\n } catch (e) {\n asn1.children && (asn1.children.length = 0)\n return asn1\n }\n}\n","import { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b } from '../../icc-api/model/ModelHelper'\nexport { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b }\n\nconst textDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null\nconst textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null\n\nexport function utf8_2ua(str: string): Uint8Array {\n if (textEncoder) {\n return textEncoder.encode(str)\n }\n\n const utf8 = new Uint8Array(4 * str.length)\n let j = 0\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i)\n if (charcode < 0x80) {\n utf8.set([charcode], j++)\n } else if (charcode < 0x800) {\n utf8.set([0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f)], j)\n j += 2\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.set([0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 3\n } else {\n i++\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff))\n utf8.set([0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 4\n }\n }\n return utf8.subarray(0, j)\n}\n\n/**\n * Uint8Array/ArrayBuffer to utf-8 strring\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} a UTF-8 encoded string\n */\nexport function ua2utf8(_ua: Uint8Array | ArrayBuffer): string {\n if (textDecoder) {\n // if _ua is undefined, imitate the JS implementation below which returns an empty string\n return _ua ? textDecoder.decode(_ua) : ''\n }\n\n let out, i, len, c, u\n let char2, char3, char4\n\n // avoid applying the Uint8Array constructor: on ArrayBuffer it creates a\n // view but on Uint8Array it creates a copy\n const array = ArrayBuffer.isView(_ua) ? _ua : new Uint8Array(_ua)\n\n out = ''\n len = array.length || array.byteLength\n i = 0\n while (i < len) {\n c = array[i++]\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c)\n break\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++]\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n case 15:\n // 1111 xxxx 10xx xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n char4 = array[i++]\n u = ((c & 0x07) << 18) | ((char2 & 0x3f) << 12) | ((char3 & 0x3f) << 6) | (((char4 & 0x3f) << 0) - 0x10000)\n out += String.fromCharCode(0xd800 + (u >> 10))\n out += String.fromCharCode(0xdc00 + (u & 1023))\n break\n }\n }\n\n return out\n}\n\nexport function hex2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length / 2)\n s = s.toLowerCase()\n for (let i = 0; i < s.length; i += 2) {\n ua[i / 2] =\n (s.charCodeAt(i) < 58 ? s.charCodeAt(i) - 48 : s.charCodeAt(i) - 87) * 16 +\n (s.charCodeAt(i + 1) < 58 ? s.charCodeAt(i + 1) - 48 : s.charCodeAt(i + 1) - 87)\n }\n return ua\n}\n\n/**\n * Uint8Array/ArrayBuffer to hex String\n *\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} Hex String\n */\nexport function ua2hex(_ua: Uint8Array | ArrayBuffer): string {\n let s = ''\n const ua = new Uint8Array(_ua)\n for (let i = 0; i < ua.length; i++) {\n const hhb = (ua[i] & 0xf0) >> 4\n const lhb = ua[i] & 0x0f\n s += String.fromCharCode(hhb > 9 ? hhb + 87 : hhb + 48)\n s += String.fromCharCode(lhb > 9 ? lhb + 87 : lhb + 48)\n }\n\n return s\n}\n\nexport function b64_2uas(s: string): Array {\n const sliceSize = 1024\n const byteCharacters = a2b(s)\n const bytesLength = byteCharacters.length\n const slicesCount = Math.ceil(bytesLength / sliceSize)\n const byteArrays = new Array(slicesCount)\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize\n const end = Math.min(begin + sliceSize, bytesLength)\n\n const bytes = new Array(end - begin)\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0)\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes)\n }\n return byteArrays\n}\n\nexport function ua2b64Url(ua: Uint8Array | ArrayBuffer): string {\n return ua2b64(ua).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n}\n\nexport function b64Url2ua(ua: string): ArrayBuffer {\n return b64_2ua(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''))\n}\n\nexport function hex2string(hexStr: string): string {\n return ua2string(hex2ua(hexStr))\n}\n\nexport function string2hex(text: string): string {\n return ua2hex(string2ua(text))\n}\n","import * as _ from 'lodash'\n\nimport { Code } from '../../icc-api/model/Code'\n\n/**\n * Normalizes the code's four main fields (type, code, version and id). The first three are considered to be\n * authoritative, while the id is a pure function of them. The authoritative fields are filled in from the id if\n * missing, or the version is set to '1' if it is the only missing authoritative field. The id is then rederived from\n * the three fields.\n * @param code The code to normalize.\n * @returns A shallow copy of the input with its type, code, version and id normalized.\n */\nexport function normalizeCode(code: Code): Code {\n code = _.clone(code)\n\n if (code.type && code.code && code.version) {\n // do nothing, we all have the authoritative fields we need\n } else if (code.id) {\n // reconstruct the authoritative fields from the id\n const [idType, idCode, idVersion, ...idRest] = code.id.split('|')\n if (idType && idCode && idVersion && idRest.length === 0) {\n if (!code.type) code.type = idType\n if (!code.code) code.code = idCode\n if (!code.version) code.version = idVersion\n } else {\n throw new Error(`attempted to normalize from a malformed code id \"${code.id}\"`)\n }\n } else if (code.type && code.code && !code.version) {\n // we can provide a default value\n code.version = '1'\n } else {\n throw new Error('could not reconstruct the code')\n }\n\n // Recompute the id to ensure that it matches the reconstructed code.\n code.id = `${code.type}|${code.code}|${code.version}`\n\n return code\n}\n","/**\n * Check if two sets are equals (they contain the same elements). Will not work if the content can't be compared by `==`.\n */\nexport function setEquals(setA: Set, setB: Set): boolean {\n if (setA.size != setB.size) return false\n return Array.from(setA).every((x) => setB.has(x))\n}\n\n/**\n * Check if two arrays are equals (they contain the same elements). Will not work if the content can't be compared by `==`.\n */\nexport function arrayEquals(arrayA: T[], arrayB: T[]): boolean {\n if (arrayA.length != arrayB.length) return false\n for (let i = 0; i < arrayA.length; ++i) {\n if (arrayA[i] !== arrayB[i]) return false\n }\n return true\n}\n","import * as mm from 'moment'\nimport { Moment } from 'moment'\nimport * as _ from 'lodash'\nimport { a2b, b2a, b64Url2ua, hex2ua, string2ua, ua2b64Url, ua2hex, ua2string } from '../utils/binary-utils'\nimport { pack } from './asn1-packer'\nimport { parseAsn1 } from './asn1-parser'\nimport { KeyPair } from '../crypto/RSA'\n\nexport function notConcurrent(concurrencyMap: { [key: string]: PromiseLike }, key: string, proc: () => PromiseLike): PromiseLike {\n const inFlight = concurrencyMap[key]\n if (!inFlight) {\n const newJob = (async () => {\n try {\n return await proc()\n } finally {\n delete concurrencyMap[key]\n }\n })()\n concurrencyMap[key] = newJob\n return newJob\n } else {\n return concurrencyMap[key].then(() => notConcurrent(concurrencyMap, key, proc))\n }\n}\n\nexport function jwk2pkcs8(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x02, '00'],\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]], // pragma: allowlist secret\n [\n 0x04,\n [\n [\n 0x30,\n [\n [0x02, '00'],\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n [0x02, ua2hex(b64Url2ua(jwk.d))],\n [0x02, ua2hex(b64Url2ua(jwk.p))],\n [0x02, ua2hex(b64Url2ua(jwk.q))],\n [0x02, ua2hex(b64Url2ua(jwk.dp))],\n [0x02, ua2hex(b64Url2ua(jwk.dq))],\n [0x02, ua2hex(b64Url2ua(jwk.qi))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function jwk2spki(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]], // pragma: allowlist secret\n [\n 0x03,\n [\n [\n 0x30,\n [\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function spkiToJwk(buf: Uint8Array): { kty: string; alg: string; n: string; e: string; ext: boolean } {\n const asn1 = parseAsn1(new Uint8Array(buf))\n\n var modulus: Uint8Array | undefined = undefined\n var exponent: Uint8Array | undefined = undefined\n if (\n asn1.type === 0x30 &&\n asn1.children?.[0]?.type === 0x30 &&\n asn1.children?.[0]?.children?.[0]?.type === 0x06 &&\n ua2hex(asn1.children?.[0]?.children?.[0]?.value ?? new Uint8Array(0)) === '2a864886f70d010101' // pragma: allowlist secret\n ) {\n modulus = asn1.children?.[1]?.children?.[0]?.children?.[0]?.value\n exponent = asn1.children?.[1]?.children?.[0]?.children?.[1]?.value\n } else if (asn1.type === 0x30 && asn1.children?.[0]?.type === 0x02 && asn1.children?.[1]?.type === 0x02) {\n modulus = asn1.children?.[0]?.value\n exponent = asn1.children?.[1]?.value\n }\n\n if (!modulus || !exponent) {\n throw new Error('Invalid spki format')\n }\n return {\n kty: 'RSA',\n alg: 'RSA-OAEP',\n ext: true,\n n: ua2b64Url(minimalRep(modulus)),\n e: ua2b64Url(minimalRep(exponent)),\n }\n}\n\nexport function pkcs8ToJwk(buf: Uint8Array | ArrayBuffer) {\n const parsed = parseAsn1(new Uint8Array(buf))\n const seq =\n parsed.children?.length === 3 && parsed.children[2].type === 0x04 && parsed.children[2].children?.length === 1\n ? parsed.children[2].children[0]\n : parsed\n return {\n kty: 'RSA',\n n: ua2b64Url(minimalRep(seq.children![1].value as Uint8Array)),\n e: ua2b64Url(minimalRep(seq.children![2].value as Uint8Array)),\n d: ua2b64Url(minimalRep(seq.children![3].value as Uint8Array)),\n p: ua2b64Url(minimalRep(seq.children![4].value as Uint8Array)),\n q: ua2b64Url(minimalRep(seq.children![5].value as Uint8Array)),\n dp: ua2b64Url(minimalRep(seq.children![6].value as Uint8Array)),\n dq: ua2b64Url(minimalRep(seq.children![7].value as Uint8Array)),\n qi: ua2b64Url(minimalRep(seq.children![8].value as Uint8Array)),\n }\n}\n\nfunction minimalRep(b: Uint8Array) {\n let i = 0\n while (b[i] === 0) {\n i++\n }\n return b.slice(i)\n}\n\n/**\n * Provide a view over the given Uint8Array where any trailing null bytes at\n * the end are truncated.\n *\n * This can be used to ignore null bytes at the end of a padded UTF-8 string\n * without needing to copy that string, assuming code point U+0000 is encoded\n * in one null byte according to standards rather than in a multi-byte\n * overlong form.\n */\nexport function truncateTrailingNulls(a: Uint8Array) {\n let end = a.byteLength - 1\n while (a[end] === 0 && end >= 0) {\n end--\n }\n // end is now either the last non-null position in a or -1; in the latter\n // case the returned array will have length 0.\n return a.subarray(0, end + 1)\n}\n\n/**\n *\n * @param buffer1 {Uint8Array}\n * @param buffer2{ Uint8Array}\n * @returns {ArrayBuffer}\n */\nexport function appendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer {\n const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength)\n tmp.set(new Uint8Array(buffer1), 0)\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength)\n return tmp.buffer as ArrayBuffer\n}\n\n//Convenience methods for dates management\nexport function after(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isAfter(moment(d2)!)\n}\n\nexport function before(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isBefore(moment(d2)!)\n}\n\nfunction moment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDDHHmmss')\n } else {\n return mm(epochOrLongCalendar)\n }\n}\n\n/**\n * Encrypt object graph recursively\n *\n * @param obj the object to encrypt\n * @param cryptor the cryptor function (returns a promise)\n * @param keys the keys to be crypted: ex for a Patient ['note', 'addresses.*.[\"street\", \"houseNumber\", \"telecoms.*.telecomNumber\"]']\n */\nexport async function crypt(obj: any, cryptor: (obj: { [key: string]: string }) => Promise, keys: Array) {\n const subObj = _.pick(\n obj,\n keys.filter((k) => !k.includes('*'))\n )\n obj.encryptedSelf = b2a(ua2string(await cryptor(subObj)))\n Object.keys(subObj).forEach((k) => delete obj[k])\n\n await keys\n .filter((k) => k.includes('*'))\n .reduce(async (prev: Promise, k: any) => {\n await prev\n const k1 = k.split('.*.')[0]\n const k2 = k.substr(k1.length + 3)\n\n const mapped = await Promise.all((_.get(obj, k1) || []).map((so: any) => crypt(so, cryptor, k2.startsWith('[') ? JSON.parse(k2) : [k2])))\n _.set(obj, k1, mapped)\n }, Promise.resolve())\n\n return obj\n}\n\n/**\n * Decrypt object graph recursively\n *\n * @param obj the object to encrypt\n * @param decryptor the decryptor function (returns a promise)\n */\nexport async function decrypt(obj: any, decryptor: (obj: Uint8Array) => Promise<{ [key: string]: string }>) {\n await Object.keys(obj).reduce(async (prev: Promise, k: any) => {\n await prev\n if (Array.isArray(obj[k])) {\n await (obj[k] as Array)\n .filter((o) => typeof o === 'object' && o !== null)\n .reduce(async (prev: Promise, so: any) => {\n await prev\n await decrypt(so, decryptor)\n }, Promise.resolve())\n }\n }, Promise.resolve())\n if (obj.encryptedSelf) {\n Object.assign(obj, await decryptor(string2ua(a2b(obj.encryptedSelf))))\n }\n return obj\n}\n\n/**\n * Extracts the full jwk key pair from the jwk representation of the private key.\n * @param privateKeyJwk private key in jwk representation\n * @throws if the key is missing the public modulus or public exponent.\n */\nexport function keyPairFromPrivateKeyJwk(privateKeyJwk: JsonWebKey): KeyPair {\n if (!privateKeyJwk.n || !privateKeyJwk.e) throw new Error('Incomplete private JsonWebKey: missing public modulus and/or exponent')\n return {\n privateKey: privateKeyJwk,\n publicKey: spkiToJwk(hex2ua(jwk2spki(privateKeyJwk))),\n }\n}\n","import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport { Moment } from 'moment'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return isValidNumber(phoneNumber)\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (_.isEmpty(parsedPhoneNumber)) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'INTERNATIONAL')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = _.padStart(dateNumber.toString(), 8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD000000').toDate() : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD').toDate() : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? moment(timeNumber.toString(), 'YYYYMMDDHHmmss').toDate() : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = _.padStart(moment(date).format('YYYYMMDD'), 8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(moment(date).format('YYYYMMDDHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return _.filter(_.map(params, (value, key) => (value ? key + '=' + value : undefined))).join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDDhhmmss')\n } else {\n return moment(epochOrLongCalendar)\n }\n}\n","export function also(value: T, lambda: (it: T) => void) {\n lambda(value)\n return value\n}\n\nexport function fold(whereToFold: Array, initial: R, operation: (acc: R, element: T) => R): R {\n let accumulator = initial\n for (let i = 0; i < whereToFold.length; i++) accumulator = operation(accumulator, whereToFold[i])\n return accumulator\n}\n\nexport async function foldAsync(whereToFold: Array, initial: R, operation: (acc: R, element: T) => Promise): Promise {\n let accumulator = initial\n for (let i = 0; i < whereToFold.length; i++) accumulator = await operation(accumulator, whereToFold[i])\n return accumulator\n}\n","/**\n * @internal\n * Represents a graph. Each node is associated to a set of nodes that can be directly reached from it in a single step.\n */\nexport type Graph = { [node: string]: Set }\n\n/**\n * @internal\n * Represents from which all cycles have been removed using strongly connected components. Also holds information on all groups.\n */\nexport type StronglyConnectedGraph = {\n acyclicGraph: Graph\n originalLabelToAcyclicLabel: { [originalLabel: string]: string }\n acyclicLabelToGroup: { [newLabel: string]: string[] } // includes new label.\n}\n\n/**\n * @internal\n * Creates a graph from a series of edges and optionally additional nodes.\n * @param edges edges between nodes, [from, to].\n * @param additionalNodes nodes which do not appear in any edge.\n * @return a graph built using the provided parameters.\n */\nexport function graphFromEdges(edges: [string, string][], additionalNodes?: string[]): Graph {\n const nodes = edges.reduce>((acc, [edgeFrom, edgeTo]) => {\n acc.add(edgeFrom)\n acc.add(edgeTo)\n return acc\n }, new Set(additionalNodes ?? []))\n const res = Array.from(nodes).reduce((res, node) => {\n res[node] = new Set()\n return res\n }, {})\n edges.forEach(([edgeFrom, edgeTo]) => {\n if (edgeFrom != edgeTo) {\n res[edgeFrom].add(edgeTo)\n }\n })\n return res\n}\n\n/**\n * @internal\n * Get the nodes reachable from each node in an acyclic graph. Exclude the node itself.\n * @param graph an acyclic graph.\n * @return all nodes reachable from each node in the graph with 1 or more steps.\n */\nexport function reachSetsAcyclic(graph: Graph): { [node: string]: Set } {\n const res: { [node: string]: Set } = {}\n function calculateAndCacheReachSetRecursive(node: string): Set {\n if (res[node]) return res[node]\n const set = new Set(Array.from(graph[node]))\n graph[node].forEach((child) => {\n calculateAndCacheReachSetRecursive(child).forEach((x) => set.add(x))\n })\n res[node] = set\n return set\n }\n Object.keys(graph).forEach((n) => calculateAndCacheReachSetRecursive(n))\n return res\n}\n\n/**\n * @internal\n * Get a new graph where each cycle has been replaced by a single node, with label chosen from the labels of nodes in the cycle (the specific way\n * the label is chosen is implementation-dependant).\n * @param graph a graph.\n * @return the new graph and dictionaries to allow mapping between original labels and labels in the new graph\n */\nexport function acyclic(graph: Graph): StronglyConnectedGraph {\n const idToName = Object.keys(graph)\n const nameToId: { [name: string]: number } = {}\n idToName.forEach((name, id) => {\n nameToId[name] = id\n })\n const ogAdjacency: number[][] = idToName.map((name) => {\n return Array.from(graph[name]).map((adjacencyName) => nameToId[adjacencyName])\n })\n const { components, adjacencyList } = stronglyConnectedComponents(ogAdjacency)\n const namedGroups = components.map((group) => group.map((id) => idToName[id]))\n const originalLabelToAcyclicLabel: { [originalLabel: string]: string } = {}\n namedGroups.forEach((group) => {\n group.forEach((element) => {\n originalLabelToAcyclicLabel[element] = group[0]\n })\n })\n const acyclicLabelToGroup: { [newLabel: string]: string[] } = {}\n namedGroups.forEach((group) => {\n acyclicLabelToGroup[group[0]] = group\n })\n const remappedIdToName = components.map((group) => idToName[group[0]])\n const res: Graph = {}\n adjacencyList.forEach((adjacencyList, index) => {\n res[remappedIdToName[index]] = new Set(adjacencyList.filter((x) => x !== index).map((x) => remappedIdToName[x]))\n })\n return { acyclicGraph: res, originalLabelToAcyclicLabel, acyclicLabelToGroup }\n}\n\n// Implementation from https://github.com/mikolalysenko/strongly-connected-components\nfunction stronglyConnectedComponents(adjList: number[][]): { components: number[][]; adjacencyList: number[][] } {\n const numVertices = adjList.length\n const index = new Array(numVertices)\n const lowValue = new Array(numVertices)\n const active = new Array(numVertices)\n const child = new Array(numVertices)\n const scc = new Array(numVertices)\n const sccLinks = new Array(numVertices)\n\n //Initialize tables\n for (let i = 0; i < numVertices; ++i) {\n index[i] = -1\n lowValue[i] = 0\n active[i] = false\n child[i] = 0\n scc[i] = -1\n sccLinks[i] = []\n }\n\n // The strongConnect function\n let count = 0\n const components: number[][] = []\n const sccAdjList: number[][] = []\n\n function strongConnect(v: number) {\n // To avoid running out of stack space, this emulates the recursive behaviour of the normal algorithm, effectively using T as the call stack.\n const S = [v],\n T = [v]\n index[v] = lowValue[v] = count\n active[v] = true\n count += 1\n while (T.length > 0) {\n v = T[T.length - 1]\n const e = adjList[v]\n if (child[v] < e.length) {\n // If we're not done iterating over the children, first try finishing that.\n let i\n for (i = child[v]; i < e.length; ++i) {\n // Start where we left off.\n const u = e[i]\n if (index[u] < 0) {\n index[u] = lowValue[u] = count\n active[u] = true\n count += 1\n S.push(u)\n T.push(u)\n break // First recurse, then continue here (with the same child!).\n // There is a slight change to Tarjan's algorithm here.\n // Normally, after having recursed, we set lowValue like we do for an active child (although some variants of the algorithm do it slightly differently).\n // Here, we only do so if the child we recursed on is still active.\n // The reasoning is that if it is no longer active, it must have had a lowValue equal to its own index, which means that it is necessarily higher than our lowValue.\n } else if (active[u]) {\n lowValue[v] = Math.min(lowValue[v], lowValue[u]) | 0\n }\n if (scc[u] >= 0) {\n // Node v is not yet assigned an scc, but once it is that scc can apparently reach scc[u].\n sccLinks[v].push(scc[u])\n }\n }\n child[v] = i // Remember where we left off.\n } else {\n // If we're done iterating over the children, check whether we have an scc.\n if (lowValue[v] === index[v]) {\n // NOTTODO: It /might/ be true that T is always a prefix of S (at this point!!!), and if so, this could be used here.\n const component = []\n const links = []\n let linkCount = 0\n for (let i = S.length - 1; i >= 0; --i) {\n const w = S[i]\n active[w] = false\n component.push(w)\n links.push(sccLinks[w])\n linkCount += sccLinks[w].length\n scc[w] = components.length\n if (w === v) {\n S.length = i\n break\n }\n }\n components.push(component)\n const allLinks = new Array(linkCount)\n for (let i = 0; i < links.length; i++) {\n for (let j = 0; j < links[i].length; j++) {\n allLinks[--linkCount] = links[i][j]\n }\n }\n sccAdjList.push(allLinks)\n }\n T.pop() // Now we're finished exploring this particular node (normally corresponds to the return statement)\n }\n }\n }\n\n //Run strong connect starting from each vertex\n for (let i = 0; i < numVertices; ++i) {\n if (index[i] < 0) {\n strongConnect(i)\n }\n }\n\n // Compact sccAdjList\n let newE\n for (let i = 0; i < sccAdjList.length; i++) {\n const e = sccAdjList[i]\n if (e.length === 0) continue\n e.sort(function (a, b) {\n return a - b\n })\n newE = [e[0]]\n for (let j = 1; j < e.length; j++) {\n if (e[j] !== e[j - 1]) {\n newE.push(e[j])\n }\n }\n sccAdjList[i] = newE\n }\n\n return { components: components, adjacencyList: sccAdjList }\n}\n","import * as _ from 'lodash'\nimport { HealthcareParty, Telecom } from '../../icc-api/model/models'\n\nexport interface KendoDropdownSpeciality {\n text: string\n value: string\n}\n\nexport const SPECIALITIES: Array = [\n 'ADMINISTRATION',\n 'CARE_GIVER',\n 'ANATOMOPATHOLOGY',\n 'ANESTHESIOLOGY',\n 'SOCIAL_WORKER',\n 'PHARMA_ASSISTANT',\n 'AUDIOLOGIST',\n 'BACTERIOLOGY',\n 'TRUSS_ORTHOTIST',\n 'CLINICAL_BIOLOGY',\n 'CARDIOLOGY',\n 'GENERAL_SURGERY',\n 'MAXILLOFACIAL_SURGERY',\n 'PLASTIC_SURGERY',\n 'STOMATOLOGICAL_SURGERY',\n 'CARDIOVASCULAR_SURGERY',\n 'DENTISTRY',\n 'DERMATOLOGY',\n 'DIETETIC',\n 'ENDOCRINOLOGY',\n 'OCCUPATIONAL_THERAPIST',\n 'GASTROENTEROLOGY',\n 'GENETIC',\n 'GERIATRICS',\n 'GYNECOLOGY',\n 'HEMATOLOGY',\n 'NURSE',\n 'NURSE_EDUCATOR',\n 'PHYSIOTHERAPY',\n 'SPEECH',\n 'ACUTE_MEDICINE',\n 'GENERAL_MEDICINE',\n 'INTERNAL_MEDICINE',\n 'NUCLEAR_MEDICINE',\n 'PHYSICAL_MEDICINE',\n 'NEONATOLOGY',\n 'NEPHROLOGY',\n 'NEUROSURGERY',\n 'NEUROLOGY',\n 'NEUROPEDIATRICS',\n 'NEUROPSYCHIATRY',\n 'NUTRITIONIST',\n 'ONCOLOGY',\n 'OPHTHALMOLOGY',\n 'ORTHOPEDICS',\n 'ORTHOPTISTE',\n 'OTORHINOLARYNGOLOGY',\n 'PEDIATRICS',\n 'PHARMACOLOGY',\n 'RESPIRATORY',\n 'PODIATRIST',\n 'PUBLIC_HEALTH_PREVENTION',\n 'PROSTHETIST',\n 'PSYCHIATRY',\n 'MEDICAL_PSYCHOLOGY',\n 'RADIODIAGNOSTICS',\n 'RADIOTHERAPY',\n 'RESUSCITATION',\n 'RHEUMATOLOGY',\n 'MIDWIFE',\n 'STOMATOLOGY',\n 'EMERGENCY',\n 'UROLOGY',\n 'TOXICOLOGY',\n 'TRANSPORT',\n]\n\n/**\n * Translation keys for specialities.\n * @see SPECIALITIES\n */\nexport const SPECIALITIES_KEYS: { [spec: string]: string } = _.fromPairs(SPECIALITIES.map((spec) => [spec, 'hcp-form.SPECIALITIES.' + spec]))\n\nexport function isDoctor(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && !nihii.endsWith('005') && !nihii.endsWith('006')\n}\n\nexport function isDoctorAssistant(nihii: string): boolean {\n return !!nihii && nihii.length === 11 && nihii.startsWith('1') && nihii.endsWith('005') && nihii.endsWith('006')\n}\n\nexport function getPhoneNumber(hcp: HealthcareParty, maxLength: number | undefined): number | null {\n const phoneNumbers = (hcp.addresses || []).map((a) => {\n const t = (a.telecoms || []).find(\n (t: Telecom) => t.telecomType === Telecom.TelecomTypeEnum.Phone.toString() || t.telecomType === Telecom.TelecomTypeEnum.Mobile.toString()\n )\n let res = t && t.telecomNumber\n if (res && maxLength) {\n while (res.length > maxLength) {\n if (res.startsWith('0032')) {\n res = '0' + res.substr(4)\n } else if (res.startsWith('+32')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('32')) {\n res = '0' + res.substr(2)\n } else if (res.startsWith('00')) {\n res = res.substr(2)\n } else if (res.startsWith('0')) {\n res = res.substr(1)\n } else if (res.startsWith('352')) {\n res = '0' + res.substr(3)\n } else if (res.startsWith('33')) {\n res = '0' + res.substr(2)\n } else {\n res = res.substr(1)\n }\n }\n }\n return res && Number(res)\n })\n\n return (!phoneNumbers.length || _.isNaN(phoneNumbers[0]) ? null : phoneNumbers[0]) || null\n}\n","export * from './code-util'\nexport * from './net-utils'\nexport * from './crypto-utils'\nexport * from './formatting-util'\nexport * from './binary-utils'\nexport * from './hcp-util'\nexport * from './functional-util'\n","export class LruTemporisedAsyncCache {\n private readonly maxCacheSize: number\n private readonly lifetimeForValue: (value: V) => number\n\n private readonly nodesMap: Map> = new Map()\n private firstNode: CacheNode | null = null\n private lastNode: CacheNode | null = null\n\n /**\n * @param maxCacheSize Maximum size of the cache. Any value <= 0 is considered as no limit.\n * @param lifetimeForValue Get the maximum lifetime for an entry given its value.\n */\n constructor(maxCacheSize: number, lifetimeForValue: (value: V) => number) {\n this.maxCacheSize = maxCacheSize\n this.lifetimeForValue = lifetimeForValue\n }\n\n /**\n * Gets a cached value or retrieves it and caches it if the value is not available or if it is available but expired. A value will never be expired\n * if it was not yet retrieved, even if the retrieved value would be expired according to the {@link additionalExpirationCondition}\n * @param key key of the entry\n * @param retrieve given the previous value (if available, expired but not yet removed) of the entry retrieves an updated value.\n * @param additionalExpirationCondition an expiration condition for already cached values to consider in addition to time-based expiration. Returns\n * always false by default, meaning the value is not expired if its lifetime didn't already surpass the maximum lifetime.\n * @return the cached value if present and not expired, else the retrieved value.\n */\n get(\n key: K,\n retrieve: (previousValue: V | undefined) => Promise,\n additionalExpirationCondition: (value: V) => boolean = () => false\n ): Promise {\n const retrieved = this.nodesMap.get(key)\n if (retrieved !== undefined) {\n this.markUsed(retrieved)\n const cachedValue = retrieved.cachedValue\n if (retrieved.expired((x) => this.lifetimeForValue(x)) || (cachedValue !== undefined && additionalExpirationCondition(cachedValue))) {\n retrieved.value = this.registerJob(key, () => retrieve(cachedValue))\n }\n return retrieved.valuePromise()\n } else {\n const newNode = new CacheNode(\n key,\n this.lastNode,\n null,\n this.registerJob(key, () => retrieve(undefined))\n )\n this.addToTail(key, newNode)\n if (this.maxCacheSize > 0 && this.nodesMap.size > this.maxCacheSize) this.evict(this.firstNode!.key, this.firstNode!)\n return newNode.valuePromise()\n }\n }\n\n clear() {\n this.firstNode = null\n this.lastNode = null\n this.nodesMap.clear()\n }\n\n private addToTail(key: K | null, node: CacheNode) {\n node.previous = this.lastNode\n node.next = null\n if (this.lastNode) this.lastNode.next = node\n this.lastNode = node\n if (this.firstNode === null) this.firstNode = node\n if (key != null) this.nodesMap.set(key, node)\n }\n\n private evict(key: K | null, node: CacheNode) {\n if (node.previous) node.previous.next = node.next\n if (node.next) node.next.previous = node.previous\n if (this.firstNode === node) this.firstNode = node.next\n if (this.lastNode === node) this.lastNode = node.previous\n if (key !== null) this.nodesMap.delete(key)\n }\n\n private markUsed(node: CacheNode) {\n if (node !== this.lastNode) {\n // No need to modify the nodes map\n this.evict(null, node)\n this.addToTail(null, node)\n }\n }\n\n private registerJob(key: K, retrieve: () => Promise): Promise {\n // The node may have already been evicted by the time the promise completed if the cached surpassed the maximum size.\n return retrieve()\n .then((v) => {\n const node = this.nodesMap.get(key)\n if (node) {\n node.value = { cached: v, timestamp: Date.now() }\n }\n return v\n })\n .catch((e) => {\n const node = this.nodesMap.get(key)\n if (node) {\n this.evict(key, node)\n }\n throw e\n })\n }\n}\n\ntype Cached = { cached: V; timestamp: number }\n\nclass CacheNode {\n readonly key: K\n previous: CacheNode | null\n next: CacheNode | null\n value: Promise | Cached\n\n constructor(key: K, previous: CacheNode | null, next: CacheNode | null, value: Promise) {\n this.key = key\n this.previous = previous\n this.next = next\n this.value = value\n }\n\n expired(lifetimeForValue: (value: V) => number): boolean {\n if ('timestamp' in this.value) {\n const maxLifetime = lifetimeForValue(this.value.cached)\n return maxLifetime > 0 && Date.now() - this.value.timestamp > maxLifetime\n } else return false\n }\n\n valuePromise(): Promise {\n return 'timestamp' in this.value ? Promise.resolve(this.value.cached) : this.value\n }\n\n get cachedValue(): V | undefined {\n return 'timestamp' in this.value ? this.value.cached : undefined\n }\n}\n","export type PaginatorFunction = (key: any, docId: string | null, limit: number | undefined) => Promise>\n\nexport type PaginatorExecutor = (\n latestPaginatorFunctionResult: PaginatorResponse,\n acc: any[],\n limit: number | undefined\n) => Promise>\n\nexport interface PaginatorResponse {\n rows: Array\n nextKey: any | null | undefined\n nextDocId: string | null | undefined\n done: boolean\n}\n\nexport interface RowsChunk {\n startIdx: number\n endIdx: number\n rows: Array\n nextKey: any | null\n nextDocId: string | null\n}\n\nexport interface MissingRowsChunk {\n missing: [number, number]\n lastEndIdx: number\n lastKey: any | null\n lastDocId: string | null\n rows?: Array // Is going to be filled when we go through all missing rows chunks\n}\n\nexport function sleep(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport function retry

(fn: () => Promise

, retryCount = 3, sleepTime = 1000, exponentialFactor = 1): Promise

{\n let retry = 0\n const doFn: () => Promise

= () => {\n return fn().catch((e) =>\n retry++ < retryCount ? (sleepTime && sleep((sleepTime *= exponentialFactor)).then(() => doFn())) || doFn() : Promise.reject(e)\n )\n }\n return doFn()\n}\n\nexport async function getRowsUsingPagination(\n paginator: PaginatorFunction,\n filter?: (value: X, idx: number, array: Array) => boolean,\n startIdx?: number,\n endIdx?: number,\n cache?: Array>\n): Promise> {\n const executePaginator: PaginatorExecutor = async (latestResult: PaginatorResponse, acc: Array, limit: number | undefined) => {\n const newResult = await paginator(\n latestResult.nextKey || null,\n latestResult.nextDocId || null,\n endIdx && startIdx ? endIdx - startIdx : undefined\n )\n const rows = (filter ? newResult.rows && newResult.rows.filter(filter) : newResult.rows) || []\n acc.push(...rows)\n if (newResult.done || (limit && acc.length >= limit)) {\n return {\n rows: acc,\n nextKey: newResult.nextKey,\n nextDocId: newResult.nextDocId,\n done: false,\n }\n } else {\n return executePaginator(newResult, acc, limit)\n }\n }\n\n if (cache && startIdx && endIdx) {\n // Go through cache and build a list of existing rows (RowsChunks) and missing rows (MissingRowChunks)\n // The cache is a sparse structure sorted by index\n // At first, the cache is empty rows is going to be equal to [] and everything will be missing (see empty rows situation below)\n const [rows, lastKey, lastDocId, lastEndIdx] = cache.reduce(\n (\n [rows, lastKey, lastDocId, lastEndIdx, lastTreatedIdx]: [\n Array | MissingRowsChunk>,\n any | null,\n string | null,\n number,\n number\n ],\n chunk\n ) => {\n const startOfZoi = lastTreatedIdx\n const endOfZoi = endIdx\n\n if (chunk.endIdx <= startOfZoi) {\n // [--zoi--] // Zone of interest starts at startOfZoi, ends at endIdx\n // [-chunk-]\n // Doesn't look like anything to me\n } else if (chunk.startIdx >= endIdx) {\n // [--zoi--]\n // [-chunk-]\n if (startOfZoi < endIdx) {\n rows.push({\n missing: [startOfZoi, endIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n lastTreatedIdx = endOfZoi\n }\n } else {\n if (chunk.startIdx <= lastTreatedIdx) {\n if (chunk.endIdx <= endIdx) {\n // [--zoi--]\n // [-chunk-]\n rows.push({\n startIdx: startOfZoi,\n endIdx: chunk.endIdx,\n rows: chunk.rows.slice(startOfZoi - chunk.startIdx, chunk.endIdx - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = chunk.endIdx\n } else {\n // [--zoi--]\n // [------chunk------]\n rows.push({\n startIdx: startOfZoi,\n endIdx: endOfZoi,\n rows: chunk.rows.slice(startOfZoi - chunk.startIdx, endOfZoi - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = endOfZoi\n }\n } else {\n // [--zoi--]\n // [-chunk-]\n if (chunk.endIdx >= endOfZoi) {\n rows.push({\n missing: [startOfZoi, chunk.startIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n rows.push({\n startIdx: chunk.startIdx,\n endIdx: endOfZoi,\n rows: chunk.rows.slice(0, endOfZoi - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = endOfZoi\n } else {\n // [-------zoi-------]\n // [-chunk-]\n rows.push({\n missing: [startOfZoi, chunk.startIdx],\n lastEndIdx,\n lastKey,\n lastDocId,\n })\n rows.push({\n startIdx: chunk.startIdx,\n endIdx: chunk.endIdx,\n rows: chunk.rows.slice(0, chunk.endIdx - chunk.startIdx),\n nextKey: null,\n nextDocId: null,\n })\n lastTreatedIdx = chunk.endIdx\n }\n }\n }\n return [rows, chunk.nextKey, chunk.nextDocId, chunk.endIdx, lastTreatedIdx]\n },\n [[], null, null, 0, startIdx || 0]\n )\n if (!rows.length) {\n rows.push({\n missing: [startIdx, endIdx],\n lastKey: lastKey,\n lastDocId: lastDocId,\n lastEndIdx: lastEndIdx,\n })\n } else {\n const lastRow = rows.length ? rows[rows.length - 1] : undefined\n if (lastRow && lastRow.rows && (lastRow as RowsChunk).startIdx + lastRow.rows.length < endIdx) {\n rows.push({\n missing: [(lastRow as RowsChunk).startIdx + lastRow.rows.length, endIdx],\n lastKey: lastKey,\n lastDocId: lastDocId,\n lastEndIdx: lastEndIdx,\n })\n }\n }\n\n // Once we we have determined which where the missing chunks. Go fetch them based on the lastKey/lastDocId + the limit computed with the lastEndIndex\n await Promise.all(\n rows\n .filter((r: any) => r.missing)\n .map(async (r: any) => {\n const missing = r as MissingRowsChunk\n const { rows, nextKey, nextDocId } = await executePaginator(\n {\n nextKey: missing.lastKey,\n nextDocId: missing.lastDocId,\n rows: [],\n done: false,\n },\n [],\n missing.missing[1] - missing.lastEndIdx\n )\n\n missing.rows = rows.slice(missing.missing[0] - missing.lastEndIdx, missing.missing[1] - missing.lastEndIdx)\n cache[missing.lastEndIdx] = {\n rows,\n startIdx: missing.missing[0],\n endIdx: missing.missing[1],\n nextKey: nextKey || null,\n nextDocId: nextDocId || null,\n }\n })\n )\n return (rows || []).reduce(\n (acc: X[], r: MissingRowsChunk | RowsChunk) =>\n r.rows\n ? r.rows.reduce((acc, r) => {\n acc.push(r)\n return acc\n }, acc)\n : acc,\n []\n )\n } else {\n const { rows } = await executePaginator(\n {\n nextKey: null,\n nextDocId: null,\n rows: [],\n done: false,\n },\n [],\n undefined\n )\n return rows\n }\n}\n","import * as models from '../../icc-api/model/models'\n\nexport function hasName(person: models.Patient | models.HealthcareParty, nameUse: models.PersonName.UseEnum) {\n return person.names?.some((n) => n.use === nameUse)\n}\n\nexport function findName(person: models.Patient | models.HealthcareParty, nameUse: models.PersonName.UseEnum): models.PersonName | undefined {\n return person.names?.find((n) => n.use === nameUse)\n}\n\nexport function garnishPersonWithName

(\n person: P,\n nameUse: models.PersonName.UseEnum,\n lastName?: string,\n firstName?: string,\n fullName: string = `${lastName} ${firstName ?? ''}`\n): P {\n return {\n ...person,\n names: (person.names ?? []).concat([\n new models.PersonName({\n lastName: lastName,\n firstNames: firstName ? [firstName] : [],\n text: fullName,\n use: nameUse,\n }),\n ]),\n }\n}\n","import * as bigInt from 'big-integer'\n\nconst knownBases: { [key: string]: string } = {\n // pragma: allowlist nextline secret\n base64: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/',\n // pragma: allowlist nextline secret\n base62: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n // pragma: allowlist nextline secret\n base58: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', // Bitcoin base58\n // pragma: allowlist nextline secret\n base36: '0123456789abcdefghijklmnopqrstuvwxyz',\n // pragma: allowlist nextline secret\n base32: '0123456789abcdefghjkmnpqrstvwxyz', // Crockford's base32\n // pragma: allowlist nextline secret\n base16: '0123456789abcdef',\n // pragma: allowlist nextline secret\n base10: '0123456789',\n base2: '01',\n}\n\nconst caseSensitiveBases: { [key: string]: boolean } = {\n base62: true,\n base58: true,\n base36: false,\n base32: false,\n base16: false,\n base10: true,\n base2: true,\n}\n\nexport class UuidEncoder {\n private encStr: string = knownBases.base36\n private isCaseSensitive = false\n private base = 36\n /**\n * @public\n * @param [baseEncodingStr] A string containing all usable letters for encoding\n * @constructor\n */\n constructor(baseEncodingStr = 'base36') {\n this.setBaseEncodingStr(baseEncodingStr)\n }\n\n /**\n * Set encoding base\n * @param {string} baseEncodingStr A string containing all usable letters for encoding\n * @public\n */\n setBaseEncodingStr(baseEncodingStr: string) {\n this.encStr = UuidEncoder.resolveEncodingStr(baseEncodingStr)\n this.isCaseSensitive = UuidEncoder.isCaseSensitiveBase(baseEncodingStr)\n this.base = this.encStr.length\n }\n\n /**\n * @private\n * @param {string} baseEncodingStr\n * @returns {string}\n */\n static resolveEncodingStr(baseEncodingStr: string) {\n return Object.prototype.hasOwnProperty.call(knownBases, baseEncodingStr) ? knownBases[baseEncodingStr] : baseEncodingStr\n }\n\n /**\n * @public\n * @param baseEncodingStr\n * @returns {boolean}\n */\n static isCaseSensitiveBase(baseEncodingStr: string) {\n return Object.prototype.hasOwnProperty.call(caseSensitiveBases, baseEncodingStr) ? caseSensitiveBases[baseEncodingStr] : true\n }\n\n /**\n * Encode a UUID\n * @param {string} uuid Properly formatted UUID\n * @returns {string} Encoded UUID\n * @public\n */\n encode(uuid: string) {\n const cleanUuid = uuid.replace(/-/g, '')\n const { base, encStr } = this\n\n let iUuid = bigInt(cleanUuid, 16)\n let str = ''\n\n do {\n str = encStr.substr(iUuid.mod(base).valueOf(), 1) + str\n iUuid = iUuid.divide(base)\n } while (iUuid.greater(0))\n\n return str\n }\n\n /**\n * Decode an encoded UUID\n * @public\n * @param {string} str Previously encoded string\n * @returns {string} Properly formatted UUID\n * @throws Throws an {Error} when encountering invalid data\n */\n decode(str: string) {\n let iUuid = bigInt(0)\n\n const { base, encStr } = this\n const len = str.length\n const finalStr = this.isCaseSensitive ? str : str.toLowerCase()\n\n for (let pos = 0; pos < len; pos += 1) {\n const ch = finalStr.substr(pos, 1)\n const encPos = encStr.indexOf(ch)\n\n if (encPos < 0) {\n throw new Error('Invalid encoded data')\n }\n\n iUuid = iUuid.add(encPos)\n\n if (pos < len - 1) {\n iUuid = iUuid.multiply(base)\n }\n }\n\n const uuid = iUuid.toString(16).padStart(32, '0')\n\n return `${uuid.substr(0, 8)}-${uuid.substr(8, 4)}-${uuid.substr(12, 4)}-${uuid.substr(16, 4)}-${uuid.substr(20)}`\n }\n}\n","export * from './icc-x-api'\nexport * from './icc-api'\nexport * from './icc-api/model/models'\n\nexport * from './icc-x-api/utils'\nexport * from './icc-x-api/filters/filters'\n\nexport { XHR } from './icc-api/api/XHR'\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\nvar isNode = typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n\nvar isWebWorker = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) === \"object\" && self.constructor && self.constructor.name === \"DedicatedWorkerGlobalScope\";\n\n/**\n * @see https://github.com/jsdom/jsdom/releases/tag/12.0.0\n * @see https://github.com/jsdom/jsdom/issues/1537\n */\nvar isJsDom = typeof window !== \"undefined\" && window.name === \"nodejs\" || typeof navigator !== \"undefined\" && (navigator.userAgent.includes(\"Node.js\") || navigator.userAgent.includes(\"jsdom\"));\n\nvar isDeno = typeof Deno !== \"undefined\" && typeof Deno.version !== \"undefined\" && typeof Deno.version.deno !== \"undefined\";\n\nexports.isBrowser = isBrowser;\nexports.isWebWorker = isWebWorker;\nexports.isNode = isNode;\nexports.isJsDom = isJsDom;\nexports.isDeno = isDeno;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","import { AuthenticationApi } from './AuthenticationApi'\nimport { AuthenticationApiImpl } from './impl/AuthenticationApiImpl'\nimport { KeyStorageFacade, KeyStorageImpl, LocalStorageImpl, StorageFacade } from '@icure/api'\nimport { MessageGatewayApiImpl } from './impl/MessageGatewayApiImpl'\nimport { ErrorHandlerImpl } from '../services/impl/ErrorHandlerImpl'\nimport { ErrorHandler } from '../services/ErrorHandler'\nimport { Sanitizer } from '../services/Sanitizer'\nimport { SanitizerImpl } from '../services/impl/SanitizerImpl'\nimport { ICURE_CLOUD_URL, MSG_GW_CLOUD_URL } from '../../index'\nimport { formatICureApiUrl } from '../util'\nimport { CryptoPrimitives } from '@icure/api/icc-x-api/crypto/CryptoPrimitives'\nimport { MedTechCryptoStrategies } from '../services/MedTechCryptoStrategies'\n\nexport class AnonymousMedTechApi {\n private readonly _iCureUrlPath: string\n private readonly _msgGwUrl: string\n private readonly _msgGwSpecId: string\n private readonly _authenticationApi: AuthenticationApi\n private readonly _errorHandler: ErrorHandler\n private readonly _sanitizer: Sanitizer\n\n constructor(\n iCureUrlPath: string,\n msgGwUrl: string,\n msgGwSpecId: string,\n authProcessByEmailId: string | undefined,\n authProcessBySmsId: string | undefined,\n storage: StorageFacade,\n keyStorage: KeyStorageFacade,\n private readonly cryptoPrimitives: CryptoPrimitives,\n private readonly cryptoStrategies: MedTechCryptoStrategies\n ) {\n this._iCureUrlPath = iCureUrlPath\n this._msgGwUrl = msgGwUrl\n this._msgGwSpecId = msgGwSpecId\n\n this._errorHandler = new ErrorHandlerImpl()\n this._sanitizer = new SanitizerImpl(this._errorHandler)\n\n this._authenticationApi = new AuthenticationApiImpl(\n new MessageGatewayApiImpl(msgGwUrl, msgGwSpecId, this._errorHandler, this._sanitizer),\n this._iCureUrlPath,\n authProcessByEmailId,\n authProcessBySmsId,\n this._errorHandler,\n this._sanitizer,\n cryptoPrimitives.crypto,\n storage,\n keyStorage,\n this.cryptoStrategies\n )\n }\n\n get authenticationApi(): AuthenticationApi {\n return this._authenticationApi\n }\n}\n\nexport class AnonymousMedTechApiBuilder {\n private iCureBaseUrl: string = ICURE_CLOUD_URL\n private msgGwUrl: string = MSG_GW_CLOUD_URL\n private msgGwSpecId?: string\n private authProcessByEmailId?: string\n private authProcessBySmsId?: string\n private crypto?: Crypto\n private storage?: StorageFacade\n private keyStorage?: KeyStorageFacade\n private cryptoStrategies?: MedTechCryptoStrategies\n\n withICureBaseUrl(newICureBaseUrl: string): AnonymousMedTechApiBuilder {\n this.iCureBaseUrl = formatICureApiUrl(newICureBaseUrl)\n return this\n }\n\n withMsgGwUrl(msgGwUrl: string): AnonymousMedTechApiBuilder {\n this.msgGwUrl = msgGwUrl\n return this\n }\n\n withMsgGwSpecId(msgGwSpecId: string): AnonymousMedTechApiBuilder {\n this.msgGwSpecId = msgGwSpecId\n return this\n }\n\n withAuthProcessByEmailId(authProcessByEmailId: string): AnonymousMedTechApiBuilder {\n this.authProcessByEmailId = authProcessByEmailId\n return this\n }\n\n withAuthProcessBySmsId(authProcessBySmsId: string): AnonymousMedTechApiBuilder {\n this.authProcessBySmsId = authProcessBySmsId\n return this\n }\n\n withCrypto(crypto: Crypto): AnonymousMedTechApiBuilder {\n this.crypto = crypto\n return this\n }\n\n withStorage(storage: StorageFacade): AnonymousMedTechApiBuilder {\n this.storage = storage\n return this\n }\n\n withKeyStorage(keyStorage: KeyStorageFacade): AnonymousMedTechApiBuilder {\n this.keyStorage = keyStorage\n return this\n }\n\n withCryptoStrategies(strategies: MedTechCryptoStrategies): AnonymousMedTechApiBuilder {\n this.cryptoStrategies = strategies\n return this\n }\n\n async build(): Promise {\n const iCureBaseUrl = this.iCureBaseUrl\n const msgGwUrl = this.msgGwUrl\n const msgGwSpecId = this.msgGwSpecId\n const authProcessByEmailId = this.authProcessByEmailId\n const authProcessBySmsId = this.authProcessBySmsId\n const cryptoStrategies = this.cryptoStrategies\n if (!authProcessByEmailId && !authProcessBySmsId) {\n throw new Error('At least one between authProcessIdBySms and authProcessByEmailId is required')\n }\n if (!msgGwSpecId) {\n throw new Error('msgGtwSpecId is required')\n }\n if (!cryptoStrategies) {\n throw new Error('cryptoStrategies is required')\n }\n\n const storage = this.storage ?? new LocalStorageImpl()\n const keyStorage = this.keyStorage ?? new KeyStorageImpl(storage)\n\n return new AnonymousMedTechApi(\n iCureBaseUrl,\n msgGwUrl,\n msgGwSpecId,\n authProcessByEmailId,\n authProcessBySmsId,\n storage,\n keyStorage,\n new CryptoPrimitives(this.crypto),\n cryptoStrategies\n )\n }\n}\n","import {\n IccAccesslogXApi,\n IccAgendaApi,\n IccAuthApi,\n IccCalendarItemXApi,\n IccClassificationXApi,\n IccCodeXApi,\n IccContactXApi,\n IccCryptoXApi,\n IccDeviceApi,\n IccDocumentXApi,\n IccEntityrefApi,\n IccFormXApi,\n IccGroupApi,\n IccHcpartyXApi,\n IccHelementXApi,\n IccInsuranceApi,\n IccInvoiceXApi,\n IccMessageXApi,\n IccPatientXApi,\n IccReceiptXApi,\n IccTimeTableXApi,\n IccUserXApi,\n IcureApi,\n KeyStorageFacade,\n KeyStorageImpl,\n LocalStorageImpl,\n StorageFacade,\n} from '@icure/api'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { DataSampleApi } from './DataSampleApi'\nimport { HealthcareProfessionalApi } from './HealthcareProfessionalApi'\nimport { MedicalDeviceApi } from './MedicalDeviceApi'\nimport { HealthcareElementApi } from './HealthcareElementApi'\nimport { PatientApi } from './PatientApi'\nimport { UserApi } from './UserApi'\nimport { CodingApi } from './CodingApi'\nimport { DataSampleApiImpl } from './impl/DataSampleApiImpl'\nimport { CodingApiImpl } from './impl/CodingApiImpl'\nimport { MedicalDeviceApiImpl } from './impl/MedicalDeviceApiImpl'\nimport { PatientApiImpl } from './impl/PatientApiImpl'\nimport { UserApiImpl } from './impl/UserApiImpl'\nimport { HealthcareElementApiImpl } from './impl/HealthcareElementApiImpl'\nimport { HealthcareProfessionalApiImpl } from './impl/HealthcareProfessionalApiImpl'\nimport { AuthenticationApi } from './AuthenticationApi'\nimport { AuthenticationApiImpl } from './impl/AuthenticationApiImpl'\nimport { IccMaintenanceTaskXApi } from '@icure/api/icc-x-api/icc-maintenance-task-x-api'\nimport { NotificationApiImpl } from './impl/NotificationApiImpl'\nimport { NotificationApi } from './NotificationApi'\nimport { MessageGatewayApi } from './MessageGatewayApi'\nimport { MessageGatewayApiImpl } from './impl/MessageGatewayApiImpl'\nimport { ErrorHandlerImpl } from '../services/impl/ErrorHandlerImpl'\nimport { ErrorHandler } from '../services/ErrorHandler'\nimport { Sanitizer } from '../services/Sanitizer'\nimport { SanitizerImpl } from '../services/impl/SanitizerImpl'\nimport { DataOwnerApiImpl } from './impl/DataOwnerApiImpl'\nimport { DataOwnerApi } from './DataOwnerApi'\nimport { ICURE_CLOUD_URL, MSG_GW_CLOUD_URL } from '../../index'\nimport { formatICureApiUrl } from '../util'\nimport { IccIcureMaintenanceXApi } from '@icure/api/icc-x-api/icc-icure-maintenance-x-api'\nimport { MedTechCryptoStrategies } from '../services/MedTechCryptoStrategies'\nimport { MedTechCryptoStrategiesBridge } from './impl/MedTechCryptoStrategiesBridge'\n\nexport class MedTechApi {\n private readonly _codingApi: CodingApi\n private readonly _userApi: UserApi\n private readonly _patientApi: PatientApi\n private readonly _healthcareElementApi: HealthcareElementApi\n private readonly _notificationApi: NotificationApi\n private readonly _medicalDeviceApi: MedicalDeviceApi\n private readonly _healthcareProfessionalApi: HealthcareProfessionalApi\n private readonly _dataSampleApi: DataSampleApi\n private readonly _dataOwnerApi: DataOwnerApi\n private readonly _cryptoApi: IccCryptoXApi\n\n private readonly _iCureBaseUrl: string\n private readonly _username: string\n private readonly _password: string\n\n private readonly _authenticationApi: AuthenticationApi | undefined\n private readonly _messageGatewayApi: MessageGatewayApi | undefined\n private readonly _errorHandler: ErrorHandler\n private readonly _sanitizer: Sanitizer\n private readonly _storage: StorageFacade\n private readonly _keyStorage: KeyStorageFacade\n private readonly _cryptoStrategies: MedTechCryptoStrategies\n private readonly _baseApi: {\n cryptoApi: IccCryptoXApi\n authApi: IccAuthApi\n userApi: IccUserXApi\n codeApi: IccCodeXApi\n patientApi: IccPatientXApi\n healthcarePartyApi: IccHcpartyXApi\n accessLogApi: IccAccesslogXApi\n contactApi: IccContactXApi\n healthcareElementApi: IccHelementXApi\n deviceApi: IccDeviceApi\n documentApi: IccDocumentXApi\n formApi: IccFormXApi\n invoiceApi: IccInvoiceXApi\n insuranceApi: IccInsuranceApi\n messageApi: IccMessageXApi\n entityReferenceApi: IccEntityrefApi\n receiptApi: IccReceiptXApi\n calendarItemApi: IccCalendarItemXApi\n classificationApi: IccClassificationXApi\n timetableApi: IccTimeTableXApi\n groupApi: IccGroupApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n dataOwnerApi: IccDataOwnerXApi\n }\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n authApi: IccAuthApi\n codeApi: IccCodeXApi\n userApi: IccUserXApi\n patientApi: IccPatientXApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceApi\n accessLogApi: IccAccesslogXApi\n contactApi: IccContactXApi\n healthcareElementApi: IccHelementXApi\n documentApi: IccDocumentXApi\n formApi: IccFormXApi\n invoiceApi: IccInvoiceXApi\n insuranceApi: IccInsuranceApi\n messageApi: IccMessageXApi\n entityReferenceApi: IccEntityrefApi\n receiptApi: IccReceiptXApi\n agendaApi: IccAgendaApi\n calendarItemApi: IccCalendarItemXApi\n classificationApi: IccClassificationXApi\n timetableApi: IccTimeTableXApi\n groupApi: IccGroupApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n dataOwnerApi: IccDataOwnerXApi\n },\n basePath: string,\n username: string,\n password: string,\n cryptoStrategies: MedTechCryptoStrategies,\n msgGtwUrl: string | undefined = undefined,\n msgGtwSpecId: string | undefined = undefined,\n authProcessByEmailId: string | undefined = undefined,\n authProcessBySmsId: string | undefined = undefined,\n storage?: StorageFacade,\n keyStorage?: KeyStorageFacade\n ) {\n this._iCureBaseUrl = basePath\n this._username = username\n this._password = password\n\n this._errorHandler = new ErrorHandlerImpl()\n this._sanitizer = new SanitizerImpl(this._errorHandler)\n\n this._storage = storage || new LocalStorageImpl()\n this._keyStorage = keyStorage || new KeyStorageImpl(this._storage)\n\n this._messageGatewayApi =\n msgGtwUrl && msgGtwSpecId\n ? new MessageGatewayApiImpl(msgGtwUrl, msgGtwSpecId, this._errorHandler, this._sanitizer, username, password)\n : undefined\n this._authenticationApi =\n authProcessByEmailId && authProcessBySmsId && this._messageGatewayApi\n ? new AuthenticationApiImpl(\n this._messageGatewayApi,\n basePath,\n authProcessByEmailId,\n authProcessBySmsId,\n this._errorHandler,\n this._sanitizer,\n api.cryptoApi.primitives.crypto,\n this._storage,\n this._keyStorage,\n this.cryptoStrategies\n )\n : undefined\n this._dataSampleApi = new DataSampleApiImpl(api, this._errorHandler, basePath, username, password)\n this._codingApi = new CodingApiImpl(api, this._errorHandler)\n this._medicalDeviceApi = new MedicalDeviceApiImpl(api, this._errorHandler)\n this._patientApi = new PatientApiImpl(api, this._errorHandler, basePath, username, password)\n this._userApi = new UserApiImpl(api, this._messageGatewayApi, this._errorHandler, this._sanitizer, basePath, username, password)\n this._healthcareElementApi = new HealthcareElementApiImpl(api, this._errorHandler, basePath, username, password)\n\n this._healthcareProfessionalApi = new HealthcareProfessionalApiImpl(api, this._errorHandler)\n this._notificationApi = new NotificationApiImpl(api, this._errorHandler, basePath, username, password)\n this._dataOwnerApi = new DataOwnerApiImpl(api, this._errorHandler, this._keyStorage)\n\n this._baseApi = api\n this._cryptoApi = api.cryptoApi\n this._cryptoStrategies = cryptoStrategies\n }\n\n get codingApi(): CodingApi {\n return this._codingApi\n }\n\n get userApi(): UserApi {\n return this._userApi\n }\n\n get patientApi(): PatientApi {\n return this._patientApi\n }\n\n get healthcareElementApi(): HealthcareElementApi {\n return this._healthcareElementApi\n }\n\n get notificationApi(): NotificationApi {\n return this._notificationApi\n }\n\n get medicalDeviceApi(): MedicalDeviceApi {\n return this._medicalDeviceApi\n }\n\n get healthcareProfessionalApi(): HealthcareProfessionalApi {\n return this._healthcareProfessionalApi\n }\n\n get dataSampleApi(): DataSampleApi {\n return this._dataSampleApi\n }\n\n get dataOwnerApi(): DataOwnerApi {\n return this._dataOwnerApi\n }\n\n get cryptoApi(): IccCryptoXApi {\n return this._cryptoApi\n }\n\n get authenticationApi(): AuthenticationApi {\n if (!this._authenticationApi) {\n throw Error(\n \"authenticationApi couldn't be initialized. Make sure you provided the following arguments : msgGwUrl, msgGwSpecId, and at least one of authProcessByEmailId and authProcessBySMSId\"\n )\n }\n\n return this._authenticationApi\n }\n\n get iCureBaseUrl(): string {\n return this._iCureBaseUrl\n }\n\n get username(): string {\n return this._username\n }\n\n get password(): string {\n return this._password\n }\n\n get storage(): StorageFacade {\n return this._storage\n }\n\n get keyStorage(): KeyStorageFacade {\n return this._keyStorage\n }\n\n /**\n * @internal this property is for internal use only and may be changed without notice\n */\n get cryptoStrategies(): MedTechCryptoStrategies {\n return this._cryptoStrategies\n }\n\n /**\n * Forces a reload/refresh of the api clearing any cached data. You may need this if the current user can't find or\n * access some data which got recently shared with him.\n */\n forceReload(): Promise {\n return this._cryptoApi.forceReload()\n }\n}\n\nexport class MedTechApiBuilder {\n private iCureBaseUrl?: string = ICURE_CLOUD_URL\n private userName?: string\n private password?: string\n private crypto?: Crypto\n\n private msgGwUrl?: string = MSG_GW_CLOUD_URL\n private msgGwSpecId?: string\n private authProcessByEmailId?: string\n private authProcessBySmsId?: string\n private cryptoStrategies?: MedTechCryptoStrategies\n private storage?: StorageFacade\n private keyStorage?: KeyStorageFacade\n\n withICureBaseUrl(newICureBaseUrl: string): MedTechApiBuilder {\n this.iCureBaseUrl = formatICureApiUrl(newICureBaseUrl)\n return this\n }\n\n withUserName(newUserName: string): MedTechApiBuilder {\n this.userName = newUserName\n return this\n }\n\n withPassword(newPassword: string): MedTechApiBuilder {\n this.password = newPassword\n return this\n }\n\n withMsgGwUrl(newMsgGwUrl: string | undefined): MedTechApiBuilder {\n this.msgGwUrl = newMsgGwUrl\n return this\n }\n\n withMsgGwSpecId(newSpecId: string | undefined): MedTechApiBuilder {\n this.msgGwSpecId = newSpecId\n return this\n }\n\n withAuthProcessByEmailId(authProcessByEmailId: string): MedTechApiBuilder {\n this.authProcessByEmailId = authProcessByEmailId\n return this\n }\n\n withAuthProcessBySmsId(authProcessBySmsId: string): MedTechApiBuilder {\n this.authProcessBySmsId = authProcessBySmsId\n return this\n }\n\n withCrypto(newCrypto: Crypto): MedTechApiBuilder {\n this.crypto = newCrypto\n return this\n }\n\n withStorage(storage: StorageFacade): MedTechApiBuilder {\n this.storage = storage\n return this\n }\n\n withKeyStorage(keyStorage: KeyStorageFacade): MedTechApiBuilder {\n this.keyStorage = keyStorage\n return this\n }\n\n withCryptoStrategies(strategies: MedTechCryptoStrategies): MedTechApiBuilder {\n this.cryptoStrategies = strategies\n return this\n }\n\n async build(): Promise {\n const baseUrl = this.iCureBaseUrl\n const userName = this.userName\n const password = this.password\n const cryptoStrategies = this.cryptoStrategies\n const crypto = this.crypto\n const msgGwUrl = this.msgGwUrl\n const msgGwSpecId = this.msgGwSpecId\n const authProcessByEmailId = this.authProcessByEmailId\n const authProcessBySmsId = this.authProcessBySmsId\n const storage = this.storage\n const keyStorage = this.keyStorage\n if (baseUrl == undefined) {\n throw new Error('iCureBaseUrl is required')\n }\n if (userName == undefined) {\n throw new Error('userName is required')\n }\n if (password == undefined) {\n throw new Error('password is required')\n }\n if (cryptoStrategies == undefined) {\n throw new Error('cryptoStrategies is required')\n }\n\n return IcureApi.initialise(\n baseUrl,\n {\n username: userName,\n password: password,\n },\n new MedTechCryptoStrategiesBridge(cryptoStrategies),\n crypto,\n fetch,\n {\n storage: storage,\n keyStorage: keyStorage,\n createMaintenanceTasksOnNewKey: true,\n }\n ).then(\n (api) =>\n new MedTechApi(\n api,\n baseUrl,\n userName,\n password,\n cryptoStrategies,\n msgGwUrl,\n msgGwSpecId,\n authProcessByEmailId,\n authProcessBySmsId,\n storage,\n keyStorage\n )\n )\n }\n}\n\nexport const medTechApi = (api?: MedTechApi) => {\n const apiBuilder = new MedTechApiBuilder()\n if (api) {\n return apiBuilder\n .withICureBaseUrl(api.iCureBaseUrl)\n .withCrypto(api.cryptoApi.primitives.crypto)\n .withUserName(api.username)\n .withPassword(api.password)\n .withStorage(api.storage)\n .withKeyStorage(api.keyStorage)\n .withCryptoStrategies(api.cryptoStrategies)\n }\n\n return apiBuilder\n}\n","import { AuthenticationProcess } from '../../models/AuthenticationProcess'\nimport { AuthenticationResult } from '../../models/AuthenticationResult'\nimport { AuthenticationApi } from '../AuthenticationApi'\nimport { v4 as uuid } from 'uuid'\nimport { medTechApi, MedTechApi } from '../MedTechApi'\nimport { MessageGatewayApi } from '../MessageGatewayApi'\nimport { Notification, NotificationTypeEnum } from '../../models/Notification'\nimport { Sanitizer } from '../../services/Sanitizer'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { KeyStorageFacade, retry, StorageFacade, ua2hex } from '@icure/api'\nimport { User } from '../../models/User'\nimport { RecaptchaType } from '../../models/RecaptchaType'\nimport * as Crypto from 'crypto'\nimport { KeyPair } from '@icure/api/icc-x-api/crypto/RSA'\nimport { MedTechCryptoStrategies } from '../../services/MedTechCryptoStrategies'\nimport { PatientMapper } from '../../mappers/patient'\n\nexport class AuthenticationApiImpl implements AuthenticationApi {\n private readonly fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n private readonly iCureBasePath: string\n private readonly authProcessByEmailId: string | undefined\n private readonly authProcessBySmsId: string | undefined\n private readonly messageGatewayApi: MessageGatewayApi\n private readonly errorHandler: ErrorHandler\n private readonly sanitizer: Sanitizer\n private readonly crypto: Crypto\n private readonly storage: StorageFacade\n private readonly keyStorage: KeyStorageFacade\n private readonly cryptoStrategies: MedTechCryptoStrategies\n\n constructor(\n messageGatewayApi: MessageGatewayApi,\n iCureBasePath: string,\n authProcessByEmailId: string | undefined,\n authProcessBySmsId: string | undefined,\n errorHandler: ErrorHandler,\n sanitizer: Sanitizer,\n crypto: Crypto,\n storage: StorageFacade,\n keyStorage: KeyStorageFacade,\n cryptoStrategies: MedTechCryptoStrategies,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n this.iCureBasePath = iCureBasePath\n this.messageGatewayApi = messageGatewayApi\n this.authProcessByEmailId = authProcessByEmailId\n this.authProcessBySmsId = authProcessBySmsId\n this.crypto = crypto\n this.fetchImpl = fetchImpl\n this.messageGatewayApi = messageGatewayApi\n this.errorHandler = errorHandler\n this.sanitizer = sanitizer\n this.storage = storage\n this.keyStorage = keyStorage\n this.cryptoStrategies = cryptoStrategies\n }\n\n async startAuthentication(\n recaptcha: string,\n email?: string,\n phoneNumber?: string,\n firstName: string = '',\n lastName: string = '',\n healthcareProfessionalId: string = '',\n bypassTokenCheck: boolean = false,\n validationCodeLength: number = 6,\n recaptchaType: RecaptchaType = 'recaptcha'\n ): Promise {\n if (!email && !phoneNumber) {\n throw this.errorHandler.createErrorWithMessage(\n `In order to start authentication of a user, you should at least provide its email OR its phone number`\n )\n }\n\n if ((!!email && !this.authProcessByEmailId) || (!!phoneNumber && !this.authProcessBySmsId)) {\n throw this.errorHandler.createErrorWithMessage(\n `In order to start a user authentication with an email, you need to instantiate the API with a authProcessByEmailId. If you want to start the authentication with a phone number, then you need to instantiate the API with a authProcessBySmsId`\n )\n }\n\n const processId = !!email && !!this.authProcessByEmailId ? this.authProcessByEmailId : this.authProcessBySmsId\n\n const requestId = await this.messageGatewayApi.startProcess(\n processId!,\n {\n 'g-recaptcha-response': recaptchaType === 'recaptcha' ? recaptcha : undefined,\n 'friendly-captcha-response': recaptchaType === 'friendly-captcha' ? recaptcha : undefined,\n firstName: firstName,\n lastName: lastName,\n from: email != undefined ? this.sanitizer.validateEmail(email) : this.sanitizer.validateMobilePhone(phoneNumber!),\n email: email,\n mobilePhone: phoneNumber,\n hcpId: healthcareProfessionalId,\n },\n validationCodeLength\n )\n\n if (!!requestId) {\n return new AuthenticationProcess({ requestId, login: (email ?? phoneNumber)!, bypassTokenCheck: bypassTokenCheck })\n }\n\n throw this.errorHandler.createErrorWithMessage(\n `iCure could not start the authentication process ${processId} for user ${email ?? phoneNumber}. Try again later`\n )\n }\n\n async completeAuthentication(process: AuthenticationProcess, validationCode: string): Promise {\n const result = await this.messageGatewayApi.validateProcess(process.requestId, validationCode).catch((e) => {\n if (process.bypassTokenCheck) {\n return true\n }\n throw e\n })\n\n if (result) {\n return this._initUserAuthTokenAndCrypto(process.login, validationCode)\n }\n\n throw this.errorHandler.createErrorWithMessage(\n `iCure could not complete authentication process with requestId ${process.requestId}. Try again later.`\n )\n }\n\n async authenticateAndAskAccessToItsExistingData(userLogin: string, shortLivedToken: string): Promise {\n const authenticationResult = await this._initUserAuthTokenAndCrypto(userLogin, shortLivedToken)\n\n const loggedUser = await authenticationResult.medTechApi.userApi.getLoggedUser()\n if (!loggedUser) {\n throw this.errorHandler.createErrorWithMessage(\n `There is no user currently logged in. You must call this method from an authenticated MedTechApi`\n )\n } else if (!!loggedUser.patientId) {\n const patientDataOwner = await authenticationResult.medTechApi.patientApi.getPatientAndTryDecrypt(loggedUser.patientId)\n if (!patientDataOwner)\n throw this.errorHandler.createErrorWithMessage(\n `Impossible to find the patient ${loggedUser.patientId} apparently linked to the user ${loggedUser.id}. Are you sure this patientId is correct ?`\n )\n\n const delegatesInfo = await authenticationResult.medTechApi.cryptoApi.entities.getDataOwnersWithAccessTo(\n PatientMapper.toPatientDto(patientDataOwner)!\n )\n const delegates = Object.keys(delegatesInfo.permissionsByDataOwnerId)\n\n for (const delegate of delegates) {\n const accessNotification = await authenticationResult.medTechApi.notificationApi.createOrModifyNotification(\n new Notification({\n id: uuid(),\n status: 'pending',\n author: loggedUser.id,\n responsible: loggedUser.patientId,\n type: NotificationTypeEnum.NEW_USER_OWN_DATA_ACCESS,\n }),\n delegate\n )\n //TODO Return which delegates were warned to share back info & add retry mechanism\n if (!accessNotification)\n console.error(\n `iCure could not create a notification to healthcare party ${delegate} to ask access back to ${loggedUser.patientId} data. Make sure to create a notification for the healthcare party so that he gives back access to ${loggedUser.patientId} data.`\n )\n }\n } else if (!!loggedUser.healthcarePartyId) {\n const hcpDataOwner = await authenticationResult.medTechApi.healthcareProfessionalApi\n .getHealthcareProfessional(loggedUser.healthcarePartyId)\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!hcpDataOwner)\n throw this.errorHandler.createErrorWithMessage(\n `Impossible to find the healthcare party ${loggedUser.healthcarePartyId} apparently linked to user ${loggedUser.id}. Are you sure this healthcarePartyId is correct ?`\n )\n } else if (!!loggedUser.deviceId) {\n const hcpDataOwner = await authenticationResult.medTechApi.medicalDeviceApi.getMedicalDevice(loggedUser.deviceId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!hcpDataOwner)\n throw this.errorHandler.createErrorWithMessage(\n `Impossible to find the device ${loggedUser.deviceId} apparently linked to the user ${loggedUser.id}. Are you sure this deviceId is correct ?`\n )\n } else {\n throw this.errorHandler.createErrorWithMessage(\n `User with id ${loggedUser.id} is not a Data Owner. To be a Data Owner, your user needs to have either patientId, healthcarePartyId or deviceId filled in`\n )\n }\n\n return authenticationResult\n }\n\n private async _initUserAuthTokenAndCrypto(login: string, token: string): Promise {\n const { authenticatedApi, user } = await retry(() => this._generateAndAssignAuthenticationToken(login, token), 5, 3000)\n\n const userKeyPairs: KeyPair[] = []\n for (const keyPair of Object.values(authenticatedApi.cryptoApi.userKeysManager.getDecryptionKeys())) {\n userKeyPairs.push({\n publicKey: ua2hex(await authenticatedApi.cryptoApi.primitives.RSA.exportKey(keyPair.publicKey, 'spki')),\n privateKey: ua2hex(await authenticatedApi.cryptoApi.primitives.RSA.exportKey(keyPair.privateKey, 'pkcs8')),\n })\n }\n\n return new AuthenticationResult({\n medTechApi: authenticatedApi,\n keyPairs: userKeyPairs,\n token: authenticatedApi.password,\n groupId: user.groupId!,\n userId: user.id,\n })\n }\n\n private async _generateAndAssignAuthenticationToken(login: string, validationCode: string): Promise<{ authenticatedApi: MedTechApi; user: User }> {\n const api = await medTechApi()\n .withICureBaseUrl(this.iCureBasePath)\n .withUserName(login)\n .withPassword(validationCode)\n .withCrypto(this.crypto)\n .withStorage(this.storage)\n .withKeyStorage(this.keyStorage)\n .withCryptoStrategies(this.cryptoStrategies)\n .build()\n\n const user = await api.userApi.getLoggedUser()\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n `Your validation code ${validationCode} expired. Start a new authentication process for your user`\n )\n }\n\n const token = await api.userApi.createToken(user.id!, 3600 * 24 * 365 * 10)\n if (!token) {\n throw this.errorHandler.createErrorWithMessage(\n `Your validation code ${validationCode} expired. Start a new authentication process for your user`\n )\n }\n\n return {\n authenticatedApi: await medTechApi(api).withPassword(token).build(),\n user: user,\n }\n }\n}\n","import { Coding } from '../../models/Coding'\nimport { Filter } from '../../filter/Filter'\nimport { PaginatedListCoding } from '../../models/PaginatedListCoding'\nimport { CodingApi } from '../CodingApi'\nimport { FilterChainCode, IccCodeApi, IccCodeXApi } from '@icure/api'\nimport { isCodeId } from '../../mappers/utils'\nimport { CodingMapper } from '../../mappers/codeCoding'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { FilterMapper } from '../../mappers/filter'\nimport { firstOrNull } from '../../utils/functionalUtils'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class CodingApiImpl implements CodingApi {\n private readonly codeApi: IccCodeApi\n private readonly errorHandler: ErrorHandler\n\n constructor(api: { codeApi: IccCodeXApi }, errorHandler: ErrorHandler) {\n this.codeApi = api.codeApi\n this.errorHandler = errorHandler\n }\n\n async createOrModifyCoding(coding: Coding): Promise {\n const processedCoding = firstOrNull(\n await this.createOrModifyCodings([coding]).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n if (processedCoding != undefined) {\n return processedCoding\n } else {\n throw this.errorHandler.createErrorWithMessage(\"Couldn't create or update coding\")\n }\n }\n\n async createOrModifyCodings(coding: Array): Promise> {\n const codingsToCreate = coding.filter((dev) => !dev.rev)\n const codingsToUpdate = coding.filter((dev) => !!dev.rev)\n\n if (!codingsToUpdate.every((c) => c.id != null && isCodeId(c.id))) {\n throw this.errorHandler.createErrorWithMessage('Update id should be provided as an String of format: type|code|version')\n }\n\n const codesToCreate = codingsToCreate.map((d) => CodingMapper.toCode(d))\n const codesToUpdate = codingsToUpdate.map((d) => CodingMapper.toCode(d))\n\n const createdCodes = await Promise.all(\n codesToCreate.map((c) =>\n this.codeApi.createCode(c).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n )\n const updatedCodes = await Promise.all(\n codesToUpdate.map((c) =>\n this.codeApi.modifyCode(c).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n )\n return [...createdCodes, ...updatedCodes].map((c) => CodingMapper.toCoding(c))\n }\n\n async filterCoding(filter: Filter, nextCodingId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListCoding({\n pageSize: 0,\n totalSize: 0,\n rows: [],\n })\n } else {\n return PaginatedListMapper.toPaginatedListCoding(\n await this.codeApi\n .filterCodesBy(\n undefined,\n nextCodingId,\n limit,\n undefined,\n undefined,\n undefined,\n new FilterChainCode({\n filter: FilterMapper.toAbstractFilterDto(filter, 'Coding'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n }\n\n async getCoding(codingId: string): Promise {\n return CodingMapper.toCoding(\n await this.codeApi\n .getCode(codingId)\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n }\n\n async matchCoding(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return []\n } else {\n return this.codeApi.matchCodesBy(FilterMapper.toAbstractFilterDto(filter, 'Coding')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n}\n","import { IccCryptoXApi, IccDeviceApi, IccHcpartyXApi, IccPatientXApi, IccUserXApi, KeyStorageFacade } from '@icure/api'\nimport { DataOwnerApi } from '../DataOwnerApi'\nimport { User } from '../../models/User'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { DataOwnerTypeEnum, DataOwnerWithType } from '../../models/DataOwner'\nimport { IccIcureMaintenanceXApi } from '@icure/api/icc-x-api/icc-icure-maintenance-x-api'\nimport { DataOwnerMapper } from '../../mappers/dataOwner'\nimport { hexPublicKeysOf } from '@icure/api/icc-x-api/crypto/utils'\n\nexport class DataOwnerApiImpl implements DataOwnerApi {\n private readonly cryptoApi: IccCryptoXApi\n private readonly userApi: IccUserXApi\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly patientApi: IccPatientXApi\n private readonly hcPartyApi: IccHcpartyXApi\n private readonly deviceApi: IccDeviceApi\n private readonly icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n private readonly errorHandler: ErrorHandler\n private readonly keyStorage: KeyStorageFacade\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n userApi: IccUserXApi\n dataOwnerApi: IccDataOwnerXApi\n patientApi: IccPatientXApi\n healthcarePartyApi: IccHcpartyXApi\n deviceApi: IccDeviceApi\n icureMaintenanceTaskApi: IccIcureMaintenanceXApi\n },\n errorHandler: ErrorHandler,\n keyStorage: KeyStorageFacade\n ) {\n this.cryptoApi = api.cryptoApi\n this.userApi = api.userApi\n this.dataOwnerApi = api.dataOwnerApi\n this.patientApi = api.patientApi\n this.hcPartyApi = api.healthcarePartyApi\n this.deviceApi = api.deviceApi\n this.errorHandler = errorHandler\n this.keyStorage = keyStorage\n this.icureMaintenanceTaskApi = api.icureMaintenanceTaskApi\n }\n\n getDataOwnerIdOf(user: User): string {\n const dataOwnerId = user.healthcarePartyId ?? user.patientId ?? user.deviceId\n if (dataOwnerId == undefined) {\n throw this.errorHandler.createErrorWithMessage(\n `The current user is not a data owner. You must be either a patient, a device or a healthcare professional to call this method.`\n )\n }\n return dataOwnerId\n }\n\n async giveAccessBackTo(ownerId: string, ownerNewPublicKey: string): Promise {\n try {\n await this.icureMaintenanceTaskApi.applyKeyPairUpdate({\n concernedDataOwnerId: ownerId,\n newPublicKey: ownerNewPublicKey,\n })\n } catch (e) {\n console.error(e)\n throw this.errorHandler.createErrorWithMessage(\n `Could not give access back to owner ${ownerId} with public key ${ownerNewPublicKey}. Try again later`\n )\n }\n }\n\n async getDataOwner(ownerId: string): Promise {\n const retrieved = await this.dataOwnerApi.getDataOwner(ownerId)\n return DataOwnerMapper.toDataOwnerWithTypeDecryptingPatient(\n retrieved,\n async (p) => (await this.patientApi.tryDecryptOrReturnOriginal(undefined, [p]))[0]\n )\n }\n\n getPublicKeysOf(dataOwner: DataOwnerWithType): string[] {\n const dataOwnerDto = DataOwnerMapper.toDataOwnerWithTypeDto(dataOwner).dataOwner\n return [...hexPublicKeysOf(dataOwnerDto)]\n }\n}\n","import { Content } from '../../models/Content'\nimport { DataSample } from '../../models/DataSample'\nimport { Filter } from '../../filter/Filter'\nimport { PaginatedListDataSample } from '../../models/PaginatedListDataSample'\nimport { Document } from '../../models/Document'\nimport { DataSampleApi } from '../DataSampleApi'\nimport {\n Contact,\n Contact as ContactDto,\n ContactByServiceIdsFilter,\n Delegation,\n Document as DocumentDto,\n FilterChainContact,\n FilterChainService,\n IccAuthApi,\n IccContactXApi,\n IccCryptoXApi,\n IccDocumentXApi,\n IccHelementXApi,\n IccPatientXApi,\n IccUserXApi,\n ListOfIds,\n PaginatedListContact,\n Patient as PatientDto,\n Service,\n Service as ServiceDto,\n ServiceLink,\n SubContact,\n ua2hex,\n User as UserDto,\n} from '@icure/api'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { any, distinctBy, firstOrNull, isNotEmpty, sumOf } from '../../utils/functionalUtils'\nimport { CachedMap } from '../../utils/cachedMap'\nimport { DataSampleMapper } from '../../mappers/serviceDataSample'\nimport { DocumentMapper } from '../../mappers/document'\nimport { FilterMapper } from '../../mappers/filter'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { UtiDetector } from '../../utils/utiDetector'\nimport { subscribeToEntityEvents } from '../../utils/websocket'\nimport { toMap, toMapArrayTransform } from '../../mappers/utils'\nimport { DelegationMapper } from '../../mappers/delegation'\nimport { Patient } from '../../models/Patient'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { Connection, ConnectionImpl } from '../../models/Connection'\nimport toDelegationDto = DelegationMapper.toDelegationDto\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\nimport { DataSampleFilter } from '../../filter/dsl/DataSampleFilterDsl'\nimport { PatientMapper } from '../../mappers/patient'\n\nexport class DataSampleApiImpl implements DataSampleApi {\n private readonly crypto: IccCryptoXApi\n private readonly authApi: IccAuthApi\n private readonly userApi: IccUserXApi\n private readonly patientApi: IccPatientXApi\n private readonly contactApi: IccContactXApi\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly documentApi: IccDocumentXApi\n private readonly healthcareElementApi: IccHelementXApi\n\n private readonly errorHandler: ErrorHandler\n\n private readonly contactsCache: CachedMap = new CachedMap(5 * 60, 10000)\n private readonly basePath: string\n private readonly username: string | undefined\n private readonly password: string | undefined\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n userApi: IccUserXApi\n patientApi: IccPatientXApi\n contactApi: IccContactXApi\n dataOwnerApi: IccDataOwnerXApi\n documentApi: IccDocumentXApi\n healthcareElementApi: IccHelementXApi\n authApi: IccAuthApi\n },\n errorHandler: ErrorHandler,\n basePath: string,\n username: string | undefined,\n password: string | undefined\n ) {\n this.basePath = basePath\n this.username = username\n this.password = password\n this.errorHandler = errorHandler\n this.crypto = api.cryptoApi\n this.userApi = api.userApi\n this.patientApi = api.patientApi\n this.contactApi = api.contactApi\n this.dataOwnerApi = api.dataOwnerApi\n this.documentApi = api.documentApi\n this.healthcareElementApi = api.healthcareElementApi\n this.authApi = api.authApi\n }\n\n clearContactCache() {\n this.contactsCache.invalidateAll()\n }\n\n async createOrModifyDataSampleFor(patientId: string, dataSample: DataSample): Promise {\n const createdOrUpdatedDataSample = (await this.createOrModifyDataSamplesFor(patientId, [dataSample])).pop()\n if (createdOrUpdatedDataSample) {\n return createdOrUpdatedDataSample\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not create / modify data sample ${dataSample.id} for patient ${patientId}`)\n }\n\n async createOrModifyDataSamplesFor(patientId: string, dataSamples: Array): Promise> {\n if (dataSamples.length == 0) {\n return Promise.resolve([])\n }\n\n if (distinctBy(dataSamples, (ds) => ds.batchId).size > 1) {\n throw this.errorHandler.createErrorWithMessage('Only data samples of a same batch (with the same batchId) can be processed together')\n }\n\n // Arbitrary : 1 service = 1K\n if (this._countHierarchyOfDataSamples(0, 0, dataSamples) > 1000) {\n throw this.errorHandler.createErrorWithMessage(\"Too many data samples to process. Can't process more than 1000 data samples in the same batch\")\n }\n\n const currentUser = await this.userApi.getCurrentUser()\n const [contactCached, existingContact] = await this._getContactOfDataSample(currentUser, dataSamples[0])\n\n const contactPatientId = existingContact ? (await this.contactApi.decryptPatientIdOf(existingContact))[0] : undefined\n\n if (existingContact != null && contactPatientId == null) {\n throw this.errorHandler.createErrorWithMessage(\"Can't update a batch of data samples that is not linked to any patient yet.\")\n }\n\n if (contactPatientId != null && contactPatientId != patientId) {\n throw this.errorHandler.createErrorWithMessage(\"Can't update the patient of a batch of data samples. Delete those samples and create new ones\")\n }\n\n const existingPatient = await this.patientApi.getPatientWithUser(currentUser, patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n let createdOrModifiedContact: ContactDto\n\n if (contactCached && existingContact != null) {\n const servicesToModify = dataSamples.map((e) => DataSampleMapper.toServiceDto(e, e.batchId)!)\n const subContacts = await this._createPotentialSubContactsForHealthElements(servicesToModify, currentUser)\n\n const contactToModify = {\n ...existingContact,\n services: servicesToModify.map((service) => {\n return {\n ...service,\n formIds: undefined,\n healthElementsIds: undefined,\n }\n }),\n subContacts: subContacts,\n openingDate: Math.min(\n ...servicesToModify.filter((element) => element.openingDate != null || element.valueDate != null).map((e) => e.openingDate ?? e.valueDate!)\n ),\n closingDate: Math.max(\n ...servicesToModify.filter((element) => element.closingDate != null || element.valueDate != null).map((e) => e.closingDate ?? e.valueDate!)\n ),\n }\n\n createdOrModifiedContact = await this.contactApi.modifyContactWithUser(currentUser, contactToModify).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n } else {\n const contactToCreate = await this.createContactDtoUsing(currentUser, existingPatient, dataSamples, existingContact)\n createdOrModifiedContact = await this.contactApi\n .createContactWithUser(currentUser, contactToCreate)\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n .then((x) => {\n if (!x) throw this.errorHandler.createErrorWithMessage(`Unexpected response for created contact: ${x}`)\n return x\n })\n }\n\n createdOrModifiedContact.services!.forEach((service) => this.contactsCache.put(service.id!, createdOrModifiedContact))\n return Promise.resolve(\n createdOrModifiedContact.services!.map(\n (service) =>\n DataSampleMapper.toDataSample(\n this.enrichWithContactMetadata(service, createdOrModifiedContact),\n createdOrModifiedContact.id,\n createdOrModifiedContact.subContacts?.filter((subContact) => subContact.services?.find((s) => s.serviceId == service.id))\n )!\n )\n )\n }\n\n _countHierarchyOfDataSamples(currentCount: number, dataSampleIndex: number, dataSamples: Array): number {\n if (dataSampleIndex >= dataSamples.length) {\n return currentCount\n }\n\n let currentDS = dataSamples[dataSampleIndex]\n let dsToSum = Object.values(currentDS.content).filter((element) => isNotEmpty(element?.compoundValue))\n let dataSampleCount = sumOf(dsToSum, (input) => this._countHierarchyOfDataSamples(0, 0, input.compoundValue!))\n\n return this._countHierarchyOfDataSamples(currentCount + dataSampleCount, dataSampleIndex + 1, dataSamples)\n }\n\n async getDataSamplesForPatient(patient: Patient): Promise> {\n const user = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n }\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (!dataOwnerId) {\n throw this.errorHandler.createErrorWithMessage(\n 'The current user is not a data owner. You must be either a patient, a device or a healthcare professional to call this method.'\n )\n }\n const patientDto = PatientMapper.toPatientDto(patient)!\n const filter = {\n healthcarePartyId: dataOwnerId,\n patientSecretForeignKeys: await this.crypto.entities.secretIdsOf(patientDto, undefined),\n $type: 'DataSampleByHealthcarePartyPatientFilter',\n }\n return await this.concatenateFilterResults(filter)\n }\n\n async createContactDtoUsing(\n currentUser: UserDto,\n contactPatient: PatientDto,\n dataSamples: Array,\n existingContact?: ContactDto\n ): Promise {\n const servicesToCreate = dataSamples\n .map((e) => DataSampleMapper.toServiceDto(e, e.batchId))\n .map((e) => {\n return { ...e, modified: undefined }\n })\n\n let baseContact: ContactDto\n\n const subContacts = await this._createPotentialSubContactsForHealthElements(servicesToCreate, currentUser)\n\n if (existingContact != null) {\n baseContact = {\n ...existingContact,\n id: this.crypto.primitives.randomUuid(),\n rev: undefined,\n modified: Date.now(),\n }\n } else {\n baseContact = await this.contactApi\n .newInstance(currentUser, contactPatient, new ContactDto({ id: this.crypto.primitives.randomUuid() }))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n return {\n ...baseContact,\n subContacts: subContacts,\n services: servicesToCreate.map((service) => {\n return { ...service, formIds: undefined, healthElementsIds: undefined }\n }),\n openingDate: Math.min(\n ...servicesToCreate.filter((element) => element.openingDate != null || element.valueDate != null).map((e) => e.openingDate ?? e.valueDate!)\n ),\n closingDate: Math.max(\n ...servicesToCreate.filter((element) => element.closingDate != null || element.valueDate != null).map((e) => e.closingDate ?? e.valueDate!)\n ),\n }\n }\n\n async deleteDataSample(dataSampleId: string): Promise {\n const deletedDataSampleId = (await this.deleteDataSamples([dataSampleId])).pop()\n if (deletedDataSampleId) {\n return deletedDataSampleId\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not delete data sample ${dataSampleId}`)\n }\n\n async deleteDataSamples(requestBody: Array): Promise> {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const existingContact = firstOrNull(await this._findContactsForDataSampleIds(currentUser, requestBody))\n if (existingContact == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not find batch information of the data sample ${requestBody}`)\n }\n\n const existingServiceIds = existingContact.services?.map((e) => e.id)\n if (existingServiceIds == undefined || any(requestBody, (element) => element! in existingServiceIds!)) {\n throw this.errorHandler.createErrorWithMessage(`Could not find all data samples in same batch ${existingContact.id}`)\n }\n\n const contactPatient = await this._getPatientOfContact(currentUser, existingContact)\n if (contactPatient == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Couldn't find patient related to batch of data samples ${existingContact.id}`)\n }\n\n const servicesToDelete = existingContact.services!.filter((element) => requestBody.includes(element.id!))\n\n const deletedServices = (await this.deleteServices(currentUser, contactPatient, servicesToDelete))?.services\n ?.filter((element) => requestBody.includes(element.id!))\n ?.filter((element) => element.endOfLife != null)\n ?.map((e) => e.id!)\n\n if (deletedServices == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not delete data samples ${requestBody}`)\n }\n\n return Promise.resolve(deletedServices)\n }\n\n async deleteServices(user: UserDto, patient: PatientDto, services: Array): Promise {\n const currentTime = Date.now()\n const contactToDeleteServices = await this.contactApi\n .newInstance(\n user,\n patient,\n new ContactDto({\n id: this.crypto.primitives.randomUuid(),\n services: services.map(\n (service) =>\n new ServiceDto({\n id: service.id,\n created: service.created,\n modified: currentTime,\n endOfLife: currentTime,\n })\n ),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return this.contactApi.createContactWithUser(user, contactToDeleteServices).then((x) => {\n if (!x) throw this.errorHandler.createErrorWithMessage(`Unexpected response for created contact: ${x}`)\n return x\n })\n }\n\n async filterDataSample(filter: Filter, nextDataSampleId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListDataSample({ pageSize: 0, totalSize: 0, rows: [] })\n }\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const hcpId = (currentUser.healthcarePartyId || currentUser.patientId || currentUser.deviceId)!\n\n const paginatedListService = await this.contactApi\n .filterServicesBy(\n nextDataSampleId,\n limit,\n new FilterChainService({\n filter: FilterMapper.toAbstractFilterDto(filter, 'DataSample'),\n })\n )\n .then((paginatedServices) =>\n this.contactApi\n .decryptServices(hcpId, paginatedServices.rows!)\n .then((decryptedRows) => Object.assign(paginatedServices, { rows: decryptedRows }))\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n return PaginatedListMapper.toPaginatedListDataSample(paginatedListService)!\n }\n\n async getDataSample(dataSampleId: string): Promise {\n return Promise.resolve(DataSampleMapper.toDataSample(await this._getServiceFromICure(dataSampleId))!)\n }\n\n matchDataSample(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return Promise.resolve([])\n } else {\n return this.contactApi.matchServicesBy(FilterMapper.toAbstractFilterDto(filter, 'DataSample')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n\n async giveAccessTo(dataSample: DataSample, delegatedTo: string): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(currentUser)\n const contactOfDataSample = (await this._getContactOfDataSample(currentUser, dataSample))[1]\n\n if (contactOfDataSample == undefined)\n throw this.errorHandler.createErrorWithMessage(\n `Could not find the batch of the data sample ${dataSample.id}. User ${currentUser.id} may not have access to it.`\n )\n\n const updatedContact = await this.contactApi.shareWith(delegatedTo, contactOfDataSample)\n\n if (updatedContact == undefined || updatedContact.services == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Impossible to give access to ${delegatedTo} to data sample ${dataSample.id} information`)\n }\n\n const updatedService = updatedContact.services.find((service) => service.id == dataSample.id)!\n const documentIds = Object.entries(updatedService.content ?? {}).flatMap(([_, value]) => (value.documentId ? [value.documentId!] : []))\n if (documentIds.length) {\n const documents = Object.fromEntries((await this.documentApi.getDocuments({ ids: documentIds })).map((x) => [x.id!, x]))\n for (const docId of documentIds) {\n try {\n await this.documentApi.shareWith(delegatedTo, documents[docId])\n } catch (e) {\n console.error(`Failed to give access to attachment with document id ${docId}`, e)\n }\n }\n }\n\n return DataSampleMapper.toDataSample(\n this.enrichWithContactMetadata(updatedService, updatedContact),\n updatedContact.id,\n updatedContact.subContacts?.filter((subContact) => subContact.services?.find((s) => s.serviceId == dataSample.id) != undefined)\n )!\n }\n\n async concatenateFilterResults(\n filter: Filter,\n nextId?: string | undefined,\n limit?: number | undefined,\n accumulator: Array = []\n ): Promise> {\n const paginatedDataSamples = await this.filterDataSample(filter, nextId, limit)\n return !paginatedDataSamples.nextKeyPair?.startKeyDocId\n ? accumulator.concat(paginatedDataSamples.rows)\n : this.concatenateFilterResults(filter, paginatedDataSamples.nextKeyPair.startKeyDocId, limit, accumulator.concat(paginatedDataSamples.rows))\n }\n\n async subscribeToDataSampleEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: Filter | undefined,\n eventFired: (dataSample: DataSample) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n return subscribeToEntityEvents(\n this.basePath,\n this.authApi,\n 'DataSample',\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.contactApi.decryptServices(currentUser.healthcarePartyId!, [encrypted]))[0]\n ).then((ws) => new ConnectionImpl(ws))\n }\n\n async extractPatientId(dataSample: DataSample): Promise {\n return (await this.crypto.entities.owningEntityIdsOf(DataSampleMapper.toServiceDto(dataSample)!, undefined))[0]\n }\n\n private async _getContactOfDataSample(currentUser: UserDto, dataSample: DataSample): Promise<[boolean, ContactDto?]> {\n let cachedContact = dataSample.id ? this.contactsCache.getIfPresent(dataSample.id) : undefined\n if (cachedContact) {\n return [true, cachedContact]\n } else {\n let contact: ContactDto | undefined = dataSample.batchId ? await this.contactApi.getContactWithUser(currentUser, dataSample.batchId) : undefined\n return [false, contact]\n }\n }\n\n private async _findContactsForDataSampleIds(currentUser: UserDto, dataSampleIds: Array): Promise> {\n const cachedContacts = this.contactsCache.getAllPresent(dataSampleIds)\n const dataSampleIdsToSearch = dataSampleIds.filter((element) => Object.keys(cachedContacts).find((key) => key == element) == undefined)\n\n if (dataSampleIdsToSearch.length > 0) {\n const notCachedContacts = (\n (await this.contactApi\n .filterByWithUser(\n currentUser,\n undefined,\n dataSampleIdsToSearch.length,\n new FilterChainContact({\n filter: new ContactByServiceIdsFilter({ ids: dataSampleIdsToSearch }),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as PaginatedListContact\n ).rows\n\n if (notCachedContacts == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Couldn't find batches linked to data samples ${dataSampleIdsToSearch}`)\n }\n\n // Caching\n notCachedContacts.forEach((contact) => {\n contact.services\n ?.filter((service) => service.id != undefined && dataSampleIdsToSearch.includes(service.id))\n .forEach((service) => this.contactsCache.put(service.id!, contact))\n })\n\n return [...Object.values(cachedContacts), ...notCachedContacts]\n } else {\n return Object.values(cachedContacts)\n }\n }\n\n private async _getPatientOfContact(currentUser: UserDto, contactDto: ContactDto): Promise {\n const patientId = (await this.contactApi.decryptPatientIdOf(contactDto))[0]\n if (patientId) {\n return this.patientApi.getPatientWithUser(currentUser, patientId)\n } else {\n return undefined\n }\n }\n\n private async _getServiceFromICure(dataSampleId: string): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return this.contactApi.getServiceWithUser(currentUser, dataSampleId)\n }\n\n private _createPotentialSubContactsForHealthElements(services: Array, currentUser: UserDto): Promise {\n return Promise.all(services.filter((service) => service.healthElementsIds != undefined && service.healthElementsIds.length > 0)).then(\n (servicesWithHe) => {\n return servicesWithHe.length > 0\n ? this._checkAndRetrieveProvidedHealthElements(\n servicesWithHe.flatMap((service) => Array.from(service.healthElementsIds!.values())),\n currentUser\n ).then((heIds) => {\n return heIds\n .map((heId) => {\n return {\n healthElement: heId,\n services: servicesWithHe\n .filter((s) => s.healthElementsIds!.find((servHeId) => servHeId == heId))\n .map((s) => new ServiceLink({ serviceId: s.id! })),\n }\n })\n .map(\n ({ healthElement, services }) =>\n new SubContact({\n healthElementId: healthElement,\n services: services,\n })\n )\n })\n : []\n }\n )\n }\n\n private async _checkAndRetrieveProvidedHealthElements(healthElementIds: Array, currentUser: UserDto): Promise> {\n if (healthElementIds.length == 0) {\n return []\n }\n\n const distinctIds = Array.from(new Set(healthElementIds).values())\n return await this.healthcareElementApi.getHealthElementsWithUser(currentUser, new ListOfIds({ ids: distinctIds })).then((healthElements) => {\n const foundIds = (healthElements ?? []).map((he) => he.id!)\n if (healthElements.length < distinctIds.length) {\n const missingIds = Array.from(distinctIds.values()).filter((id) => foundIds.find((fId) => fId == id) == undefined)\n\n throw this.errorHandler.createErrorWithMessage(\n `Health elements ${missingIds.join(',')} do not exist or user ${currentUser.id} may not access them`\n )\n }\n\n return foundIds\n })\n }\n\n private enrichWithContactMetadata(service: Service, contact: Contact) {\n return {\n ...service,\n secretForeignKeys: contact.secretForeignKeys,\n cryptedForeignKeys: contact.cryptedForeignKeys,\n delegations: contact.delegations,\n encryptionKeys: contact.encryptionKeys,\n }\n }\n\n async setDataSampleAttachment(\n dataSampleId: string,\n body: ArrayBuffer,\n documentName?: string,\n documentVersion?: string,\n documentExternalUuid?: string,\n documentLanguage?: string\n ): Promise {\n try {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const existingDataSample = await this.getDataSample(dataSampleId)\n\n const [, batchOfDataSample] = await this._getContactOfDataSample(currentUser, existingDataSample)\n if (batchOfDataSample == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not find the batch of the data sample ${dataSampleId}`)\n }\n\n const patientIdOfBatch = (await this.contactApi.decryptPatientIdOf(batchOfDataSample))[0]\n if (patientIdOfBatch == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Can not set an attachment to a data sample not linked to a patient`)\n }\n\n const dataOwnersWithAccessInfo = await this.contactApi.getDataOwnersWithAccessTo(batchOfDataSample)\n if (dataOwnersWithAccessInfo.hasUnknownAnonymousDataOwners) {\n console.warn(\n `Could not determine all data owners with access to sample with id ${dataSampleId}. Some users may be able to access the data sample but not the attachment.`\n )\n }\n\n const documentToCreate = await this.documentApi.newInstance(\n currentUser,\n undefined,\n new DocumentDto({\n id: this.crypto.primitives.randomUuid(),\n name: documentName,\n version: documentVersion,\n externalUuid: documentExternalUuid,\n hash: ua2hex(await this.crypto.primitives.sha256(body)),\n size: body.byteLength,\n mainUti: UtiDetector.getUtiFor(documentName),\n }),\n {\n additionalDelegates: dataOwnersWithAccessInfo.permissionsByDataOwnerId,\n }\n )\n\n const createdDocument = await this.documentApi.createDocument(documentToCreate).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n // Update data sample with documentId\n const contentIso = documentLanguage ?? 'en'\n const newDSContent = {\n ...existingDataSample.content,\n [contentIso]: new Content({\n ...(existingDataSample.content[contentIso] ?? {}),\n documentId: createdDocument.id,\n }),\n }\n await this.createOrModifyDataSampleFor(\n patientIdOfBatch!,\n new DataSample({\n ...existingDataSample,\n content: newDSContent,\n })\n )\n // Do not delete existing `Document` entity, even if existing: services are versioned\n\n // Add attachment to document\n const docWithAttachment = await this.documentApi.encryptAndSetDocumentAttachment(createdDocument, body)\n\n return DocumentMapper.toDocument(docWithAttachment)\n } catch (e) {\n if (e instanceof Error) {\n throw this.errorHandler.createError(e)\n }\n throw e\n }\n }\n async deleteAttachment(dataSampleId: string, documentId: string): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n const existingContact = (await this._findContactsForDataSampleIds(currentUser, [dataSampleId]))[0]\n if (existingContact == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not find batch information of the data sample ${dataSampleId}`)\n }\n\n const existingService = existingContact!.services!.find((s) => s.id == dataSampleId)\n if (existingService == undefined || existingService.content == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not find batch information of the data sample ${dataSampleId}`)\n }\n\n const contactPatientId = (await this.contactApi.decryptPatientIdOf(existingContact!))[0]\n if (contactPatientId == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Cannot set an attachment to a data sample not linked to a patient`)\n }\n\n const contentToDelete = Object.entries(existingService.content!).find(([_, content]) => content.documentId == documentId)?.[0]\n\n if (contentToDelete == undefined) {\n throw this.errorHandler.createErrorWithMessage(`Could not find attachment ${documentId} in the data sample ${dataSampleId}`)\n }\n\n const updatedContent = toMap(Object.entries(existingService.content!).filter(([key, _]) => key != contentToDelete!))\n\n await this.createOrModifyDataSampleFor(\n contactPatientId,\n DataSampleMapper.toDataSample({\n ...existingService,\n content: updatedContent,\n })!\n ).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n // Do not actually delete existing `Document` entity: services are versioned\n\n return documentId\n }\n\n async getDataSampleAttachmentContent(dataSampleId: string, documentId: string): Promise {\n const documentOfAttachment = await this._getDataSampleAttachmentDocumentFromICure(dataSampleId, documentId)\n\n return this.documentApi.getAndDecryptDocumentAttachment(documentOfAttachment)\n }\n\n async getDataSampleAttachmentDocument(dataSampleId: string, documentId: string): Promise {\n return DocumentMapper.toDocument(await this._getDataSampleAttachmentDocumentFromICure(dataSampleId, documentId))\n }\n\n private async _getDataSampleAttachmentDocumentFromICure(dataSampleId: string, documentId: string): Promise {\n const existingDataSample = await this.getDataSample(dataSampleId)\n if (Object.entries(existingDataSample!.content).find(([, content]) => content.documentId == documentId) == null) {\n throw this.errorHandler.createErrorWithMessage(`Id ${documentId} does not reference any document in the data sample ${dataSampleId}`)\n }\n\n return this.documentApi.getDocument(documentId)\n }\n}\n","import { HealthcareElement } from '../../models/HealthcareElement'\nimport { Filter } from '../../filter/Filter'\nimport { PaginatedListHealthcareElement } from '../../models/PaginatedListHealthcareElement'\nimport { HealthcareElementApi } from '../HealthcareElementApi'\nimport {\n DocIdentifier,\n FilterChainHealthElement,\n HealthElement,\n IccAuthApi,\n IccContactXApi,\n IccCryptoXApi,\n IccDocumentXApi,\n IccHcpartyXApi,\n IccHelementXApi,\n IccPatientXApi,\n IccUserXApi,\n PaginatedListHealthElement,\n Patient as PatientDto,\n User,\n User as UserDto,\n} from '@icure/api'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { forceUuid } from '../../mappers/utils'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { FilterMapper } from '../../mappers/filter'\nimport { HealthcareElementMapper } from '../../mappers/healthcareElement'\nimport { firstOrNull } from '../../utils/functionalUtils'\nimport { Patient } from '../../models/Patient'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { Connection, ConnectionImpl } from '../../models/Connection'\nimport { subscribeToEntityEvents } from '../../utils/websocket'\nimport { Delegation } from '../../models/Delegation'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\nimport { PatientMapper } from '../../mappers/patient'\n\nexport class HealthcareElementApiImpl implements HealthcareElementApi {\n private readonly userApi: IccUserXApi\n private readonly heApi: IccHelementXApi\n private readonly patientApi: IccPatientXApi\n private readonly cryptoApi: IccCryptoXApi\n private readonly authApi: IccAuthApi\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly errorHandler: ErrorHandler\n\n private readonly basePath: string\n private readonly username?: string\n private readonly password?: string\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n authApi: IccAuthApi\n userApi: IccUserXApi\n patientApi: IccPatientXApi\n contactApi: IccContactXApi\n dataOwnerApi: IccDataOwnerXApi\n documentApi: IccDocumentXApi\n healthcarePartyApi: IccHcpartyXApi\n healthcareElementApi: IccHelementXApi\n },\n errorHandler: ErrorHandler,\n basePath: string,\n username: string | undefined,\n password: string | undefined\n ) {\n this.basePath = basePath\n this.username = username\n this.password = password\n this.authApi = api.authApi\n this.userApi = api.userApi\n this.heApi = api.healthcareElementApi\n this.patientApi = api.patientApi\n this.cryptoApi = api.cryptoApi\n this.dataOwnerApi = api.dataOwnerApi\n this.errorHandler = errorHandler\n }\n\n async createOrModifyHealthcareElement(healthcareElement: HealthcareElement, patientId?: string): Promise {\n const currentUser = (await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as User\n const patient = patientId\n ? await this.patientApi.getPatientWithUser(currentUser, patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n : undefined\n\n let createdOrUpdateHealthElement\n if (healthcareElement.rev) {\n createdOrUpdateHealthElement = await this.heApi\n .modifyHealthElementWithUser(currentUser, HealthcareElementMapper.toHealthElementDto(healthcareElement))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n } else if (patient) {\n createdOrUpdateHealthElement = await this.heApi.createHealthElementWithUser(\n currentUser,\n (await this.heApi.newInstance(currentUser, patient, HealthcareElementMapper.toHealthElementDto(healthcareElement)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as HealthElement\n )\n } else throw this.errorHandler.createErrorWithMessage('In order to create a new healthcare element, you must provide the patientId')\n\n if (createdOrUpdateHealthElement) {\n return HealthcareElementMapper.toHealthcareElement(createdOrUpdateHealthElement)!\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not create / modify healthElement ${healthcareElement.id}`)\n }\n\n async createOrModifyHealthcareElements(healthcareElements: Array, patientId?: string): Promise> {\n const heToCreate = healthcareElements.filter((he) => !he.rev)\n const heToUpdate = healthcareElements.filter((he) => !!he.rev)\n const currentUser = (await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as User\n const patient = patientId\n ? await this.patientApi.getPatientWithUser(currentUser, patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n : undefined\n\n if (!heToUpdate.every((he) => he.id != null && forceUuid(he.id))) {\n throw this.errorHandler.createErrorWithMessage('Error while updating: HealthcareElement id should be provided as an UUID v4 (String)')\n }\n\n if (!patient && heToCreate.length > 0) {\n throw this.errorHandler.createErrorWithMessage('Error while creating: patientId should be provided to create new healthcare elements')\n }\n\n const hesCreated = await Promise.all(\n heToCreate.map((he) => HealthcareElementMapper.toHealthElementDto(he)).map((he) => this.heApi.newInstance(currentUser, patient, he))\n )\n .then((healthElementsToCreate) => this.heApi.createHealthElementsWithUser(currentUser, healthElementsToCreate))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const hesUpdated = await this.heApi\n .modifyHealthElementsWithUser(\n currentUser,\n heToUpdate.map((he) => HealthcareElementMapper.toHealthElementDto(he))\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return [...hesCreated, ...hesUpdated].map((he) => HealthcareElementMapper.toHealthcareElement(he))\n }\n\n async deleteHealthcareElement(id: string): Promise {\n const deletedHeRev = firstOrNull(\n (await this.heApi.deleteHealthElements(id).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as Array\n )?.rev\n if (deletedHeRev) {\n return deletedHeRev\n }\n throw this.errorHandler.createErrorWithMessage(`An error occurred when deleting this HealthcareElement. Id: ${id}`)\n }\n\n async filterHealthcareElement(\n filter: Filter,\n nextHealthElementId?: string,\n limit?: number\n ): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListHealthcareElement({ totalSize: 0, pageSize: 0, rows: [] })\n }\n\n const currentUser = (await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as User\n\n return PaginatedListMapper.toPaginatedListHealthcareElement(\n (await this.heApi\n .filterByWithUser(\n currentUser,\n nextHealthElementId,\n limit,\n new FilterChainHealthElement({\n filter: FilterMapper.toAbstractFilterDto(filter, 'HealthcareElement'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as PaginatedListHealthElement | undefined\n )!\n }\n\n async getHealthcareElement(id: string): Promise {\n const currentUser = (await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as User\n return HealthcareElementMapper.toHealthcareElement(\n (await this.heApi.getHealthElementWithUser(currentUser, id).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })) as HealthElement\n )\n }\n\n async matchHealthcareElement(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return []\n } else {\n return this.heApi.matchHealthElementsBy(FilterMapper.toAbstractFilterDto(filter, 'HealthcareElement')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n\n async _getPatientOfHealthElement(currentUser: UserDto, healthElementDto: HealthElement): Promise {\n const patientId = await this._getPatientIdOfHealthElement(currentUser, healthElementDto)\n if (patientId) {\n return this.patientApi.getPatientWithUser(currentUser, patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n } else {\n return undefined\n }\n }\n\n async _getPatientIdOfHealthElement(currentUser: UserDto, healthElement: HealthElement): Promise {\n return (await this.heApi.decryptPatientIdOf(healthElement))[0]\n }\n\n async giveAccessTo(healthcareElement: HealthcareElement, delegatedTo: string): Promise {\n const shared = await this.heApi.shareWith(delegatedTo, HealthcareElementMapper.toHealthElementDto(healthcareElement))\n return HealthcareElementMapper.toHealthcareElement(shared)\n }\n\n async concatenateFilterResults(\n filter: Filter,\n nextId?: string | undefined,\n limit?: number | undefined,\n accumulator: Array = []\n ): Promise> {\n const paginatedHealthcareElements = await this.filterHealthcareElement(filter, nextId, limit)\n return !paginatedHealthcareElements.nextKeyPair?.startKeyDocId\n ? accumulator.concat(paginatedHealthcareElements.rows)\n : this.concatenateFilterResults(\n filter,\n paginatedHealthcareElements.nextKeyPair.startKeyDocId,\n limit,\n accumulator.concat(paginatedHealthcareElements.rows)\n )\n }\n\n async getHealthcareElementsForPatient(patient: Patient): Promise> {\n const user = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi.'\n )\n }\n const dataOwnerId = this.dataOwnerApi.getDataOwnerIdOf(user)\n if (!dataOwnerId) {\n throw this.errorHandler.createErrorWithMessage(\n 'The current user is not a data owner. You must been either a patient, a device or a healthcare professional to call this method.'\n )\n }\n const patientDto = PatientMapper.toPatientDto(patient)!\n const filter = {\n healthcarePartyId: dataOwnerId,\n patientSecretForeignKeys: await this.cryptoApi.entities.secretIdsOf(patientDto, undefined),\n $type: 'HealthcareElementByHealthcarePartyPatientFilter',\n }\n return await this.concatenateFilterResults(filter)\n }\n\n async subscribeToHealthcareElementEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: Filter | undefined,\n eventFired: (dataSample: HealthcareElement) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n\n return subscribeToEntityEvents(\n this.basePath,\n this.authApi,\n 'HealthcareElement',\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.heApi.decrypt(this.dataOwnerApi.getDataOwnerIdOf(currentUser), [encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n}\n","import { HealthcareProfessional } from '../../models/HealthcareProfessional'\nimport { Filter } from '../../filter/Filter'\nimport { PaginatedListHealthcareProfessional } from '../../models/PaginatedListHealthcareProfessional'\nimport { HealthcareProfessionalApi } from '../HealthcareProfessionalApi'\nimport {\n FilterChainHealthcareParty,\n IccContactXApi,\n IccCryptoXApi,\n IccDocumentXApi,\n IccHcpartyXApi,\n IccHelementXApi,\n IccPatientXApi,\n IccUserXApi,\n} from '@icure/api'\nimport { HealthcareProfessionalMapper } from '../../mappers/healthcareProfessional'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { FilterMapper } from '../../mappers/filter'\nimport { firstOrNull } from '../../utils/functionalUtils'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class HealthcareProfessionalApiImpl implements HealthcareProfessionalApi {\n private readonly userApi: IccUserXApi\n private readonly hcpApi: IccHcpartyXApi\n private readonly errorHandler: ErrorHandler\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n userApi: IccUserXApi\n patientApi: IccPatientXApi\n contactApi: IccContactXApi\n documentApi: IccDocumentXApi\n healthcarePartyApi: IccHcpartyXApi\n healthcareElementApi: IccHelementXApi\n },\n errorHandler: ErrorHandler\n ) {\n this.userApi = api.userApi\n this.hcpApi = api.healthcarePartyApi\n this.errorHandler = errorHandler\n }\n\n async createOrModifyHealthcareProfessional(healthcareProfessional: HealthcareProfessional): Promise {\n const createdOrModifyHealthcareParty = healthcareProfessional.rev\n ? await this.hcpApi.modifyHealthcareParty(HealthcareProfessionalMapper.toHealthcarePartyDto(healthcareProfessional)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n : await this.hcpApi.createHealthcareParty(HealthcareProfessionalMapper.toHealthcarePartyDto(healthcareProfessional)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (createdOrModifyHealthcareParty) {\n return HealthcareProfessionalMapper.toHealthcareProfessional(createdOrModifyHealthcareParty)!\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not create or modify healthcare professional ${healthcareProfessional.id}`)\n }\n\n async deleteHealthcareProfessional(hcpId: string): Promise {\n const deletedHcpRev = firstOrNull(\n await this.hcpApi.deleteHealthcareParties(hcpId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )?.rev\n if (deletedHcpRev) {\n return deletedHcpRev\n }\n throw this.errorHandler.createErrorWithMessage(`Could not delete healthcare professional ${hcpId}`)\n }\n\n async filterHealthcareProfessionalBy(\n filter: Filter,\n nextHcpId?: string,\n limit?: number\n ): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListHealthcareProfessional({ pageSize: 0, totalSize: 0, rows: [] })\n } else {\n return PaginatedListMapper.toPaginatedListHealthcareProfessional(\n await this.hcpApi\n .filterHealthPartiesBy(\n nextHcpId,\n limit,\n new FilterChainHealthcareParty({\n filter: FilterMapper.toAbstractFilterDto(filter, 'HealthcareProfessional'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n }\n\n async getHealthcareProfessional(hcpId: string): Promise {\n return HealthcareProfessionalMapper.toHealthcareProfessional(\n await this.hcpApi.getHealthcareParty(hcpId, false).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n }\n\n async matchHealthcareProfessionalBy(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return []\n } else {\n return await this.hcpApi\n .matchHealthcarePartiesBy(FilterMapper.toAbstractFilterDto(filter, 'HealthcareProfessional'))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n}\n","import { CryptoStrategies } from '@icure/api/icc-x-api/crypto/CryptoStrategies'\nimport { MedTechCryptoStrategies } from '../../services/MedTechCryptoStrategies'\nimport { DataOwnerWithType as DataOwnerWithTypeDto, hex2ua, ua2hex } from '@icure/api'\nimport { CryptoPrimitives } from '@icure/api/icc-x-api/crypto/CryptoPrimitives'\nimport { KeyPair } from '@icure/api/icc-x-api/crypto/RSA'\nimport { DataOwnerMapper } from '../../mappers/dataOwner'\nimport { CryptoActorStubWithType } from '@icure/api/icc-api/model/CryptoActorStub'\nimport KeyVerificationBehaviour = MedTechCryptoStrategies.KeyVerificationBehaviour\nimport { hexPublicKeysOf } from '@icure/api/icc-x-api/crypto/utils'\n\nexport class MedTechCryptoStrategiesBridge implements CryptoStrategies {\n constructor(private readonly medtechStrategies: MedTechCryptoStrategies) {}\n\n async generateNewKeyForDataOwner(self: DataOwnerWithTypeDto, cryptoPrimitives: CryptoPrimitives): Promise | boolean> {\n const canGenerate = await this.medtechStrategies.allowNewKeyPairGeneration(DataOwnerMapper.toDataOwnerWithType(self))\n if (canGenerate) {\n const newKey = await cryptoPrimitives.RSA.generateKeyPair()\n await this.medtechStrategies.notifyKeyPairGeneration({\n privateKey: ua2hex(await cryptoPrimitives.RSA.exportKey(newKey.privateKey, 'pkcs8')),\n publicKey: ua2hex(await cryptoPrimitives.RSA.exportKey(newKey.publicKey, 'spki')),\n })\n return newKey\n } else return false\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: {\n dataOwner: DataOwnerWithTypeDto\n unknownKeys: string[]\n unavailableKeys: string[]\n }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{\n [dataOwnerId: string]: {\n recoveredKeys: {\n [keyPairFingerprint: string]: KeyPair\n }\n keyAuthenticity: {\n [keyPairFingerprint: string]: boolean\n }\n }\n }> {\n if (keysData.length !== 1) {\n throw new Error('Internal error: data owners of MedTech api should have no hierarchy.')\n }\n const missingKeys = keysData[0].unavailableKeys\n const unverifiedKeys = keysData[0].unknownKeys\n const { recoveredKeyPairs, verifiedKeys } = await this.medtechStrategies.recoverAndVerifyKeys(\n DataOwnerMapper.toDataOwnerWithType(keysData[0].dataOwner),\n missingKeys,\n unverifiedKeys\n )\n const missingKeysSet = new Set(missingKeys)\n const unverifiedKeysSet = new Set(unverifiedKeys)\n if (recoveredKeyPairs.some(({ publicKey }) => !missingKeysSet.has(publicKey))) {\n throw new Error('Recovered keys should only contain keys which were originally missing')\n }\n if (Object.keys(verifiedKeys).some((publicKey) => !unverifiedKeysSet.has(publicKey))) {\n throw new Error('Verified keys should only contain keys which were originally unverified')\n }\n if (\n unverifiedKeys.some(\n (unverifiedKey) => !verifiedKeys[unverifiedKey] && !recoveredKeyPairs.find((recoveredKeyPair) => recoveredKeyPair.publicKey === unverifiedKey)\n )\n ) {\n throw new Error('Verified keys should contain an entry for each unverified key which was not recovered')\n }\n if (\n recoveredKeyPairs.some(\n (recoveredKeyPair) =>\n verifiedKeys[recoveredKeyPair.publicKey] && verifiedKeys[recoveredKeyPair.publicKey] !== KeyVerificationBehaviour.MARK_VERIFIED\n )\n ) {\n throw new Error('Recovered keys should considered as verified.')\n }\n const existingKeys = hexPublicKeysOf(keysData[0].dataOwner)\n return Promise.resolve({\n [keysData[0].dataOwner.dataOwner.id!]: {\n recoveredKeys: Object.fromEntries(\n await Promise.all(\n recoveredKeyPairs.map(async (x): Promise<[string, KeyPair]> => {\n if (!existingKeys.has(x.publicKey)) throw new Error('Internal error: recovered key should be an existing key')\n return [x.publicKey.slice(-32), await cryptoPrimitives.RSA.importKeyPair('pkcs8', hex2ua(x.privateKey), 'spki', hex2ua(x.publicKey))]\n })\n )\n ),\n keyAuthenticity: Object.fromEntries(\n Object.entries(verifiedKeys)\n .filter(([, b]) => b !== KeyVerificationBehaviour.TEMPORARILY_UNVERIFIED)\n .map(([k, b]) => {\n if (b === KeyVerificationBehaviour.MARK_VERIFIED) {\n return [k.slice(-32), true]\n } else if (b === KeyVerificationBehaviour.MARK_UNVERIFIED) {\n return [k.slice(-32), false]\n } else throw new Error(`Unexpected key verification behaviour ${b}`)\n })\n ),\n },\n })\n }\n\n async verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[], cryptoPrimitives: CryptoPrimitives): Promise {\n return await this.medtechStrategies.verifyDelegatePublicKeys(delegate.stub.id, publicKeys, cryptoPrimitives)\n }\n}\n","import { MedicalDevice } from '../../models/MedicalDevice'\nimport { PaginatedListMedicalDevice } from '../../models/PaginatedListMedicalDevice'\nimport { MedicalDeviceApi } from '../MedicalDeviceApi'\nimport { Device as DeviceDto, FilterChainDevice, IccDeviceApi, ListOfIds } from '@icure/api'\nimport { forceUuid } from '../../mappers/utils'\nimport { MedicalDeviceMapper } from '../../mappers/medicalDevice'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { FilterMapper } from '../../mappers/filter'\nimport { Filter } from '../../filter/Filter'\nimport { firstOrNull } from '../../utils/functionalUtils'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class MedicalDeviceApiImpl implements MedicalDeviceApi {\n private readonly deviceApi: IccDeviceApi\n private readonly errorHandler: ErrorHandler\n\n constructor(api: { deviceApi: IccDeviceApi }, errorHandler: ErrorHandler) {\n this.deviceApi = api.deviceApi\n this.errorHandler = errorHandler\n }\n\n async createOrModifyMedicalDevice(medicalDevice: MedicalDevice): Promise {\n const createdDevice = firstOrNull(await this.createOrModifyMedicalDevices([medicalDevice]))\n if (createdDevice != undefined) {\n return createdDevice\n } else {\n throw this.errorHandler.createErrorWithMessage(\"Couldn't create medical device\")\n }\n }\n\n async createOrModifyMedicalDevices(medicalDevice: Array): Promise> {\n const medicalDevicesToCreate = medicalDevice.filter((dev) => !dev.rev)\n const medicalDevicesToUpdate = medicalDevice.filter((dev) => !!dev.rev)\n\n if (!medicalDevicesToUpdate.every((device) => device.id != null && forceUuid(device.id))) {\n throw this.errorHandler.createErrorWithMessage('The id of the device to update should be a valid UUID')\n }\n\n const deviceToCreate = medicalDevicesToCreate.map((d) => MedicalDeviceMapper.toDeviceDto(d))\n const deviceToUpdate = medicalDevicesToUpdate.map((d) => MedicalDeviceMapper.toDeviceDto(d))\n\n const createdDevices = await this.deviceApi.createDevices(deviceToCreate).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const updatedDevices = await this.deviceApi.updateDevices(deviceToUpdate).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const processedDeviceIds = [...createdDevices, ...updatedDevices].map((d) => d.id!)\n\n return (await this.deviceApi.getDevices(new ListOfIds({ ids: processedDeviceIds }))).map((d) => MedicalDeviceMapper.toMedicalDevice(d))\n }\n\n async deleteMedicalDevice(medicalDeviceId: string): Promise {\n const deletedDeviceRev = (\n await this.deviceApi.deleteDevice(medicalDeviceId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n ).rev\n if (deletedDeviceRev != undefined) {\n return deletedDeviceRev\n }\n throw this.errorHandler.createErrorWithMessage(`Couldn't delete medical device ${medicalDeviceId}`)\n }\n\n async deleteMedicalDevices(requestBody: Array): Promise> {\n return (\n await this.deviceApi.deleteDevices(new ListOfIds({ ids: requestBody })).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n .filter((d) => !!d.rev)\n .map((d) => d.rev!)\n }\n\n async filterMedicalDevices(filter: Filter, nextDeviceId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListMedicalDevice({ totalSize: 0, pageSize: 0, rows: [] })\n } else {\n return PaginatedListMapper.toPaginatedListMedicalDevice(\n await this.deviceApi\n .filterDevicesBy(\n nextDeviceId,\n limit,\n new FilterChainDevice({\n filter: FilterMapper.toAbstractFilterDto(filter, 'MedicalDevice'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n }\n\n async getMedicalDevice(medicalDeviceId: string): Promise {\n return MedicalDeviceMapper.toMedicalDevice(\n await this.deviceApi.getDevice(medicalDeviceId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n }\n\n async matchMedicalDevices(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return []\n } else {\n return this.deviceApi.matchDevicesBy(FilterMapper.toAbstractFilterDto(filter, 'User')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n}\n","import { MessageGatewayApi } from '../MessageGatewayApi'\nimport { AuthenticationProcessBody, EmailMessage, SMSMessage } from '../../utils/msgGtwMessageFactory'\nimport { b2a, XHR } from '@icure/api'\nimport { v4 as uuid } from 'uuid'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { Sanitizer } from '../../services/Sanitizer'\nimport Header = XHR.Header\n\nexport class MessageGatewayApiImpl implements MessageGatewayApi {\n private readonly fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise\n private readonly msgGtwUrl: string\n private readonly specId: string\n private readonly authHeader: XHR.Header | null\n private readonly headers: Header[]\n private readonly errorHandler: ErrorHandler\n private readonly sanitizer: Sanitizer\n\n constructor(\n msgGtwUrl: string,\n specId: string,\n errorHandler: ErrorHandler,\n sanitizer: Sanitizer,\n username?: string,\n password?: string,\n fetchImpl: (input: RequestInfo, init?: RequestInit) => Promise = typeof window !== 'undefined'\n ? window.fetch\n : typeof self !== 'undefined'\n ? self.fetch\n : fetch\n ) {\n this.fetchImpl = fetchImpl\n this.msgGtwUrl = msgGtwUrl\n this.specId = specId\n this.authHeader = !!username && !!password ? new Header('Authorization', 'Basic ' + b2a(`${username}:${password}`)) : null\n this.headers = [new Header('Content-Type', 'application/json')]\n this.errorHandler = errorHandler\n this.sanitizer = sanitizer\n }\n\n async sendEmail(recipientEmail: string, email: EmailMessage): Promise {\n if (!this.authHeader) return false\n\n await XHR.sendCommand(\n 'POST',\n `${this.msgGtwUrl}/${this.specId}/email/to/${this.sanitizer.validateEmail(recipientEmail)}`,\n this.headers.concat([this.authHeader]),\n email,\n this.fetchImpl\n ).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return true\n }\n\n async sendSMS(recipientMobileNumber: string, sms: SMSMessage): Promise {\n if (!this.authHeader) return false\n\n await XHR.sendCommand(\n 'POST',\n `${this.msgGtwUrl}/${this.specId}/sms/to/${this.sanitizer.validateMobilePhone(recipientMobileNumber)}`,\n this.headers.concat([this.authHeader]),\n sms,\n this.fetchImpl\n ).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return true\n }\n\n async startProcess(processId: string, processBody: AuthenticationProcessBody, validationCodeLength: number = 6): Promise {\n const requestId = uuid()\n\n await XHR.sendCommand(\n 'POST',\n `${this.msgGtwUrl}/${this.specId}/process/${processId}/${requestId}?codeLength=${validationCodeLength}`,\n this.headers,\n processBody,\n this.fetchImpl,\n 'text/plain'\n ).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n return requestId\n }\n\n async validateProcess(requestId: string, validationCode: string): Promise {\n await XHR.sendCommand(\n 'GET',\n `${this.msgGtwUrl}/${this.specId}/process/validate/${requestId}-${validationCode}`,\n [],\n undefined,\n this.fetchImpl\n ).catch((reason) => {\n throw this.errorHandler.createError(reason)\n })\n\n return true\n }\n}\n","import { NotificationApi } from '../NotificationApi'\nimport { MaintenanceTaskStatusEnum, Notification } from '../../models/Notification'\nimport { FilterChainMaintenanceTask, IccAuthApi, IccHcpartyXApi, IccUserXApi, MaintenanceTask, User } from '@icure/api'\nimport { IccMaintenanceTaskXApi } from '@icure/api/icc-x-api/icc-maintenance-task-x-api'\nimport { NotificationMapper } from '../../mappers/notification'\nimport { PaginatedListNotification } from '../../models/PaginatedListNotification'\nimport { Filter } from '../../filter/Filter'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { FilterMapper } from '../../mappers/filter'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { Connection, ConnectionImpl } from '../../models/Connection'\nimport { subscribeToEntityEvents } from '../../utils/websocket'\nimport { deepEquality } from '../../utils/equality'\nimport { AccessLevelEnum } from '../../models/SecureDelegation'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class NotificationApiImpl implements NotificationApi {\n private readonly dataOwnerApi: IccDataOwnerXApi\n private readonly userApi: IccUserXApi\n private readonly authApi: IccAuthApi\n private readonly maintenanceTaskApi: IccMaintenanceTaskXApi\n private readonly hcpApi: IccHcpartyXApi\n private readonly errorHandler: ErrorHandler\n\n private readonly basePath: string\n private readonly username?: string\n private readonly password?: string\n\n constructor(\n api: {\n userApi: IccUserXApi\n authApi: IccAuthApi\n maintenanceTaskApi: IccMaintenanceTaskXApi\n healthcarePartyApi: IccHcpartyXApi\n dataOwnerApi: IccDataOwnerXApi\n },\n errorHandler: ErrorHandler,\n basePath: string,\n username: string | undefined,\n password: string | undefined\n ) {\n this.basePath = basePath\n this.username = username\n this.password = password\n this.authApi = api.authApi\n\n this.dataOwnerApi = api.dataOwnerApi\n this.userApi = api.userApi\n this.maintenanceTaskApi = api.maintenanceTaskApi\n this.hcpApi = api.healthcarePartyApi\n this.errorHandler = errorHandler\n }\n\n async createOrModifyNotification(notification: Notification, delegate?: string): Promise {\n return this.userApi\n .getCurrentUser()\n .then((user) => {\n if (!user)\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n const notificationPromise = !notification?.rev\n ? this._createNotification(notification, user, delegate)\n : this._updateNotification(notification, user)\n return notificationPromise.then((createdTask) => {\n return NotificationMapper.toNotification(createdTask as MaintenanceTask)\n })\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async deleteNotification(notificationId: string): Promise {\n return this.userApi\n .getCurrentUser()\n .then((user) => {\n if (!user) throw new Error('There is no user currently logged in. You must call this method from an authenticated MedTechApi')\n return this.maintenanceTaskApi.deleteMaintenanceTaskWithUser(user, notificationId).then((identifiers) => {\n if (!identifiers || identifiers.length == 0) return undefined\n return identifiers[0].id\n })\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async filterNotifications(filter: Filter, nextNotificationId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListNotification({ totalSize: 0, pageSize: 0, rows: [] })\n } else {\n return this.userApi.getCurrentUser().then((user) => {\n if (!user)\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n return this.maintenanceTaskApi\n .filterMaintenanceTasksByWithUser(\n user,\n nextNotificationId,\n limit,\n new FilterChainMaintenanceTask({\n filter: FilterMapper.toAbstractFilterDto(filter, 'Notification'),\n })\n )\n .then((paginatedList) => {\n return PaginatedListMapper.toPaginatedListNotification(paginatedList)!\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n })\n }\n }\n\n async getNotification(notificationId: string): Promise {\n return this.userApi\n .getCurrentUser()\n .then((user) => {\n if (!user)\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n return this.maintenanceTaskApi.getMaintenanceTaskWithUser(user, notificationId).then((task) => {\n return NotificationMapper.toNotification(task)\n })\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async getPendingNotificationsAfter(fromDate?: number): Promise> {\n const user = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n }\n if (!this.dataOwnerApi.getDataOwnerIdOf(user)) {\n throw this.errorHandler.createErrorWithMessage(\n 'The current user is not a data owner. You must been either a patient, a device or a healthcare professional to call this method.'\n )\n }\n const filter = {\n healthcarePartyId: this.dataOwnerApi.getDataOwnerIdOf(user),\n date: fromDate,\n $type: 'NotificationsAfterDateFilter',\n }\n return (await this.concatenateFilterResults(filter)).filter((it) => it.status === 'pending')\n }\n\n async concatenateFilterResults(\n filter: Filter,\n nextId?: string | undefined,\n limit?: number | undefined,\n accumulator: Array = []\n ): Promise> {\n const paginatedNotifications = await this.filterNotifications(filter, nextId, limit)\n return !paginatedNotifications.nextKeyPair?.startKeyDocId\n ? accumulator.concat(paginatedNotifications.rows)\n : this.concatenateFilterResults(\n filter,\n paginatedNotifications.nextKeyPair.startKeyDocId,\n limit,\n accumulator.concat(paginatedNotifications.rows)\n )\n }\n\n private _findAfterDateFilterValue(fromDate?: number): number {\n if (fromDate != undefined) {\n return fromDate\n }\n\n return new Date().getTime() - 1000 * 60 * 60 * 24 * 30\n }\n\n async updateNotificationStatus(notification: Notification, newStatus: MaintenanceTaskStatusEnum): Promise {\n notification.status = newStatus\n return this.createOrModifyNotification(notification)\n }\n\n async subscribeToNotificationEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: Filter,\n eventFired: (dataSample: Notification) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser()\n\n return subscribeToEntityEvents(\n this.basePath,\n this.authApi,\n 'Notification',\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.maintenanceTaskApi.decrypt(currentUser, [encrypted]))[0]\n ).then((rs) => new ConnectionImpl(rs))\n }\n\n private async _updateNotification(notification: Notification, user: User): Promise {\n if (!notification.id) throw this.errorHandler.createErrorWithMessage('Invalid notification')\n const existingNotification = await this.getNotification(notification.id)\n if (!existingNotification) throw this.errorHandler.createErrorWithMessage('Cannot modify a non-existing Notification')\n if (existingNotification.rev !== notification.rev) throw this.errorHandler.createErrorWithMessage('Cannot modify rev field')\n else if (existingNotification.created !== notification.created) throw this.errorHandler.createErrorWithMessage('Cannot modify created field')\n else if (existingNotification.endOfLife !== notification.endOfLife)\n throw this.errorHandler.createErrorWithMessage('Cannot modify endOfLife field')\n else if (existingNotification.deletionDate !== notification.deletionDate)\n throw this.errorHandler.createErrorWithMessage('Cannot modify deletionDate field')\n else if (existingNotification.modified !== notification.modified) throw this.errorHandler.createErrorWithMessage('Cannot modify modified field')\n else if (existingNotification.author !== notification.author) throw this.errorHandler.createErrorWithMessage('Cannot modify author field')\n else if (existingNotification.responsible !== notification.responsible)\n throw this.errorHandler.createErrorWithMessage('Cannot modify responsible field')\n else if (existingNotification.type !== notification.type) throw this.errorHandler.createErrorWithMessage('Cannot modify type field')\n else if (!deepEquality(existingNotification.systemMetaData, notification.systemMetaData))\n throw this.errorHandler.createErrorWithMessage('Cannot modify systemMetaData field')\n const inputMaintenanceTask = NotificationMapper.toMaintenanceTaskDto(notification)\n return this.maintenanceTaskApi.modifyMaintenanceTaskWithUser(user, inputMaintenanceTask).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n private async _createNotification(notification: Notification, user: User, delegate?: string): Promise {\n if (!delegate)\n throw this.errorHandler.createErrorWithMessage(\n 'No delegate provided for Notification creation. You must provide a delegate to create a Notification. The delegate is the id of the data owner you want to notify.'\n )\n const inputMaintenanceTask = NotificationMapper.toMaintenanceTaskDto(notification)\n return this.maintenanceTaskApi\n .newInstance(user, inputMaintenanceTask, { additionalDelegates: { [delegate]: AccessLevelEnum.WRITE } })\n .then((task) => {\n return this.maintenanceTaskApi.createMaintenanceTaskWithUser(user, task)\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n}\n","import { Patient, PotentiallyEncryptedPatient } from '../../models/Patient'\nimport { PaginatedListPatient } from '../../models/PaginatedListPatient'\nimport { PatientApi } from '../PatientApi'\nimport {\n FilterChainPatient,\n IccAuthApi,\n IccContactXApi,\n IccCryptoXApi,\n IccDocumentXApi,\n IccPatientXApi,\n IccUserXApi,\n Patient as PatientDto,\n} from '@icure/api'\nimport { IccDataOwnerXApi } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { FilterMapper } from '../../mappers/filter'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { Filter } from '../../filter/Filter'\nimport { PatientMapper } from '../../mappers/patient'\nimport { Connection, ConnectionImpl } from '../../models/Connection'\nimport { subscribeToEntityEvents } from '../../utils/websocket'\nimport { SharingResult, SharingStatus } from '../../utils/interfaces'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class PatientApiImpl implements PatientApi {\n private readonly userApi: IccUserXApi\n private readonly authApi: IccAuthApi\n private readonly patientApi: IccPatientXApi\n private readonly cryptoApi: IccCryptoXApi\n private readonly dataOwnerApi: IccDataOwnerXApi\n\n private readonly errorHandler: ErrorHandler\n\n private readonly basePath: string\n private readonly username?: string\n private readonly password?: string\n\n constructor(\n api: {\n cryptoApi: IccCryptoXApi\n authApi: IccAuthApi\n userApi: IccUserXApi\n patientApi: IccPatientXApi\n contactApi: IccContactXApi\n dataOwnerApi: IccDataOwnerXApi\n documentApi: IccDocumentXApi\n },\n errorHandler: ErrorHandler,\n basePath: string,\n username: string | undefined,\n password: string | undefined\n ) {\n this.basePath = basePath\n this.username = username\n this.password = password\n this.errorHandler = errorHandler\n this.userApi = api.userApi\n this.patientApi = api.patientApi\n this.cryptoApi = api.cryptoApi\n this.dataOwnerApi = api.dataOwnerApi\n this.authApi = api.authApi\n }\n\n async createOrModifyPatient(patient: Patient): Promise {\n const dto = PatientMapper.toPatientDto(patient)\n if (!dto) throw this.errorHandler.createErrorWithMessage(`Could not convert patient to DTO.\\n${JSON.stringify(patient)}`)\n const modified = await this._createOrModifyPatient(dto, true)\n if (modified instanceof Patient) return modified\n throw this.errorHandler.createErrorWithMessage(`Could not decrypt patient after modification.\\noriginal: ${patient}\\nmodified: ${modified}`)\n }\n\n async modifyPotentiallyEncryptedPatient(modifiedPatient: PotentiallyEncryptedPatient): Promise {\n const dto = PatientMapper.toPatientDto(modifiedPatient)\n if (!dto) throw this.errorHandler.createErrorWithMessage(`Could not convert patient to DTO.\\n${JSON.stringify(modifiedPatient)}`)\n return this._createOrModifyPatient(dto, modifiedPatient instanceof Patient)\n }\n\n private async _createOrModifyPatient(patientDto: PatientDto, isDecrypted: boolean): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n const createdOrUpdatedPatient = patientDto.rev\n ? await this.patientApi.modifyPatientWithUser(currentUser, patientDto).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n : await this.patientApi.createPatientWithUser(currentUser, await this.patientApi.newInstance(currentUser, patientDto)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (createdOrUpdatedPatient) {\n return isDecrypted ? PatientMapper.toPatient(createdOrUpdatedPatient)! : PatientMapper.toEncryptedPatient(createdOrUpdatedPatient)!\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not create / modify patient ${patientDto.id} with user ${currentUser.id}`)\n }\n\n async deletePatient(patientId: string): Promise {\n const deletedId = (\n await this.patientApi.deletePatient(patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )\n .map((docIdentifier) => docIdentifier.id!)\n .pop()\n\n if (deletedId) {\n return deletedId\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not delete patient ${patientId}`)\n }\n\n async getPatient(patientId: string): Promise {\n return (await this._getPatient(patientId, true)) as Patient\n }\n\n getPatientAndTryDecrypt(patientId: string): Promise {\n return this._getPatient(patientId, false)\n }\n\n private async _getPatient(patientId: string, requireDecrypted: boolean): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n const foundPatient = await this.patientApi.getPotentiallyEncryptedPatientWithUser(currentUser, patientId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (foundPatient) {\n if (foundPatient.decrypted) {\n return PatientMapper.toPatient(foundPatient.patient)!\n } else if (requireDecrypted) {\n throw this.errorHandler.createErrorWithMessage(`Could not decrypt patient ${patientId} with current user ${currentUser.id}`)\n } else {\n return PatientMapper.toEncryptedPatient(foundPatient.patient)!\n }\n }\n\n throw this.errorHandler.createErrorWithMessage(`Could not find patient ${patientId} with current user ${currentUser.id}`)\n }\n\n async filterPatients(filter: Filter, nextPatientId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListPatient({ totalSize: 0, pageSize: 0, rows: [] })\n } else {\n return PaginatedListMapper.toPaginatedListPatient(\n await this.patientApi\n .filterPatientsBy(\n undefined,\n nextPatientId,\n limit,\n undefined,\n undefined,\n undefined,\n new FilterChainPatient({\n filter: FilterMapper.toAbstractFilterDto(filter, 'Patient'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n }\n\n matchPatients(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return Promise.resolve([])\n } else {\n return this.patientApi.matchPatientsBy(FilterMapper.toAbstractFilterDto(filter, 'Patient')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n\n async giveAccessTo(patient: Patient, delegatedTo: string): Promise {\n return PatientMapper.toPatient(await this._giveAccessTo(PatientMapper.toPatientDto(patient)!, delegatedTo))!\n }\n\n async giveAccessToPotentiallyEncrypted(patient: PotentiallyEncryptedPatient, delegatedTo: string): Promise {\n if (patient instanceof Patient) {\n return this.giveAccessTo(patient, delegatedTo)\n } else {\n return PatientMapper.toEncryptedPatient(await this._giveAccessTo(PatientMapper.toPatientDto(patient)!, delegatedTo))!\n }\n }\n\n private async _giveAccessTo(patient: PatientDto, delegatedTo: string): Promise {\n const secretIds = await this.patientApi.decryptSecretIdsOf(patient)\n return this.patientApi.shareWith(delegatedTo, patient, secretIds)\n }\n\n async giveAccessToAllDataOf(patientId: string): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (!currentUser) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n }\n if (!this.dataOwnerApi.getDataOwnerIdOf(currentUser)) {\n throw this.errorHandler.createErrorWithMessage(\n 'The current user is not a data owner. You must been either a patient, a device or a healthcare professional to call this method.'\n )\n }\n return this.patientApi\n .share(currentUser, patientId, this.dataOwnerApi.getDataOwnerIdOf(currentUser), [patientId], { [patientId]: ['all'] })\n .then((res) => {\n return {\n patient: !!res?.patient ? PatientMapper.toPatient(res.patient) : undefined,\n statuses: {\n dataSamples: !!res?.statuses.contacts ? (res.statuses.contacts as SharingStatus) : undefined,\n healthcareElements: !!res?.statuses.healthElements ? (res.statuses.healthElements as SharingStatus) : undefined,\n patient: !!res?.statuses.patient ? (res.statuses.patient as SharingStatus) : undefined,\n },\n }\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async subscribeToPatientEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: Filter | undefined,\n eventFired: (patient: Patient) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {}\n ): Promise {\n const currentUser = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n return subscribeToEntityEvents(\n this.basePath,\n this.authApi,\n 'Patient',\n eventTypes,\n filter,\n eventFired,\n options,\n async (encrypted) => (await this.patientApi.decrypt(currentUser, [encrypted]))[0]\n )\n .then((rs) => new ConnectionImpl(rs))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n}\n","import { SharedDataType, User } from '../../models/User'\nimport { PaginatedListUser } from '../../models/PaginatedListUser'\nimport { UserApi } from '../UserApi'\nimport {\n FilterChainUser,\n IccAuthApi,\n IccContactXApi,\n IccCryptoXApi,\n IccDocumentXApi,\n IccHcpartyXApi,\n IccPatientXApi,\n IccUserApi,\n IccUserXApi,\n retry,\n} from '@icure/api'\nimport { UserMapper } from '../../mappers/user'\nimport { forceUuid } from '../../mappers/utils'\nimport { FilterMapper } from '../../mappers/filter'\nimport { PaginatedListMapper } from '../../mappers/paginatedList'\nimport { Filter } from '../../filter/Filter'\nimport { Connection, ConnectionImpl } from '../../models/Connection'\nimport { subscribeToEntityEvents } from '../../utils/websocket'\nimport { Patient } from '../../models/Patient'\nimport { filteredContactsFromAddresses } from '../../utils/addressUtils'\nimport { MessageGatewayApi } from '../MessageGatewayApi'\nimport { EmailMessageFactory, SMSMessageFactory } from '../../utils/msgGtwMessageFactory'\nimport { ErrorHandler } from '../../services/ErrorHandler'\nimport { Sanitizer } from '../../services/Sanitizer'\nimport { UsersByPatientIdFilter } from '../../filter/user/UsersByPatientIdFilter'\nimport { NoOpFilter } from '../../filter/dsl/filterDsl'\n\nexport class UserApiImpl implements UserApi {\n private readonly userApi: IccUserApi\n private readonly authApi: IccAuthApi\n private readonly username: string | undefined\n private readonly basePath: string\n private readonly password: string | undefined\n private readonly messageGatewayApi: MessageGatewayApi | undefined\n private readonly errorHandler: ErrorHandler\n private readonly sanitizer: Sanitizer\n\n constructor(\n api: {\n authApi: IccAuthApi\n userApi: IccUserApi\n },\n messageGatewayApi: MessageGatewayApi | undefined,\n errorHandler: ErrorHandler,\n sanitizer: Sanitizer,\n basePath: string,\n username: string | undefined,\n password: string | undefined\n ) {\n this.basePath = basePath\n this.username = username\n this.password = password\n this.authApi = api.authApi\n this.errorHandler = errorHandler\n this.sanitizer = sanitizer\n this.userApi = api.userApi\n this.messageGatewayApi = messageGatewayApi\n }\n\n async checkTokenValidity(userId: string, token: string): Promise {\n return this.userApi.checkTokenValidity(userId, token).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async createAndInviteUser(patient: Patient, messageFactory: SMSMessageFactory | EmailMessageFactory, tokenDuration = 48 * 60 * 60): Promise {\n if (!this.messageGatewayApi) {\n throw this.errorHandler.createErrorWithMessage(\n 'Can not invite a user, as no msgGtwUrl and/or specId have been provided : Make sure to call .withMsgGtwUrl and .withMsgGtwSpecId when creating your MedTechApi'\n )\n }\n\n // Checks that the Patient has all the required information\n if (!patient.id) throw this.errorHandler.createErrorWithMessage('Patient does not have a valid id')\n\n // Checks that no Users already exist for the Patient\n const existingUsers = await this.filterUsers({\n patientId: patient.id,\n $type: 'UsersByPatientIdFilter',\n } as UsersByPatientIdFilter)\n if (!!existingUsers && existingUsers.rows.length > 0) throw this.errorHandler.createErrorWithMessage('A User already exists for this Patient')\n\n // Gets the preferred contact information\n const contact = [\n filteredContactsFromAddresses(patient.addresses, 'email', 'home'), // Check for the home email\n filteredContactsFromAddresses(patient.addresses, 'mobile', 'home'), // Check for the home mobile\n filteredContactsFromAddresses(patient.addresses, 'email', 'work'), // Check for the work email\n filteredContactsFromAddresses(patient.addresses, 'mobile', 'work'), // Check for the work mobile\n filteredContactsFromAddresses(patient.addresses, 'email'), // Check for any email\n filteredContactsFromAddresses(patient.addresses, 'mobile'), // Check for any mobile\n ].filter((contact) => !!contact)[0]\n if (!contact) throw this.errorHandler.createErrorWithMessage('No email or mobile phone information provided in patient')\n\n // Creates the user\n const createdUser = await this.createOrModifyUser(\n new User({\n created: new Date().getTime(),\n name: contact.telecomNumber,\n login: contact.telecomNumber,\n patientId: patient.id,\n email: contact.telecomType == 'email' ? contact.telecomNumber : undefined,\n mobilePhone: contact.telecomType == 'mobile' ? contact.telecomNumber : undefined,\n })\n )\n if (!createdUser || !createdUser.id || !createdUser.login)\n throw this.errorHandler.createErrorWithMessage('Something went wrong during User creation')\n\n // Gets a short-lived authentication token\n const shortLivedToken = await retry(() => this.createToken(createdUser.id!, tokenDuration), 5, 2_000).catch(() => {\n throw this.errorHandler.createErrorWithMessage('Something went wrong while creating a token for the User')\n })\n if (!shortLivedToken) throw this.errorHandler.createErrorWithMessage('Something went wrong while creating a token for the User')\n\n const messagePromise = !!createdUser.email\n ? this.messageGatewayApi?.sendEmail(createdUser.login, (messageFactory as EmailMessageFactory).get(createdUser, shortLivedToken)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n : this.messageGatewayApi?.sendSMS(createdUser.login, (messageFactory as SMSMessageFactory).get(createdUser, shortLivedToken)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (!(await messagePromise)) throw this.errorHandler.createErrorWithMessage('Something went wrong contacting the Message Gateway')\n\n return createdUser\n }\n\n async createOrModifyUser(user: User): Promise {\n if (!user.rev) {\n const createdUser = await this.userApi.createUser(UserMapper.toUserDto(user)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (createdUser != undefined) {\n return UserMapper.toUser(createdUser)!\n }\n throw this.errorHandler.createErrorWithMessage(\"Couldn't create user\")\n }\n\n const updatedUser = await this.userApi.modifyUser(UserMapper.toUserDto(user)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n if (updatedUser != undefined) {\n return UserMapper.toUser(updatedUser)!\n }\n throw this.errorHandler.createErrorWithMessage(\"Couldn't update user\")\n }\n\n async createToken(userId: string, durationInSeconds?: number): Promise {\n return this.userApi.getToken(userId, forceUuid(), durationInSeconds ?? 3600 * 24 * 30).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async deleteUser(userId: string): Promise {\n const deletedUserRev = await this.userApi.deleteUser(userId)\n if (deletedUserRev) {\n return deletedUserRev.rev!\n }\n throw this.errorHandler.createErrorWithMessage('Invalid user id')\n }\n\n async filterUsers(filter: Filter, nextUserId?: string, limit?: number): Promise {\n if (NoOpFilter.isNoOp(filter)) {\n return new PaginatedListUser({ totalSize: 0, pageSize: 0, rows: [] })\n } else {\n return PaginatedListMapper.toPaginatedListUser(\n await this.userApi\n .filterUsersBy(\n nextUserId,\n limit,\n new FilterChainUser({\n filter: FilterMapper.toAbstractFilterDto(filter, 'User'),\n })\n )\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n }\n\n async getLoggedUser(): Promise {\n return UserMapper.toUser(\n await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n\n async getUser(userId: string): Promise {\n return UserMapper.toUser(\n await this.userApi.getUser(userId).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n\n async getUserByEmail(email: string): Promise {\n return UserMapper.toUser(\n await this.userApi.getUserByEmail(this.sanitizer.validateEmail(email)).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n )!\n }\n\n async matchUsers(filter: Filter): Promise> {\n if (NoOpFilter.isNoOp(filter)) {\n return []\n } else {\n return this.userApi.matchUsersBy(FilterMapper.toAbstractFilterDto(filter, 'User')).catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n }\n\n subscribeToUserEvents(\n eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[],\n filter: Filter | undefined,\n eventFired: (user: User) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {}\n ): Promise {\n return subscribeToEntityEvents(this.basePath, this.authApi, 'User', eventTypes, filter, eventFired, options)\n .then((rs) => new ConnectionImpl(rs))\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n }\n\n async shareAllFutureDataWith(dataOwnerIds: string[], type?: SharedDataType): Promise {\n const user = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n }\n\n let newDataSharing\n const currentAutoDelegationsForType = user.autoDelegations?.[type ?? 'all']\n if (currentAutoDelegationsForType) {\n const delegationsToAdd = dataOwnerIds.filter((item) => !currentAutoDelegationsForType.includes(item))\n if (delegationsToAdd.length > 0) {\n newDataSharing = Object.entries(user.autoDelegations ?? []).reduce((accumulator, [key, values]) => {\n return { ...accumulator, [key]: [...new Set(Array.of(...values, ...(type === key ? delegationsToAdd : [])))] }\n }, {})\n } else {\n return UserMapper.toUser(user)!!\n }\n } else {\n newDataSharing = {\n ...Object.entries(user.autoDelegations ?? {}).reduce((accumulator, [key, values]) => {\n return { ...accumulator, [key]: [...values] }\n }, {}),\n [type ?? 'all']: dataOwnerIds,\n }\n }\n\n const updatedUserDto = await this.userApi\n .modifyUser({\n ...user,\n autoDelegations: newDataSharing,\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (updatedUserDto != undefined) {\n return UserMapper.toUser(updatedUserDto)!\n }\n\n throw this.errorHandler.createErrorWithMessage(\"Couldn't add data sharing to user\")\n }\n\n async stopSharingDataWith(dataOwnerIds: string[], type?: SharedDataType): Promise {\n const user = await this.userApi.getCurrentUser().catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (!user) {\n throw this.errorHandler.createErrorWithMessage(\n 'There is no user currently logged in. You must call this method from an authenticated MedTechApi'\n )\n }\n\n const delegationsToRemove = user.autoDelegations?.[type ?? 'all']?.filter((item) => dataOwnerIds.indexOf(item) >= 0)\n\n if (delegationsToRemove === undefined || delegationsToRemove.length === 0) {\n return UserMapper.toUser(user)!!\n }\n\n const newDataSharing = Object.entries(user.autoDelegations ?? {}).reduce((accumulator, [key, values]) => {\n return {\n ...accumulator,\n [key]: type === key ? [...values].filter((v) => !delegationsToRemove.includes(v)) : [...values],\n }\n }, {})\n\n const updatedUserDto = await this.userApi\n .modifyUser({\n ...user,\n autoDelegations: newDataSharing,\n })\n .catch((e) => {\n throw this.errorHandler.createErrorFromAny(e)\n })\n\n if (updatedUserDto != undefined) {\n return UserMapper.toUser(updatedUserDto)!\n }\n throw this.errorHandler.createErrorWithMessage(\"Couldn't remove data sharing of user\")\n }\n}\n","import { FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { Coding } from '../../models/Coding'\nimport { CodingByRegionTypeLabelFilter } from '../coding/CodingByRegionTypeLabelFilter'\nimport { Filter } from '../Filter'\nimport { AllCodingsFilter } from '../coding/AllCodingsFilter'\nimport { IntersectionFilter } from '@icure/api'\nimport { CodingByIdsFilter } from '../coding/CodingByIdsFilter'\nimport { MedTechApi } from '../../apis/MedTechApi'\n\ninterface BaseCodingFilterBuilder {\n /**\n * Includes all the codes with the specified ids.\n * @param byIds the ids of the codes.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the codes with the specified region, language, type, and label.\n * At least one of the parameters must be specified.\n * @param region the region of the code, if undefined it will be ignored.\n * @param language the language of the code, if undefined it will be ignored.\n * @param type the type of the code, if undefined it will be ignored.\n * @param label the label of the code, if undefined it will be ignored.\n */\n byRegionLanguageTypeLabel(region?: string, language?: string, type?: string, label?: string): F\n}\n\nexport class CodingFilter\n extends SortableFilterBuilder\n implements BaseCodingFilterBuilder, FilterBuilder\n{\n constructor(_: MedTechApi) {\n super()\n }\n\n get sort(): CodingFilterSortStepDecorator {\n return new CodingFilterSortStepDecorator(this)\n }\n\n byIds(byIds: string[]): CodingFilter {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'CodingByIdsFilter' }), 'ids')\n return this\n }\n\n byRegionLanguageTypeLabel(region?: string, language?: string, type?: string, label?: string): CodingFilter {\n if (!region && !language && !type && !label) {\n throw Error('To instantiate the filter, you must specify at least one of these parameters: labelType, labelCode, codeType, or codeCode')\n }\n this._builderAccumulator.addFilter(Promise.resolve({ region, type, language, label, $type: 'CodingByRegionTypeLabelFilter' }))\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { $type: 'AllCodingsFilter' } as AllCodingsFilter\n }\n }\n}\n\ntype NonSortableCodingFilter = BaseCodingFilterBuilder & FilterBuilder\n\nclass CodingFilterSortStepDecorator implements BaseCodingFilterBuilder {\n constructor(private codingFilter: CodingFilter) {}\n\n byIds(byIds: string[]): NonSortableCodingFilter {\n this.codingFilter.byIds(byIds)\n this.codingFilter._builderAccumulator.setLastElementAsSortKey()\n return this.codingFilter\n }\n\n byRegionLanguageTypeLabel(region?: string, language?: string, type?: string, label?: string): NonSortableCodingFilter {\n this.codingFilter.byRegionLanguageTypeLabel(region, language, type, label)\n this.codingFilter._builderAccumulator.setLastElementAsSortKey()\n return this.codingFilter\n }\n}\n","import { Filter } from '../Filter'\nimport { DataOwnerFilterBuilder, FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { Identifier } from '../../models/Identifier'\nimport { DataSample } from '../../models/DataSample'\nimport { PotentiallyEncryptedPatient } from '../../models/Patient'\nimport { MedTechApi } from '../../apis/MedTechApi'\nimport { IntersectionFilter } from '../IntersectionFilter'\nimport { DataSampleByHealthcarePartyFilter } from '../datasample/DataSampleByHealthcarePartyFilter'\nimport { PatientMapper } from '../../mappers/patient'\n\ninterface BaseDataSampleFilterBuilder {\n /**\n * Includes all the data samples with the specified ids.\n * @param byIds the ids of the data samples.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the data samples that have at least one of the specified identifiers.\n * @param identifiers\n */\n byIdentifiers(identifiers: Identifier[]): F\n\n /**\n * Includes all the data samples with at least one of the specified tags or codes.\n * At least one parameter must be specified.\n * @param tagType the type of the tag. If undefined, it will be ignored.\n * @param tagCode the code of the tag. If undefined, it will be ignored.\n * @param codeType the type of the code. If undefined, it will be ignored.\n * @param codeCode the code of the code. If undefined, it will be ignored.\n * @param startValueDate if specified, it will include only the data samples created after this date.\n * @param endValueDate if specified, it will include only the data samples created before this date.\n * @param descending\n */\n byLabelCodeDateFilter(\n tagType?: string,\n tagCode?: string,\n codeType?: string,\n codeCode?: string,\n startValueDate?: number,\n endValueDate?: number,\n descending?: boolean\n ): F\n\n /**\n * Includes all the healthcare elements that were created for the patients passed as parameter.\n * @param patients\n */\n forPatients(patients: PotentiallyEncryptedPatient[]): F\n\n /**\n * Includes all the data samples with the specified health elements ids.\n * @param byHealthElementIds\n */\n byHealthElementIds(byHealthElementIds: string[]): F\n}\n\nexport class DataSampleFilter implements DataOwnerFilterBuilder {\n constructor(private api: MedTechApi) {}\n\n forDataOwner(dataOwnerId: string): DataSampleFilterWithDataOwner {\n return new DataSampleFilterWithDataOwner(this.api, dataOwnerId)\n }\n\n forSelf(): DataSampleFilterWithDataOwner {\n return new DataSampleFilterWithDataOwner(this.api)\n }\n}\n\nclass DataSampleFilterWithDataOwner\n extends SortableFilterBuilder\n implements BaseDataSampleFilterBuilder, FilterBuilder\n{\n _dataOwnerId: Promise\n\n constructor(private api: MedTechApi, dataOwnerId?: string) {\n super()\n this._dataOwnerId = !!dataOwnerId ? Promise.resolve(dataOwnerId) : api.userApi.getLoggedUser().then((u) => api.dataOwnerApi.getDataOwnerIdOf(u))\n }\n\n get sort(): DataSampleFilterSortStepDecorator {\n return new DataSampleFilterSortStepDecorator(this)\n }\n getDataOwner(): Promise {\n return this._dataOwnerId\n }\n\n byIds(byIds: string[]): DataSampleFilterWithDataOwner {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'DataSampleByIdsFilter' }), 'ids')\n return this\n }\n\n byIdentifiers(identifiers: Identifier[]): DataSampleFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n identifiers: identifiers,\n $type: 'DataSampleByHealthcarePartyIdentifiersFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n byLabelCodeDateFilter(\n tagType?: string,\n tagCode?: string,\n codeType?: string,\n codeCode?: string,\n startValueDate?: number,\n endValueDate?: number,\n descending?: boolean\n ): DataSampleFilterWithDataOwner {\n if (!tagType && !tagCode && !codeType && !codeCode && !startValueDate && !endValueDate) {\n throw new Error('At least one parameter must be specified')\n }\n const filter = this._dataOwnerId.then((id) => {\n return {\n tagType,\n tagCode,\n codeType,\n codeCode,\n startValueDate,\n endValueDate,\n descending: descending ?? false,\n healthcarePartyId: id,\n $type: 'DataSampleByHealthcarePartyTagCodeDateFilter',\n }\n })\n this._builderAccumulator.addFilter(Promise.resolve(filter))\n return this\n }\n\n forPatients(patients: PotentiallyEncryptedPatient[]): DataSampleFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return Promise.all(patients.map((p) => this.api.cryptoApi.entities.secretIdsOf(PatientMapper.toPatientDto(p)!, undefined)))\n .then((sfksForPatients) => sfksForPatients.flat())\n .then((sfks) => {\n return {\n healthcarePartyId: id,\n patientSecretForeignKeys: sfks,\n $type: 'DataSampleByHealthcarePartyPatientFilter',\n }\n })\n })\n this._builderAccumulator.addByIdsFilter(filter, 'patientSecretForeignKeys')\n return this\n }\n\n byHealthElementIds(byHealthElementIds: string[]): DataSampleFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n healthcareElementIds: byHealthElementIds,\n $type: 'DataSampleByHealthcarePartyHealthcareElementIdsFilter',\n }\n })\n this._builderAccumulator.addByIdsFilter(filter, 'healthcareElementIds')\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { hcpId: await this._dataOwnerId, $type: 'DataSampleByHealthcarePartyFilter' } as DataSampleByHealthcarePartyFilter\n }\n }\n}\n\ntype NonSortableDataOwnerFilter = BaseDataSampleFilterBuilder & FilterBuilder\n\nclass DataSampleFilterSortStepDecorator implements BaseDataSampleFilterBuilder {\n constructor(private dataSampleFilter: DataSampleFilterWithDataOwner) {}\n\n byIds(byIds: string[]): NonSortableDataOwnerFilter {\n this.dataSampleFilter.byIds(byIds)\n this.dataSampleFilter._builderAccumulator.setLastElementAsSortKey()\n return this.dataSampleFilter\n }\n\n byIdentifiers(identifiers: Identifier[]): NonSortableDataOwnerFilter {\n this.dataSampleFilter.byIdentifiers(identifiers)\n this.dataSampleFilter._builderAccumulator.setLastElementAsSortKey()\n return this.dataSampleFilter\n }\n\n byLabelCodeDateFilter(\n tagType?: string,\n tagCode?: string,\n codeType?: string,\n codeCode?: string,\n startValueDate?: number,\n endValueDate?: number,\n descending?: boolean\n ): NonSortableDataOwnerFilter {\n this.dataSampleFilter.byLabelCodeDateFilter(tagType, tagCode, codeType, codeCode, startValueDate, endValueDate, descending)\n this.dataSampleFilter._builderAccumulator.setLastElementAsSortKey()\n return this.dataSampleFilter\n }\n\n forPatients(patients: PotentiallyEncryptedPatient[]): NonSortableDataOwnerFilter {\n this.dataSampleFilter.forPatients(patients)\n this.dataSampleFilter._builderAccumulator.setLastElementAsSortKey()\n return this.dataSampleFilter\n }\n\n byHealthElementIds(byHealthElementIds: string[]): NonSortableDataOwnerFilter {\n this.dataSampleFilter.byHealthElementIds(byHealthElementIds)\n this.dataSampleFilter._builderAccumulator.setLastElementAsSortKey()\n return this.dataSampleFilter\n }\n}\n","import { Identifier } from '../../models/Identifier'\nimport { HealthcareElementByHealthcarePartyLabelCodeFilter } from '../healthcareelement/HealthcareElementByHealthcarePartyLabelCodeFilter'\nimport { IntersectionFilter } from '@icure/api'\nimport { PotentiallyEncryptedPatient } from '../../models/Patient'\nimport { HealthcareElement } from '../../models/HealthcareElement'\nimport { Filter } from '../Filter'\nimport { MedTechApi } from '../../apis/MedTechApi'\nimport { DataOwnerFilterBuilder, FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { HealthcareElementByIdsFilter } from '../healthcareelement/HealthcareElementByIdsFilter'\nimport { HealthcareElementByHealthcarePartyIdentifiersFilter } from '../healthcareelement/HealthcareElementByHealthcarePartyIdentifiersFilter'\nimport { HealthcareElementByHealthcarePartyPatientFilter } from '../healthcareelement/HealthcareElementByHealthcarePartyPatientFilter'\nimport { HealthcareElementByHealthcarePartyFilter } from '../healthcareelement/HealthcareElementByHealthcarePartyFilter'\nimport { PatientMapper } from '../../mappers/patient'\n\nexport class HealthcareElementFilter implements DataOwnerFilterBuilder {\n constructor(private api: MedTechApi) {}\n\n forDataOwner(dataOwnerId: string): HealthcareElementFilterWithDataOwner {\n return new HealthcareElementFilterWithDataOwner(this.api, dataOwnerId)\n }\n\n forSelf(): HealthcareElementFilterWithDataOwner {\n return new HealthcareElementFilterWithDataOwner(this.api)\n }\n}\n\ninterface BaseHealthcareElementFilterBuilder {\n /**\n * Includes all the healthcare elements with the specified ids.\n * @param byIds the ids of the healthcare elements.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the healthcare elements that have at least one of the specified identifiers.\n * @param identifiers\n */\n byIdentifiers(identifiers: Identifier[]): F\n\n /**\n * Includes all the healthcare elements that have the label or the code specified. At least one of the parameters\n * must be not null.\n * @param labelType the type of the label, if undefined it will be ignored.\n * @param labelCode the code of the label, if undefined it will be ignored.\n * @param codeType the type of the code, if undefined it will be ignored.\n * @param codeCode the code of the code, if undefined it will be ignored.\n */\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): F\n\n /**\n * Includes all the healthcare elements that were created for the patients passed as parameter.\n * @param patients\n */\n forPatients(patients: PotentiallyEncryptedPatient[]): F\n}\n\nexport class HealthcareElementFilterWithDataOwner\n extends SortableFilterBuilder\n implements BaseHealthcareElementFilterBuilder, FilterBuilder\n{\n _dataOwnerId: Promise\n\n constructor(private api: MedTechApi, dataOwnerId?: string) {\n super()\n this._dataOwnerId = !!dataOwnerId ? Promise.resolve(dataOwnerId) : api.userApi.getLoggedUser().then((u) => api.dataOwnerApi.getDataOwnerIdOf(u))\n }\n\n get sort(): MedicalDeviceFilterSortStepDecorator {\n return new MedicalDeviceFilterSortStepDecorator(this)\n }\n\n getDataOwner() {\n return this._dataOwnerId\n }\n\n byIds(byIds: string[]): HealthcareElementFilterWithDataOwner {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'HealthcareElementByIdsFilter' }), 'ids')\n return this\n }\n\n byIdentifiers(identifiers: Identifier[]): HealthcareElementFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n identifiers: identifiers,\n $type: 'HealthcareElementByHealthcarePartyIdentifiersFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): HealthcareElementFilterWithDataOwner {\n if (!labelType && !labelCode && !codeType && !codeCode) {\n throw Error('To instantiate the filter, you must specify at least one of these parameters: labelType, labelCode, codeType, or codeCode')\n }\n this._builderAccumulator.addFilter(\n Promise.resolve({\n tagType: labelType,\n tagCode: labelCode,\n codeType,\n codeCode,\n $type: 'HealthcareElementByHealthcarePartyLabelCodeFilter',\n })\n )\n return this\n }\n\n forPatients(patients: PotentiallyEncryptedPatient[]): HealthcareElementFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return Promise.all(patients.map((p) => this.api.cryptoApi.entities.secretIdsOf(PatientMapper.toPatientDto(p)!, undefined)))\n .then((sfksForPatients) => sfksForPatients.flat())\n .then((sfks) => {\n return {\n healthcarePartyId: id,\n patientSecretForeignKeys: sfks,\n $type: 'HealthcareElementByHealthcarePartyPatientFilter',\n }\n })\n })\n this._builderAccumulator.addByIdsFilter(filter, 'patientSecretForeignKeys')\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return {\n healthcarePartyId: await this._dataOwnerId,\n $type: 'HealthcareElementByHealthcarePartyFilter',\n } as HealthcareElementByHealthcarePartyFilter\n }\n }\n}\n\ntype NonSortableHealthcareElementFilter = BaseHealthcareElementFilterBuilder & FilterBuilder\n\nclass MedicalDeviceFilterSortStepDecorator implements BaseHealthcareElementFilterBuilder {\n constructor(private healthcareElementFilter: HealthcareElementFilterWithDataOwner) {}\n\n byIds(byIds: string[]): NonSortableHealthcareElementFilter {\n this.healthcareElementFilter.byIds(byIds)\n this.healthcareElementFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareElementFilter\n }\n\n byIdentifiers(identifiers: Identifier[]): NonSortableHealthcareElementFilter {\n this.healthcareElementFilter.byIdentifiers(identifiers)\n this.healthcareElementFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareElementFilter\n }\n\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): NonSortableHealthcareElementFilter {\n this.healthcareElementFilter.byLabelCodeFilter(labelType, labelCode, codeType, codeCode)\n this.healthcareElementFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareElementFilter\n }\n\n forPatients(patients: PotentiallyEncryptedPatient[]): NonSortableHealthcareElementFilter {\n this.healthcareElementFilter.forPatients(patients)\n this.healthcareElementFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareElementFilter\n }\n}\n","import { FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { HealthcareProfessional } from '../../models/HealthcareProfessional'\nimport { HealthcareProfessionalByLabelCodeFilter } from '../hcp/HealthcareProfessionalByLabelCodeFilter'\nimport { Filter } from '../Filter'\nimport { IntersectionFilter } from '../IntersectionFilter'\nimport { AllHealthcareProfessionalsFilter } from '../hcp/AllHealthcareProfessionalsFilter'\nimport { HealthcareProfessionalByNameFilter } from '../hcp/HealthcareProfessionalByNameFilter'\nimport { HealthcareProfessionalByIdsFilter } from '../hcp/HealthcareProfessionalByIdsFilter'\nimport { MedTechApi } from '../../apis/MedTechApi'\n\ninterface BaseHealthcareProfessionalFilterBuilder {\n /**\n * Includes all the healthcare professionals with the specified ids.\n * @param byIds the ids of the healthcare professionals.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the healthcare professionals that have the label or the code specified. At least one of the parameters\n * must be not null.\n * @param labelType the type of the label, if undefined it will be ignored.\n * @param labelCode the code of the label, if undefined it will be ignored.\n * @param codeType the type of the code, if undefined it will be ignored.\n * @param codeCode the code of the code, if undefined it will be ignored.\n */\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): F\n\n /**\n * Includes all the healthcare professionals which name includes the string passed as parameter.\n * @param searchString the name of the healthcare professionals\n */\n byMatches(searchString: string): F\n}\n\nexport class HealthcareProfessionalFilter\n extends SortableFilterBuilder\n implements BaseHealthcareProfessionalFilterBuilder, FilterBuilder\n{\n constructor(_: MedTechApi) {\n super()\n }\n\n get sort(): HealthcareProfessionalFilterSortStepDecorator {\n return new HealthcareProfessionalFilterSortStepDecorator(this)\n }\n\n byIds(byIds: string[]): HealthcareProfessionalFilter {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'HealthcareProfessionalByIdsFilter' }), 'ids')\n return this\n }\n\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): HealthcareProfessionalFilter {\n if (!labelType && !labelCode && !codeType && !codeCode) {\n throw Error('To instantiate the filter, you must specify at least one of these parameters: labelType, labelCode, codeType, or codeCode')\n }\n this._builderAccumulator.addFilter(\n Promise.resolve({\n labelType,\n labelCode,\n codeType,\n codeCode,\n $type: 'HealthcareProfessionalByLabelCodeFilter',\n })\n )\n return this\n }\n\n byMatches(searchString: string): HealthcareProfessionalFilter {\n this._builderAccumulator.addFilter(Promise.resolve({ name: searchString, $type: 'HealthcareProfessionalByNameFilter' }))\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { $type: 'AllHealthcareProfessionalsFilter' } as AllHealthcareProfessionalsFilter\n }\n }\n}\n\ntype NonSortableHealthcareProfessionalFilter = BaseHealthcareProfessionalFilterBuilder &\n FilterBuilder\n\nclass HealthcareProfessionalFilterSortStepDecorator implements BaseHealthcareProfessionalFilterBuilder {\n constructor(private healthcareProfessionalFilter: HealthcareProfessionalFilter) {}\n\n byIds(byIds: string[]): NonSortableHealthcareProfessionalFilter {\n this.healthcareProfessionalFilter.byIds(byIds)\n this.healthcareProfessionalFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareProfessionalFilter\n }\n\n byLabelCodeFilter(labelType?: string, labelCode?: string, codeType?: string, codeCode?: string): NonSortableHealthcareProfessionalFilter {\n this.healthcareProfessionalFilter.byLabelCodeFilter(labelType, labelCode, codeType, codeCode)\n this.healthcareProfessionalFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareProfessionalFilter\n }\n\n byMatches(searchString: string): NonSortableHealthcareProfessionalFilter {\n this.healthcareProfessionalFilter.byMatches(searchString)\n this.healthcareProfessionalFilter._builderAccumulator.setLastElementAsSortKey()\n return this.healthcareProfessionalFilter\n }\n}\n","import { FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { AllMedicalDevicesFilter } from '../medicaldevice/AllMedicalDevicesFilter'\nimport { MedicalDevice } from '../../models/MedicalDevice'\nimport { IntersectionFilter } from '@icure/api'\nimport { Filter } from '../Filter'\nimport { MedicalDeviceByIdsFilter } from '../medicaldevice/MedicalDeviceByIdsFilter'\nimport { MedTechApi } from '../../apis/MedTechApi'\n\ninterface BaseMedicalDeviceFilterBuilder {\n /**\n * Includes all the medical devices with the specified ids.\n * @param byIds the ids of the medical devices.\n */\n byIds(byIds: string[]): F\n}\n\nexport class MedicalDeviceFilter\n extends SortableFilterBuilder\n implements BaseMedicalDeviceFilterBuilder, FilterBuilder\n{\n constructor(_: MedTechApi) {\n super()\n }\n\n get sort(): MedicalDeviceFilterSortStepDecorator {\n return new MedicalDeviceFilterSortStepDecorator(this)\n }\n\n byIds(byIds: string[]): MedicalDeviceFilter {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'MedicalDeviceByIdsFilter' }), 'ids')\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { $type: 'AllMedicalDevicesFilter' } as AllMedicalDevicesFilter\n }\n }\n}\n\ntype NonSortableMedicalDeviceFilter = BaseMedicalDeviceFilterBuilder & FilterBuilder\n\nclass MedicalDeviceFilterSortStepDecorator implements BaseMedicalDeviceFilterBuilder {\n constructor(private medicalDeviceFilter: MedicalDeviceFilter) {}\n\n byIds(byIds: string[]): NonSortableMedicalDeviceFilter {\n this.medicalDeviceFilter.byIds(byIds)\n this.medicalDeviceFilter._builderAccumulator.setLastElementAsSortKey()\n return this.medicalDeviceFilter\n }\n}\n","import { Filter } from '../Filter'\nimport { DataOwnerFilterBuilder, FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { Notification, NotificationTypeEnum } from '../../models/Notification'\nimport { MedTechApi } from '../../apis/MedTechApi'\nimport { IntersectionFilter } from '../IntersectionFilter'\nimport { NotificationsAfterDateFilter } from '../notification/NotificationsAfterDateFilter'\n\ninterface BaseNotificationFilterBuilder {\n /**\n * Includes all the notifications with the specified ids.\n * @param ids the ids of the codes.\n */\n byIds(ids: string[]): F\n\n /**\n * Includes all the notifications with the specified type.\n * @param type the type of the notification.\n */\n withType(type: NotificationTypeEnum): F\n\n /**\n * Includes all the notfications created after the specified timestamp\n * @param fromDate the timestamp.\n */\n afterDate(fromDate: number): F\n}\n\nexport class NotificationFilter implements DataOwnerFilterBuilder {\n constructor(private api: MedTechApi) {}\n\n forDataOwner(dataOwnerId: string): NotificationFilterWithDataOwner {\n return new NotificationFilterWithDataOwner(this.api, dataOwnerId)\n }\n\n forSelf(): NotificationFilterWithDataOwner {\n return new NotificationFilterWithDataOwner(this.api)\n }\n}\n\nclass NotificationFilterWithDataOwner\n extends SortableFilterBuilder\n implements BaseNotificationFilterBuilder, FilterBuilder\n{\n _dataOwnerId: Promise\n\n constructor(private api: MedTechApi, dataOwnerId?: string) {\n super()\n this._dataOwnerId = !!dataOwnerId ? Promise.resolve(dataOwnerId) : api.userApi.getLoggedUser().then((u) => api.dataOwnerApi.getDataOwnerIdOf(u))\n }\n\n get sort(): NotificationFilterSortStepDecorator {\n return new NotificationFilterSortStepDecorator(this)\n }\n\n byIds(ids: string[]): NotificationFilterWithDataOwner {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: ids, $type: 'NotificationsByIdFilter' }), 'ids')\n return this\n }\n\n withType(type: NotificationTypeEnum): NotificationFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n type: type,\n $type: 'NotificationsByHcPartyAndTypeFilter',\n }\n })\n this._builderAccumulator.addSingletonFilter(filter)\n return this\n }\n\n afterDate(fromDate: number): NotificationFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n date: fromDate,\n $type: 'NotificationsAfterDateFilter',\n }\n })\n this._builderAccumulator.addSingletonFilter(filter)\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { healthcarePartyId: await this._dataOwnerId, date: 0, $type: 'NotificationsAfterDateFilter' } as NotificationsAfterDateFilter\n }\n }\n}\n\ntype NonSortableNotificationFilter = BaseNotificationFilterBuilder & FilterBuilder\n\nclass NotificationFilterSortStepDecorator implements Omit, 'getDataOwner'> {\n constructor(private notificationFilter: NotificationFilterWithDataOwner) {}\n\n byIds(ids: string[]): NonSortableNotificationFilter {\n this.notificationFilter.byIds(ids)\n this.notificationFilter._builderAccumulator.setLastElementAsSortKey()\n return this.notificationFilter\n }\n\n withType(type: NotificationTypeEnum): NonSortableNotificationFilter {\n this.notificationFilter.withType(type)\n this.notificationFilter._builderAccumulator.setLastElementAsSortKey()\n return this.notificationFilter\n }\n\n afterDate(fromDate: number): NonSortableNotificationFilter {\n this.notificationFilter.afterDate(fromDate)\n this.notificationFilter._builderAccumulator.setLastElementAsSortKey()\n return this.notificationFilter\n }\n}\n","import { Patient, PatientGenderEnum } from '../../models/Patient'\nimport { Identifier } from '../../models/Identifier'\nimport { addDays, format } from 'date-fns'\nimport { Filter } from '../Filter'\nimport { PatientByIdsFilter } from '../patient/PatientByIdsFilter'\nimport { PatientByHealthcarePartyIdentifiersFilter } from '../patient/PatientByHealthcarePartyIdentifiersFilter'\nimport { PatientByHealthcarePartySsinsFilter } from '../patient/PatientByHealthcarePartySsinsFilter'\nimport { PatientByHealthcarePartyDateOfBirthBetweenFilter } from '../patient/PatientByHealthcarePartyDateOfBirthBetweenFilter'\nimport { PatientByHealthcarePartyGenderEducationProfessionFilter } from '../patient/PatientByHealthcarePartyGenderEducationProfessionFilter'\nimport { PatientByHealthcarePartyNameContainsFuzzyFilter } from '../patient/PatientByHealthcarePartyNameContainsFuzzyFilter'\nimport { IntersectionFilter } from '../IntersectionFilter'\nimport { PatientByHealthcarePartyFilter } from '../patient/PatientByHealthcarePartyFilter'\nimport { DataOwnerFilterBuilder, FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { MedTechApi } from '../../apis/MedTechApi'\n\nexport class PatientFilter implements DataOwnerFilterBuilder {\n constructor(private api: MedTechApi) {}\n\n forDataOwner(dataOwnerId: string): PatientFilterWithDataOwner {\n return new PatientFilterWithDataOwner(this.api, dataOwnerId)\n }\n\n forSelf(): PatientFilterWithDataOwner {\n return new PatientFilterWithDataOwner(this.api)\n }\n}\n\ninterface BasePatientFilterBuilder {\n /**\n * Includes all the patients with the specified ids.\n * @param byIds the ids of the patients.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the patients that have at least one of the specified identifiers.\n * @param identifiers\n */\n byIdentifiers(identifiers: Identifier[]): F\n\n /**\n * Includes all the patients which gender, education, and profession are the ones specified.\n * @param gender the gender of the patients to include.\n * @param education the education of the patients to include. If undefined, it will be ignored.\n * @param profession the profession of the patients to include. If undefined, it will be ignored.\n */\n byGenderEducationProfession(gender: PatientGenderEnum, education?: string, profession?: string): F\n\n /**\n * Includes all the patients which SSIN is the one specified\n * @param withSsins the SSINs to include.\n */\n withSsins(withSsins: string[]): F\n\n /**\n * Includes all the patients which age is the one specified.\n * @param age the age of the patients to include.\n */\n ofAge(age: number): F\n\n /**\n * Includes all the patients which date of births is in the specified range.\n * @param from the start date in YYYYMMDD format.\n * @param to the end date in YYYYMMDD format.\n */\n dateOfBirthBetween(from: number, to: number): F\n\n /**\n * Includes all the patients which first name, last name, maiden name or spouse name matches, even partially,\n * the string passed as parameter.\n * @param searchString\n */\n containsFuzzy(searchString: string): F\n}\n\nclass PatientFilterWithDataOwner\n extends SortableFilterBuilder\n implements BasePatientFilterBuilder, FilterBuilder\n{\n _dataOwnerId: Promise\n\n constructor(private api: MedTechApi, dataOwnerId?: string) {\n super()\n this._dataOwnerId = !!dataOwnerId ? Promise.resolve(dataOwnerId) : api.userApi.getLoggedUser().then((u) => api.dataOwnerApi.getDataOwnerIdOf(u))\n }\n\n get sort(): PatientFilterSortStepDecorator {\n return new PatientFilterSortStepDecorator(this)\n }\n\n getDataOwner() {\n return this._dataOwnerId\n }\n\n byIds(byIds: string[]): PatientFilterWithDataOwner {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'PatientByIdsFilter' }), 'ids')\n return this\n }\n\n byIdentifiers(identifiers: Identifier[]): PatientFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n identifiers: identifiers,\n $type: 'PatientByHealthcarePartyIdentifiersFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n byGenderEducationProfession(gender: PatientGenderEnum, education?: string, profession?: string): PatientFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n gender: gender,\n education: education,\n profession: profession,\n $type: 'PatientByHealthcarePartyGenderEducationProfessionFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n withSsins(withSsins: string[]): PatientFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n ssins: withSsins,\n $type: 'PatientByHealthcarePartySsinsFilter',\n }\n })\n this._builderAccumulator.addByIdsFilter(filter, 'ssins')\n return this\n }\n\n ofAge(age: number): PatientFilterWithDataOwner {\n const now = new Date()\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n minDateOfBirth: parseInt(format(addDays(new Date(now.getFullYear() - age - 1, now.getMonth(), now.getDay()), 1), 'yyyyMMdd')),\n maxDateOfBirth: parseInt(format(new Date(now.getFullYear() - age, now.getMonth(), now.getDay()), 'yyyyMMdd')),\n $type: 'PatientByHealthcarePartyDateOfBirthBetweenFilter',\n }\n })\n this._builderAccumulator.addSingletonFilter(filter)\n return this\n }\n\n dateOfBirthBetween(from: number, to: number): PatientFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n minDateOfBirth: from,\n maxDateOfBirth: to,\n $type: 'PatientByHealthcarePartyDateOfBirthBetweenFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n containsFuzzy(searchString: string): PatientFilterWithDataOwner {\n const filter = this._dataOwnerId.then((id) => {\n return {\n healthcarePartyId: id,\n searchString: searchString,\n $type: 'PatientByHealthcarePartyNameContainsFuzzyFilter',\n }\n })\n this._builderAccumulator.addFilter(filter)\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { healthcarePartyId: await this._dataOwnerId, $type: 'PatientByHealthcarePartyFilter' } as PatientByHealthcarePartyFilter\n }\n }\n}\n\ntype NonSortablePatientFilter = BasePatientFilterBuilder & FilterBuilder\n\nclass PatientFilterSortStepDecorator implements BasePatientFilterBuilder {\n constructor(private patientFilter: PatientFilterWithDataOwner) {}\n\n byIds(byIds: string[]): NonSortablePatientFilter {\n this.patientFilter.byIds(byIds)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n byIdentifiers(identifiers: Identifier[]): NonSortablePatientFilter {\n this.patientFilter.byIdentifiers(identifiers)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n byGenderEducationProfession(gender: PatientGenderEnum, education?: string, profession?: string): NonSortablePatientFilter {\n this.patientFilter.byGenderEducationProfession(gender, education, profession)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n withSsins(withSsins: string[]): NonSortablePatientFilter {\n this.patientFilter.withSsins(withSsins)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n ofAge(age: number): NonSortablePatientFilter {\n this.patientFilter.ofAge(age)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n dateOfBirthBetween(from: number, to: number): NonSortablePatientFilter {\n this.patientFilter.dateOfBirthBetween(from, to)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n\n containsFuzzy(searchString: string): NonSortablePatientFilter {\n this.patientFilter.containsFuzzy(searchString)\n this.patientFilter._builderAccumulator.setLastElementAsSortKey()\n return this.patientFilter\n }\n}\n","import { Filter } from '../Filter'\nimport { NoOpFilter } from './filterDsl'\n\nenum FilterStrategy {\n ByIds,\n Singleton,\n ByIdsObjects,\n Simple,\n}\n\ntype FutureFilter = {\n futureFilter: Promise>\n strategy: FilterStrategy\n idKey: string | undefined\n sortKey: boolean\n}\n\ntype AwaitedFilter = {\n filter: Filter\n strategy: FilterStrategy\n idKey: string | undefined\n sortKey: boolean\n}\n\n/**\n * @internal this class is intended for internal use only and may be changed without notice.\n *\n * This class is used to collect the filter in the various DSLs and then combine and sort them if needed.\n */\nexport class SortableFilterBuilderAccumulator {\n private _filters: FutureFilter[] = []\n\n /**\n * Sets the last filter added as the sort key for final filter.\n */\n setLastElementAsSortKey() {\n this._filters = [\n ...this._filters.splice(0, this._filters.length - 1),\n {\n ...this._filters[this._filters.length - 1],\n sortKey: true,\n },\n ]\n }\n\n private add, K extends keyof F>(filter: Promise, strategy: FilterStrategy, idKey?: K) {\n this._filters = [\n ...this._filters,\n {\n futureFilter: filter,\n strategy: strategy,\n idKey: !!idKey ? (idKey as string) : undefined,\n sortKey: false,\n },\n ]\n }\n\n /**\n * Adds a filter that will be combined using the \"ByIds\" strategy, and it is applicable to all the filters that specify\n * a condition based on a unique identifier (byIds, bySsin, ecc...).\n * If more than one filter of the same type are added using this strategy, then the intersection of the condition\n * is taken. If the intersection is null, then a NoOp Filter will be returned.\n * If a filter of this strategy is set as sort key, then the order of the ids specified in the filter will be enforced\n * in the final aggregated filter.\n * @param filter a Promise that will resolve in the filter to add.\n * @param key the field of the filter that contains the ids.\n */\n addByIdsFilter, K extends keyof F>(filter: Promise, key: K) {\n this.add(filter, FilterStrategy.ByIds, key)\n }\n\n /**\n * Adds a filter that will be combined using the \"ByIdsObjects\" strategy, and it is applicable to all the filters that\n * specify a condition based on a unique identifier based on an object.\n * If more than one filter of the same type are added using this strategy, then the intersection of the condition is\n * taken. If the intersection is null, then a NoOp Filter will be returned. The intersection is based on the id of the\n * objects.\n * If a filter of this strategy is set as sort key, then the order of the ids specified in the filter will be enforced\n * in the final aggregated filter.\n * @param filter a Promise that will resolve in the filter to add.\n * @param field the field of the filter that contains the ids.\n */\n addByIdsObjectsFilter, K extends keyof F>(filter: Promise, field: K) {\n this.add(filter, FilterStrategy.ByIdsObjects, field)\n }\n\n /**\n * Adds a filter that will be combined using the \"Singleton\" strategy, and it is applicable to all the filters that can\n * be added only once in the DSL\n * If more than one filter of the same type are added using this strategy, then a NoOp filter is returned unless the\n * filters are equal.\n * @param filter a Promise that will resolve in the filter to add.\n */\n addSingletonFilter(filter: Promise>) {\n this.add(filter, FilterStrategy.Singleton)\n }\n\n /**\n * Adds a filter without strategies.\n * @param filter a Promise that will resolve in the filter to add.\n */\n addFilter(filter: Promise>) {\n this.add(filter, FilterStrategy.Simple)\n }\n\n /**\n * Aggregates the filters according to their own strategy and sorts them, if a sort key is specified. If even only\n * one of the filters resolves in a NoOp filter, then a list containing only the NoOp filter will be returned.\n * @return a Promise containing the list of filters.\n */\n async getAndSortFilters(): Promise[]> {\n // Awaits all the filter promises\n const awaitedFilters: AwaitedFilter[] = []\n for (const f of this._filters) {\n awaitedFilters.push({\n filter: await f.futureFilter,\n strategy: f.strategy,\n idKey: f.idKey,\n sortKey: f.sortKey,\n })\n }\n\n // Groups the filters by type and strategy. A filter can be present in more than one strategy (e.g. byAge / dateOfBirthBetween in PatientFilter).\n const filtersByTypeAndStrategy = awaitedFilters.reduce((filters, current) => {\n const key = `${current.filter.$type}-${current.strategy}`\n return {\n ...filters,\n [key]: [...(filters[key] ?? []), current],\n }\n }, {} as { [key: string]: AwaitedFilter[] })\n\n // Combines the filter of the same type and strategy\n const listOfCombinedFilters = Object.values(filtersByTypeAndStrategy).reduce((p, c) => {\n return [...p, ...this.combineFilters(c)]\n }, [])\n\n // If a sort key is present, then is put as the first element of the list.\n const sortKey = listOfCombinedFilters.findIndex((f) => f.sortKey)\n return sortKey !== -1\n ? [listOfCombinedFilters[sortKey].filter, ...listOfCombinedFilters.filter((_, index) => index !== sortKey).map((f) => f.filter)]\n : listOfCombinedFilters.map((f) => f.filter)\n }\n\n private combineFilters(filters: AwaitedFilter[]): AwaitedFilter[] {\n if (!filters.length) {\n return []\n }\n if (filters[0].strategy === FilterStrategy.ByIds) {\n return [this.combineByIdsFilters(filters)]\n } else if (filters[0].strategy === FilterStrategy.ByIdsObjects) {\n return [this.combineByIdsObjectsFilters(filters)]\n } else if (filters[0].strategy === FilterStrategy.Singleton) {\n return [this.combineSingletonFilters(filters)]\n } else {\n return filters\n }\n }\n\n private combineByIdsFilters(filters: AwaitedFilter[]) {\n const sortKey = filters.find((f) => f.sortKey) ?? filters[0]\n const aggregation = filters.reduce((aggregated, current) => {\n const newFilter = {\n ...aggregated.filter,\n [aggregated.idKey!]: this.extractIdsFromFilter(aggregated.filter, aggregated.idKey!).filter((x) =>\n this.extractIdsFromFilter(current.filter, aggregated.idKey!).includes(x)\n ),\n } as Filter\n return {\n ...aggregated,\n filter: newFilter,\n }\n }, sortKey)\n return {\n ...aggregation,\n filter: this.extractIdsFromFilter(aggregation.filter, aggregation.idKey!).length > 0 ? aggregation.filter : new NoOpFilter(),\n }\n }\n\n private combineByIdsObjectsFilters(filters: AwaitedFilter[]) {\n const sortKey = filters.find((f) => f.sortKey) ?? filters[0]\n const aggregation = filters.reduce((aggregated, current) => {\n const filterIds = this.extractObjectsIdsFromFilter(current.filter, current.idKey!)\n const newFilter = {\n ...aggregated.filter,\n [current.idKey!]: this.extractObjectsIdsFromFilter(aggregated.filter, current.idKey!).filter((id) => filterIds.includes(id)),\n } as Filter\n return {\n ...aggregated,\n filter: newFilter,\n }\n }, sortKey)\n return {\n ...aggregation,\n filter: this.extractObjectsIdsFromFilter(aggregation.filter, aggregation.idKey!).length > 0 ? aggregation.filter : new NoOpFilter(),\n }\n }\n\n private combineSingletonFilters(filters: AwaitedFilter[]) {\n const sortKey = filters.find((f) => f.sortKey) ?? filters[0]\n return filters.reduce((aggregated, current) => {\n if (this.filterEquality(aggregated.filter, current.filter)) {\n return aggregated\n } else {\n return {\n filter: new NoOpFilter(),\n strategy: FilterStrategy.Simple,\n idKey: undefined,\n sortKey: false,\n }\n }\n }, sortKey)\n }\n\n private extractObjectsIdsFromFilter(filter: Filter, field: string) {\n return (((filter as unknown as { [key: string]: { id: string }[] })[field] ?? {}) as { id: string }[]).map(({ id }) => id)\n }\n\n private extractIdsFromFilter(filter: Filter, field: string) {\n return ((filter as unknown as { [field: string]: string[] })[field] ?? {}) as string[]\n }\n\n private arrayEquality(a?: any[], b?: any[]) {\n return !!a && !!b && a.length === b.length && a.every((x, index) => b[index] === x)\n }\n\n private filterEquality(a: any, b: any) {\n return Object.keys(a).every((key) => {\n if (Array.isArray(a[key]) && Array.isArray(b[key])) {\n return this.arrayEquality(a[key] as any[], b[key] as any[])\n } else {\n return a[key] === b[key]\n }\n })\n }\n}\n","import { User } from '../../models/User'\nimport { Filter } from '../Filter'\nimport { UserByIdsFilter } from '../user/UserByIdsFilter'\nimport { UsersByPatientIdFilter } from '../user/UsersByPatientIdFilter'\nimport { IntersectionFilter } from '../IntersectionFilter'\nimport { AllUsersFilter } from '../user/AllUsersFilter'\nimport { FilterBuilder, NoOpFilter, SortableFilterBuilder } from './filterDsl'\nimport { MedTechApi } from '../../apis/MedTechApi'\n\ninterface BaseUserFilterBuilder {\n /**\n * Includes all the users with the specified ids.\n * @param byIds the ids of the users.\n */\n byIds(byIds: string[]): F\n\n /**\n * Includes all the users with the specified patient id.\n * @param patientId the patient id to filter.\n */\n byPatientId(patientId: string): F\n}\n\nexport class UserFilter\n extends SortableFilterBuilder\n implements BaseUserFilterBuilder, FilterBuilder\n{\n constructor(_: MedTechApi) {\n super()\n }\n\n get sort(): UserFilterSortStepDecorator {\n return new UserFilterSortStepDecorator(this)\n }\n\n byIds(byIds: string[]): UserFilter {\n this._builderAccumulator.addByIdsFilter(Promise.resolve({ ids: byIds, $type: 'UserByIdsFilter' }), 'ids')\n return this\n }\n\n byPatientId(patientId: string): UserFilter {\n this._builderAccumulator.addSingletonFilter(Promise.resolve({ patientId: patientId, $type: 'UsersByPatientIdFilter' }))\n return this\n }\n\n async build(): Promise> {\n const filters = await this._builderAccumulator.getAndSortFilters()\n\n if (filters.some((f) => NoOpFilter.isNoOp(f))) {\n console.warn('Warning: the filter you built cannot be resolved and will return no entity')\n return new NoOpFilter()\n } else if (filters.length > 1) {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n } else if (filters.length === 1) {\n return filters[0]\n } else {\n return { $type: 'AllUsersFilter' } as AllUsersFilter\n }\n }\n}\n\ntype NonSortableUserFilter = BaseUserFilterBuilder & FilterBuilder\n\nclass UserFilterSortStepDecorator implements BaseUserFilterBuilder {\n constructor(private userFilter: UserFilter) {}\n\n byIds(byIds: string[]): NonSortableUserFilter {\n this.userFilter.byIds(byIds)\n this.userFilter._builderAccumulator.setLastElementAsSortKey()\n return this.userFilter\n }\n\n byPatientId(patientId: string): NonSortableUserFilter {\n this.userFilter.byPatientId(patientId)\n this.userFilter._builderAccumulator.setLastElementAsSortKey()\n return this.userFilter\n }\n}\n","import { Filter } from '../Filter'\nimport { SortableFilterBuilderAccumulator } from './SortableFilterBuilderAccumulator'\nimport { UnionFilter } from '../UnionFilter'\nimport { IntersectionFilter } from '../IntersectionFilter'\n\n/**\n * Base abstract class for all the DSLs to build filters for the different entities.\n */\nexport abstract class FilterBuilder {\n /**\n * Final step of the DSL that builds a filter for the entity with the specified criteria.\n * The generated filter will allow to retrieve the entities that satisfy all the requirements specified through the\n * DSL at the same time (i.e. is an AND). If you want to retrieve entities that match one of many specified conditions,\n * consider using the union method of the FilterComposition class.\n * @return a Promise that resolves in the filter for the entity.\n */\n abstract build(): Promise>\n}\n\n/**\n * This abstract class defines the method to specify a sorting order in the filter results.\n * It has 3 generic type parameters:\n * - T: the type of the entity to filter\n * - E: an enum or a type that defines the different sorting options\n * - F: a filter builder type for the same entity that is not sortable\n */\nexport abstract class SortableFilterBuilder {\n _builderAccumulator: SortableFilterBuilderAccumulator = new SortableFilterBuilderAccumulator()\n\n /**\n * Specifies the sorting order for this filter chain.\n */\n abstract get sort(): F\n}\n\n/**\n * This abstract class defines the behaviour of the filters that must pass the id of a data owner along.\n * It has 3 generic type parameters:\n * - T: the type of the entity to filter\n * - F: a Filter Builder for the same entity. Ideally it should be instantiated by this class, passing the data owner id\n * along.\n */\nexport abstract class DataOwnerFilterBuilder> {\n /**\n * @param dataOwnerId the data owner id to use for the filtering.\n * @return a Filter Builder for the same entity.\n */\n abstract forDataOwner(dataOwnerId: string): F\n\n /**\n * @return a Filter Builder for the same entity that will use as data owner id for the filtering the current data owner.\n * It's the responsibility of the returned filter to guarantee this behaviour.\n */\n abstract forSelf(): F\n}\n\n/**\n * This class provides static methods to combine filters.\n */\nexport abstract class FilterComposition {\n /**\n * This method receives as input an array of filters and combines them in a single union filter.\n * If the filters were generated by a SortableFilterBuilder, then the sorting order is not considered anymore.\n * @param filters the filters to combine.\n * @return a union filter.\n */\n static union(...filters: Filter[]): Filter {\n return {\n filters: filters,\n $type: 'UnionFilter',\n } as UnionFilter\n }\n\n /**\n * This method receives as input an array of filters and combines them in a single intersection filter.\n * If the filters were generated by a SortableFilterBuilder, then the sorting order may not be guaranteed anymore.\n * @param filters the filters to combine.\n * @return an intersection filter.\n */\n static intersection(...filters: Filter[]): Filter {\n return {\n filters: filters,\n $type: 'IntersectionFilter',\n } as IntersectionFilter\n }\n}\n\n/**\n * This class represent a filter for which it is sure that it will yield no result already at build time. All the\n * methods that rely on filters should return an empty result on receiving this filter without contacting the iCure\n * service.\n */\nexport class NoOpFilter implements Filter {\n $type: string = 'NoOpFilter'\n\n /**\n * Checks if the filter passed a parameter is a NoOp filter.\n * @param filter a filter to check\n * @return true if is a NoOp filter, false otherwise.\n */\n static isNoOp(filter: Filter): boolean {\n return filter instanceof NoOpFilter\n }\n}\n","export { KeyStorageFacade, StorageFacade, LocalStorageImpl, KeyStorageImpl } from '@icure/api'\nexport { CodingFilter } from './dsl/CodingFilterDsl'\nexport { DataSampleFilter } from './dsl/DataSampleFilterDsl'\nexport { HealthcareElementFilter } from './dsl/HealthcareElementFilterDsl'\nexport { HealthcareProfessionalFilter } from './dsl/HealthcareProfessionalDsl'\nexport { MedicalDeviceFilter } from './dsl/MedicalDeviceFilterDsl'\nexport { NotificationFilter } from './dsl/NotificationFilterDsl'\nexport { PatientFilter } from './dsl/PatientFilterDsl'\nexport { UserFilter } from './dsl/UserFilterDsl'\nexport * from './dsl/filterDsl'\n","import {Address as AddressDto, Telecom as TelecomDto} from \"@icure/api\";\nimport {Address, AddressAddressTypeEnum} from \"../models/Address\";\nimport {map} from \"./utils\";\nimport {Telecom, TelecomTelecomTypeEnum} from \"../models/Telecom\";\n\nexport namespace AddressMapper {\n export const toAddress = (dto?: AddressDto) => dto ? new Address({\n telecoms: map(dto.telecoms, toTelecom),\n addressType: dto.addressType as AddressAddressTypeEnum,\n description: dto.descr,\n street: dto.street,\n houseNumber: dto.houseNumber,\n postboxNumber: dto.postboxNumber,\n postalCode: dto.postalCode,\n city: dto.city,\n state: dto.state,\n country: dto.country,\n note: dto.note\n }) : undefined;\n\n export const toAddressDto = (obj?: Address) => obj ? new AddressDto({\n telecoms: map(obj.telecoms, toTelecomDto),\n addressType: obj.addressType as AddressDto.AddressTypeEnum,\n descr: obj.description,\n street: obj.street,\n houseNumber: obj.houseNumber,\n postboxNumber: obj.postboxNumber,\n postalCode: obj.postalCode,\n city: obj.city,\n state: obj.state,\n country: obj.country,\n note: obj.note}) : undefined;\n\n const toTelecom = (dto?: TelecomDto) => dto ? new Telecom({\n telecomType: dto.telecomType as TelecomTelecomTypeEnum,\n telecomNumber: dto.telecomNumber,\n telecomDescription: dto.telecomDescription,\n }) : undefined;\n\n const toTelecomDto = (obj?: Telecom) => obj ? new TelecomDto({\n telecomType: obj.telecomType as TelecomDto.TelecomTypeEnum,\n telecomNumber: obj.telecomNumber,\n telecomDescription: obj.telecomDescription,\n }) : undefined;\n}\n","import {AuthenticationToken as AuthenticationTokenDto} from \"@icure/api\";\nimport {AuthenticationToken} from \"../models/AuthenticationToken\";\n\nexport namespace AuthenticationTokenMapper {\n export const toAuthenticationToken = (dto: AuthenticationTokenDto) =>\n new AuthenticationToken({\n token: dto.token,\n creationTime: dto.creationTime,\n validity: dto.validity,\n });\n\n export const toAuthenticationTokenDto = (obj: AuthenticationToken) =>\n new AuthenticationTokenDto({\n token: obj.token,\n creationTime: obj.creationTime,\n validity: obj.validity,\n });\n}\n","import {Code} from \"@icure/api\";\nimport {Coding} from \"../models/Coding\";\nimport {isCodeId, toMapSet} from \"./utils\";\n\nexport namespace CodingMapper {\n export const toCoding = (dto: Code) =>\n new Coding({\n id: dto.id,\n qualifiedLinks: dto.qualifiedLinks,\n searchTerms: toMapSet(dto.searchTerms),\n rev: dto.rev,\n type: dto.type,\n code: dto.code,\n version: dto.version,\n regions: dto.regions,\n description: dto.label,\n });\n\n export const toCode = (obj: Coding) =>\n new Code({\n id: isCodeId(obj.id) ? obj.id : `${obj.type}|${obj.code}|${obj.version}`,\n qualifiedLinks: obj.qualifiedLinks,\n searchTerms: toMapSet(obj.searchTerms),\n rev: obj.rev,\n type: obj.type,\n code: obj.code,\n version: obj.version,\n regions: obj.regions,\n label: obj.description\n });\n}\n","import {CodingReference} from \"../models/CodingReference\";\nimport {CodeStub} from \"@icure/api\";\n\nexport namespace CodeStubDtoMapper {\n export const toCodingReference = (obj?: CodeStub) => obj ? new CodingReference({\n id: obj.id ?? `${obj.type}|${obj.code}|${obj.version}`,\n type: obj.type,\n code: obj.code,\n version: obj.version,\n }) : undefined;\n\n export const toCodeStub = (obj?: CodingReference) => obj ?new CodeStub({\n id: obj.id,\n type: obj.type,\n code: obj.code,\n version: obj.version,\n }) : undefined;\n\n\n}\n","import { DataOwnerWithType as DataOwnerWithTypeDto, Patient as PatientDto } from '@icure/api'\nimport { DataOwnerTypeEnum as DataOwnerTypeEnumDto } from '@icure/api/icc-api/model/DataOwnerTypeEnum'\nimport { DataOwnerTypeEnum, DataOwnerWithType } from '../models/DataOwner'\nimport { PatientMapper } from './patient'\nimport { MedicalDeviceMapper } from './medicalDevice'\nimport { HealthcareProfessionalMapper } from './healthcareProfessional'\n\nexport namespace DataOwnerMapper {\n export function toDataOwnerWithType(dto: DataOwnerWithTypeDto): DataOwnerWithType {\n if (dto.type == DataOwnerTypeEnumDto.Patient) {\n return {\n type: DataOwnerTypeEnum.Patient,\n dataOwner: PatientMapper.toEncryptedPatient(dto.dataOwner)!,\n }\n } else if (dto.type == DataOwnerTypeEnumDto.Device) {\n return {\n type: DataOwnerTypeEnum.MedicalDevice,\n dataOwner: MedicalDeviceMapper.toMedicalDevice(dto.dataOwner),\n }\n } else if (dto.type == DataOwnerTypeEnumDto.Hcp) {\n return {\n type: DataOwnerTypeEnum.HealthcareProfessional,\n dataOwner: HealthcareProfessionalMapper.toHealthcareProfessional(dto.dataOwner),\n }\n } else throw new Error(`Unexpected data owner ${JSON.stringify(dto)}`)\n }\n\n export async function toDataOwnerWithTypeDecryptingPatient(\n dto: DataOwnerWithTypeDto,\n tryDecryptPatient: (patient: PatientDto) => Promise<{ entity: PatientDto; decrypted: boolean }>\n ): Promise {\n if (dto.type == DataOwnerTypeEnumDto.Patient) {\n const decryptionInfo = await tryDecryptPatient(dto.dataOwner)\n return {\n type: DataOwnerTypeEnum.Patient,\n dataOwner: decryptionInfo.decrypted\n ? PatientMapper.toPatient(decryptionInfo.entity)!\n : PatientMapper.toEncryptedPatient(decryptionInfo.entity)!,\n }\n } else return toDataOwnerWithType(dto)\n }\n\n export function toDataOwnerWithTypeDto(obj: DataOwnerWithType): DataOwnerWithTypeDto {\n if (obj.type == DataOwnerTypeEnum.Patient) {\n return {\n type: DataOwnerTypeEnumDto.Patient,\n dataOwner: PatientMapper.toPatientDto(obj.dataOwner)!,\n }\n } else if (obj.type == DataOwnerTypeEnum.MedicalDevice) {\n return {\n type: DataOwnerTypeEnumDto.Device,\n dataOwner: MedicalDeviceMapper.toDeviceDto(obj.dataOwner),\n }\n } else if (obj.type == DataOwnerTypeEnum.HealthcareProfessional) {\n return {\n type: DataOwnerTypeEnumDto.Hcp,\n dataOwner: HealthcareProfessionalMapper.toHealthcarePartyDto(obj.dataOwner),\n }\n } else throw new Error(`Unexpected data owner ${JSON.stringify(obj)}`)\n }\n\n export function toDataOwnerType(dto: DataOwnerTypeEnumDto): DataOwnerTypeEnum {\n if (dto == DataOwnerTypeEnumDto.Patient) {\n return DataOwnerTypeEnum.Patient\n } else if (dto == DataOwnerTypeEnumDto.Device) {\n return DataOwnerTypeEnum.MedicalDevice\n } else if (dto == DataOwnerTypeEnumDto.Hcp) {\n return DataOwnerTypeEnum.HealthcareProfessional\n } else throw new Error(`Unexpected data owner type ${dto}`)\n }\n}\n","import {Delegation as DelegationDto} from \"@icure/api\";\nimport {Delegation} from \"../models/Delegation\";\n\nexport namespace DelegationMapper {\n export const toDelegation = (dto: DelegationDto) => new Delegation({\n tags: dto.tags,\n owner: dto.owner,\n delegatedTo: dto.delegatedTo,\n key: dto.key\n });\n\n export const toDelegationDto = (obj: Delegation) => new DelegationDto({\n tags: obj.tags,\n owner: obj.owner,\n delegatedTo: obj.delegatedTo,\n key: obj.key\n });\n}\n","import {Document as DocumentDto} from \"@icure/api\";\nimport {Document} from \"../models/Document\";\nimport {forceUuid} from \"./utils\";\n\nexport namespace DocumentMapper {\n export const toDocument = (dto: DocumentDto) => new Document({\n id: dto.id,\n otherUtis: new Set(dto.otherUtis),\n rev: dto.rev,\n created: dto.created,\n modified: dto.modified,\n author: dto.author,\n responsible: dto.responsible,\n medicalLocationId: dto.medicalLocationId,\n deletionDate: dto.deletionDate,\n objectStoreReference: dto.objectStoreReference,\n mainUti: dto.mainUti,\n name: dto.name,\n version: dto.version,\n externalUuid: dto.externalUuid,\n size: dto.size,\n hash: dto.hash,\n attachmentId: dto.attachmentId,\n });\n\n export const toDocumentDto = (obj: Document) => new DocumentDto({\n id: forceUuid(obj.id),\n otherUtis: new Set(obj.otherUtis),\n rev: obj.rev,\n created: obj.created,\n modified: obj.modified,\n author: obj.author,\n responsible: obj.responsible,\n medicalLocationId: obj.medicalLocationId,\n deletionDate: obj.deletionDate,\n objectStoreReference: obj.objectStoreReference,\n mainUti: obj.mainUti,\n name: obj.name,\n version: obj.version,\n externalUuid: obj.externalUuid,\n size: obj.size,\n hash: obj.hash,\n attachmentId: obj.attachmentId,\n });\n}\n","import { Filter } from '../filter/Filter'\nimport {\n AbstractFilter,\n AbstractFilterCode,\n AbstractFilterDevice,\n AbstractFilterHealthcareParty,\n AbstractFilterHealthElement,\n AbstractFilterMaintenanceTask,\n AbstractFilterPatient,\n AbstractFilterService,\n AbstractFilterUser,\n AllCodesFilter as AllCodesFilterDto,\n AllDevicesFilter as AllDevicesFilterDto,\n AllHealthcarePartiesFilter as AllHealthcarePartiesFilterDto,\n AllUsersFilter as AllUsersFilterDto,\n Code as CodeDto,\n CodeByIdsFilter as CodeByIdsFilterDto,\n CodeByRegionTypeLabelLanguageFilter as CodeByRegionTypeLabelLanguageFilterDto,\n ComplementFilter as ComplementFilterDto,\n Device as DeviceDto,\n DeviceByIdsFilter as DeviceByIdsFilterDto,\n HealthcareParty as HealthcarePartyDto,\n HealthcarePartyByIdsFilter as HealthcarePartyByIdsFilterDto,\n HealthcarePartyByNameFilter as HealthcarePartyByNameFilterDto,\n HealthcarePartyByTagCodeFilter as HealthcarePartyByTagCodeFilterDto,\n HealthElement as HealthElementDto,\n HealthElementByHcPartyFilter as HealthElementByHcPartyFilterDto,\n HealthElementByHcPartyIdentifiersFilter as HealthElementByHcPartyIdentifiersFilterDto,\n HealthElementByHcPartySecretForeignKeysFilter as HealthElementByHcPartySecretForeignKeysFilterDto,\n HealthElementByHcPartyTagCodeFilter as HealthElementByHcPartyTagCodeFilterDto,\n HealthElementByIdsFilter as HealthElementByIdsFilterDto,\n IntersectionFilter as IntersectionFilterDto,\n MaintenanceTask as MaintenanceTaskDto,\n Patient as PatientDto,\n PatientByHcPartyAndIdentifiersFilter as PatientByHcPartyAndIdentifiersFilterDto,\n PatientByHcPartyAndSsinsFilter as PatientByHcPartyAndSsinsFilterDto,\n PatientByHcPartyDateOfBirthBetweenFilter as PatientByHcPartyDateOfBirthBetweenFilterDto,\n PatientByHcPartyFilter as PatientByHcPartyFilterDto,\n PatientByHcPartyGenderEducationProfession as PatientByHcPartyGenderEducationProfessionDto,\n PatientByHcPartyNameContainsFuzzyFilter as PatientByHcPartyNameContainsFuzzyFilterDto,\n PatientByIdsFilter as PatientByIdsFilterDto,\n Service as ServiceDto,\n ServiceByHcPartyFilter as ServiceByHcPartyFilterDto,\n ServiceByHcPartyHealthElementIdsFilter,\n ServiceByHcPartyIdentifiersFilter as ServiceByHcPartyIdentifiersFilterDto,\n ServiceByHcPartyTagCodeDateFilter as ServiceByHcPartyTagCodeDateFilterDto,\n ServiceByIdsFilter,\n ServiceBySecretForeignKeys as ServiceBySecretForeignKeysDto,\n UnionFilter as UnionFilterDto,\n User as UserDto,\n UserByIdsFilter as UserByIdsFilterDto,\n} from '@icure/api'\nimport { MaintenanceTaskByIdsFilter as MaintenanceTaskByIdsFilterDto } from '@icure/api/icc-x-api/filters/MaintenanceTaskByIdsFilter'\nimport { MaintenanceTaskByHcPartyAndTypeFilter as MaintenanceTaskByHcPartyAndTypeFilterDto } from '@icure/api/icc-x-api/filters/MaintenanceTaskByHcPartyAndTypeFilter'\nimport { MaintenanceTaskAfterDateFilter as MaintenanceTaskAfterDateFilterDto } from '@icure/api/icc-x-api/filters/MaintenanceTaskAfterDateFilter'\nimport { UsersByPatientIdFilter as UsersByPatientIdFilterDto } from '@icure/api/icc-x-api/filters/UsersByPatientIdFilter'\nimport { Coding } from '../models/Coding'\nimport { ComplementFilter } from '../filter/ComplementFilter'\nimport { UnionFilter } from '../filter/UnionFilter'\nimport { IntersectionFilter } from '../filter/IntersectionFilter'\nimport { AllCodingsFilter } from '../filter/coding/AllCodingsFilter'\nimport { CodingByIdsFilter } from '../filter/coding/CodingByIdsFilter'\nimport { CodingByRegionTypeLabelFilter } from '../filter/coding/CodingByRegionTypeLabelFilter'\nimport { DataSample } from '../models/DataSample'\nimport { DataSampleByIdsFilter } from '../filter/datasample/DataSampleByIdsFilter'\nimport { DataSampleByHealthcarePartyTagCodeDateFilter } from '../filter/datasample/DataSampleByHealthcarePartyTagCodeDateFilter'\nimport { DataSampleByHealthcarePartyFilter } from '../filter/datasample/DataSampleByHealthcarePartyFilter'\nimport { DataSampleByHealthcarePartyIdentifiersFilter } from '../filter/datasample/DataSampleByHealthcarePartyIdentifiersFilter'\nimport { DataSampleByHealthcarePartyPatientFilter } from '../filter/datasample/DataSampleByHealthcarePartyPatientFilter'\nimport { MedicalDevice } from '../models/MedicalDevice'\nimport { MedicalDeviceByIdsFilter } from '../filter/medicaldevice/MedicalDeviceByIdsFilter'\nimport { AllMedicalDevicesFilter } from '../filter/medicaldevice/AllMedicalDevicesFilter'\nimport { HealthcareElementByHealthcarePartyFilter } from '../filter/healthcareelement/HealthcareElementByHealthcarePartyFilter'\nimport { HealthcareElementByHealthcarePartyIdentifiersFilter } from '../filter/healthcareelement/HealthcareElementByHealthcarePartyIdentifiersFilter'\nimport { HealthcareElementByHealthcarePartyPatientFilter } from '../filter/healthcareelement/HealthcareElementByHealthcarePartyPatientFilter'\nimport { HealthcareElementByHealthcarePartyLabelCodeFilter } from '../filter/healthcareelement/HealthcareElementByHealthcarePartyLabelCodeFilter'\nimport { HealthcareElementByIdsFilter } from '../filter/healthcareelement/HealthcareElementByIdsFilter'\nimport { HealthcareElement } from '../models/HealthcareElement'\nimport { IdentifierDtoMapper } from './identifier'\nimport { HealthcareProfessional } from '../models/HealthcareProfessional'\nimport { AllHealthcareProfessionalsFilter } from '../filter/hcp/AllHealthcareProfessionalsFilter'\nimport { HealthcareProfessionalByIdsFilter } from '../filter/hcp/HealthcareProfessionalByIdsFilter'\nimport { HealthcareProfessionalByNameFilter } from '../filter/hcp/HealthcareProfessionalByNameFilter'\nimport { User } from '../models/User'\nimport { UserByIdsFilter } from '../filter/user/UserByIdsFilter'\nimport { AllUsersFilter } from '../filter/user/AllUsersFilter'\nimport { Patient } from '../models/Patient'\nimport { PatientByHealthcarePartyFilter } from '../filter/patient/PatientByHealthcarePartyFilter'\nimport { PatientByHealthcarePartyIdentifiersFilter } from '../filter/patient/PatientByHealthcarePartyIdentifiersFilter'\nimport { PatientByHealthcarePartySsinsFilter } from '../filter/patient/PatientByHealthcarePartySsinsFilter'\nimport { PatientByHealthcarePartyDateOfBirthBetweenFilter } from '../filter/patient/PatientByHealthcarePartyDateOfBirthBetweenFilter'\nimport { PatientByHealthcarePartyNameContainsFuzzyFilter } from '../filter/patient/PatientByHealthcarePartyNameContainsFuzzyFilter'\nimport { PatientByHealthcarePartyGenderEducationProfessionFilter } from '../filter/patient/PatientByHealthcarePartyGenderEducationProfessionFilter'\nimport { PatientByIdsFilter } from '../filter/patient/PatientByIdsFilter'\nimport { DataSampleByHealthcarePartyHealthcareElementIdsFilter } from '../filter/datasample/DataSampleByHealthcarePartyHealthcareElementIdsFilter'\nimport { UsersByPatientIdFilter } from '../filter/user/UsersByPatientIdFilter'\nimport { Notification } from '../models/Notification'\nimport { NotificationsByIdFilter } from '../filter/notification/NotificationsByIdFilter'\nimport { NotificationsByHcPartyAndTypeFilter } from '../filter/notification/NotificationsByHcPartyAndTypeFilter'\nimport { NotificationsAfterDateFilter } from '../filter/notification/NotificationsAfterDateFilter'\nimport toIdentifierDto = IdentifierDtoMapper.toIdentifierDto\nimport { HealthcareProfessionalByLabelCodeFilter } from '../filter/hcp/HealthcareProfessionalByLabelCodeFilter'\n\nexport namespace FilterMapper {\n export function toAbstractFilterDto(filter: Filter, input: 'DataSample'): AbstractFilterService\n export function toAbstractFilterDto(filter: Filter, input: 'Coding'): AbstractFilterCode\n export function toAbstractFilterDto(filter: Filter, input: 'MedicalDevice'): AbstractFilterDevice\n export function toAbstractFilterDto(\n filter: Filter,\n input: 'HealthcareProfessional'\n ): AbstractFilterHealthcareParty\n export function toAbstractFilterDto(filter: Filter, input: 'HealthcareElement'): AbstractFilterHealthElement\n export function toAbstractFilterDto(filter: Filter, input: 'Patient'): AbstractFilterPatient\n export function toAbstractFilterDto(filter: Filter, input: 'User'): AbstractFilterUser\n export function toAbstractFilterDto(filter: Filter, input: 'Notification'): AbstractFilterMaintenanceTask\n export function toAbstractFilterDto(\n filter: Filter,\n input: 'DataSample' | 'Coding' | 'MedicalDevice' | 'HealthcareProfessional' | 'HealthcareElement' | 'Patient' | 'User' | 'Notification'\n ): AbstractFilter {\n const res =\n input === 'DataSample'\n ? toAbstractFilterServiceDto(filter)\n : input === 'Coding'\n ? toAbstractFilterCodeDto(filter)\n : input === 'MedicalDevice'\n ? toAbstractFilterDeviceDto(filter)\n : input === 'HealthcareProfessional'\n ? toAbstractFilterHealthcarePartyDto(filter)\n : input === 'HealthcareElement'\n ? toAbstractFilterHealthElementDto(filter)\n : input === 'Patient'\n ? toAbstractFilterPatientDto(filter)\n : input === 'User'\n ? toAbstractFilterUserDto(filter)\n : input === 'Notification'\n ? toAbstractFilterMaintenanceTaskDto(filter)\n : null\n if (!res) {\n throw Error('Filter is not recognized')\n }\n return res\n }\n\n function toAbstractFilterCodeDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterCodeDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterCodeDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterCodeDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'AllCodingsFilter') {\n return toAllCodesFilterDto()\n }\n if (filter['$type'] === 'CodingByIdsFilter') {\n return toCodeByIdsFilterDto(filter as CodingByIdsFilter)\n }\n if (filter['$type'] === 'CodingByRegionTypeLabelFilter') {\n return toCodeByRegionTypeLabelLanguageFilterDto(filter as CodingByRegionTypeLabelFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toAllCodesFilterDto = () => new AllCodesFilterDto({})\n\n const toComplementFilterCodeDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterCodeDto(filter.superSet), toAbstractFilterCodeDto(filter.subSet))\n\n const toUnionFilterCodeDto = (filter: UnionFilter) => new UnionFilterDto(filter.filters.map((it) => toAbstractFilterCodeDto(it)))\n\n const toIntersectionFilterCodeDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterCodeDto(it)))\n\n const toCodeByIdsFilterDto = (filter: CodingByIdsFilter) =>\n new CodeByIdsFilterDto({\n desc: filter.description,\n ids: filter.ids,\n })\n\n const toCodeByRegionTypeLabelLanguageFilterDto = (filter: CodingByRegionTypeLabelFilter) =>\n new CodeByRegionTypeLabelLanguageFilterDto({\n desc: filter.description,\n region: filter.region,\n type: filter.type,\n language: filter.language,\n label: filter.label,\n })\n\n function toAbstractFilterServiceDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterServiceDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterServiceDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterServiceDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'DataSampleByHealthcarePartyFilter') {\n return toServiceByHcPartyFilterDto(filter as DataSampleByHealthcarePartyFilter)\n }\n if (filter['$type'] === 'DataSampleByHealthcarePartyIdentifiersFilter') {\n return toServiceByHcPartyIdentifiersFilterDto(filter as DataSampleByHealthcarePartyIdentifiersFilter)\n }\n if (filter['$type'] === 'DataSampleByHealthcarePartyHealthcareElementIdsFilter') {\n return toServiceByHcPartyHealthElementIdsFilterDto(filter as DataSampleByHealthcarePartyHealthcareElementIdsFilter)\n }\n if (filter['$type'] === 'DataSampleByHealthcarePartyTagCodeDateFilter') {\n return toServiceByHcPartyTagCodeDateFilterDto(filter as DataSampleByHealthcarePartyTagCodeDateFilter)\n }\n if (filter['$type'] === 'DataSampleByIdsFilter') {\n return toServiceByIdsFilterDto(filter as DataSampleByIdsFilter)\n }\n if (filter['$type'] === 'DataSampleByHealthcarePartyPatientFilter') {\n return toServiceBySecretForeignKeysDto(filter as DataSampleByHealthcarePartyPatientFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterServiceDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterServiceDto(filter.superSet), toAbstractFilterServiceDto(filter.subSet))\n\n const toUnionFilterServiceDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterServiceDto(it)))\n\n const toIntersectionFilterServiceDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterServiceDto(it)))\n\n const toServiceByIdsFilterDto = (filter: DataSampleByIdsFilter) =>\n new ServiceByIdsFilter({\n desc: filter.description,\n ids: filter.ids,\n })\n\n const toServiceByHcPartyHealthElementIdsFilterDto = (filter: DataSampleByHealthcarePartyHealthcareElementIdsFilter) =>\n new ServiceByHcPartyHealthElementIdsFilter({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n healthElementIds: filter.healthcareElementIds,\n })\n\n const toServiceByHcPartyIdentifiersFilterDto = (filter: DataSampleByHealthcarePartyIdentifiersFilter) =>\n new ServiceByHcPartyIdentifiersFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n identifiers: filter.identifiers.map((it) => toIdentifierDto(it)),\n })\n\n const toServiceByHcPartyTagCodeDateFilterDto = (filter: DataSampleByHealthcarePartyTagCodeDateFilter) =>\n new ServiceByHcPartyTagCodeDateFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n patientSecretForeignKey: filter.patientSecretForeignKey,\n tagType: filter.tagType,\n tagCode: filter.tagCode,\n codeType: filter.codeType,\n codeCode: filter.codeCode,\n startValueDate: filter.startValueDate,\n endValueDate: filter.endValueDate,\n descending: filter.descending,\n })\n\n const toServiceByHcPartyFilterDto = (filter: DataSampleByHealthcarePartyFilter) =>\n new ServiceByHcPartyFilterDto({\n desc: filter.description,\n hcpId: filter.hcpId,\n })\n\n const toServiceBySecretForeignKeysDto = (filter: DataSampleByHealthcarePartyPatientFilter) =>\n new ServiceBySecretForeignKeysDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n patientSecretForeignKeys: filter.patientSecretForeignKeys,\n })\n\n function toAbstractFilterDeviceDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterDeviceDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterDeviceDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterDeviceDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'AllMedicalDevicesFilter') {\n return toAllDevicesFilterDto(filter as AllMedicalDevicesFilter)\n }\n if (filter['$type'] === 'MedicalDeviceByIdsFilter') {\n return toDeviceByIdsFilterDto(filter as MedicalDeviceByIdsFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterDeviceDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterDeviceDto(filter.superSet), toAbstractFilterDeviceDto(filter.subSet))\n\n const toUnionFilterDeviceDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterDeviceDto(it)))\n\n const toIntersectionFilterDeviceDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterDeviceDto(it)))\n\n const toAllDevicesFilterDto = (filter: AllMedicalDevicesFilter) => new AllDevicesFilterDto({})\n\n const toDeviceByIdsFilterDto = (filter: MedicalDeviceByIdsFilter) => new DeviceByIdsFilterDto({ desc: filter.description, ids: filter.ids })\n\n function toAbstractFilterHealthcarePartyDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterHealthcarePartyDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterHealthcarePartyDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterHealthcarePartyDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'AllHealthcareProfessionalsFilter') {\n return toAllHealthcarePartiesFilterDto(filter as AllHealthcareProfessionalsFilter)\n }\n if (filter['$type'] === 'HealthcareProfessionalByIdsFilter') {\n return toHealthcarePartyByIdsFilterDto(filter as HealthcareProfessionalByIdsFilter)\n }\n if (filter['$type'] === 'HealthcareProfessionalByNameFilter') {\n return toHealthcarePartyByNameFilterDto(filter as HealthcareProfessionalByNameFilter)\n }\n if (filter['$type'] === 'HealthcareProfessionalByLabelCodeFilter') {\n return toHealthcarePartyByTagCodeFilterDto(filter as HealthcareProfessionalByLabelCodeFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterHealthcarePartyDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(\n toAbstractFilterHealthcarePartyDto(filter.superSet),\n toAbstractFilterHealthcarePartyDto(filter.subSet)\n )\n\n const toUnionFilterHealthcarePartyDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterHealthcarePartyDto(it)))\n\n const toIntersectionFilterHealthcarePartyDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterHealthcarePartyDto(it)))\n\n const toAllHealthcarePartiesFilterDto = (filter: AllHealthcareProfessionalsFilter) => new AllHealthcarePartiesFilterDto({})\n\n const toHealthcarePartyByIdsFilterDto = (filter: HealthcareProfessionalByIdsFilter) =>\n new HealthcarePartyByIdsFilterDto({ desc: filter.description, ids: filter.ids })\n\n const toHealthcarePartyByNameFilterDto = (filter: HealthcareProfessionalByNameFilter) =>\n new HealthcarePartyByNameFilterDto({ desc: filter.description, name: filter.name, descending: filter.descending })\n\n const toHealthcarePartyByTagCodeFilterDto = (filter: HealthcareProfessionalByLabelCodeFilter) =>\n new HealthcarePartyByTagCodeFilterDto({\n desc: filter.description,\n tagType: filter.labelType,\n tagCode: filter.labelCode,\n codeType: filter.codeType,\n codeCode: filter.codeCode,\n })\n\n function toAbstractFilterHealthElementDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterHealthElementDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterHealthElementDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterHealthElementDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'HealthcareElementByHealthcarePartyFilter') {\n return toHealthElementByHcPartyFilterDto(filter as HealthcareElementByHealthcarePartyFilter)\n }\n if (filter['$type'] === 'HealthcareElementByHealthcarePartyIdentifiersFilter') {\n return toHealthElementByHcPartyIdentifiersFilterDto(filter as HealthcareElementByHealthcarePartyIdentifiersFilter)\n }\n if (filter['$type'] === 'HealthcareElementByHealthcarePartyPatientFilter') {\n return toHealthElementByHcPartySecretForeignKeysFilterDto(filter as HealthcareElementByHealthcarePartyPatientFilter)\n }\n if (filter['$type'] === 'HealthcareElementByHealthcarePartyLabelCodeFilter') {\n return toHealthElementByHcPartyTagCodeFilterDto(filter as HealthcareElementByHealthcarePartyLabelCodeFilter)\n }\n if (filter['$type'] === 'HealthcareElementByIdsFilter') {\n return toHealthElementByIdsFilterDto(filter as HealthcareElementByIdsFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterHealthElementDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterHealthElementDto(filter.superSet), toAbstractFilterHealthElementDto(filter.subSet))\n\n const toUnionFilterHealthElementDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterHealthElementDto(it)))\n\n const toIntersectionFilterHealthElementDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterHealthElementDto(it)))\n\n const toHealthElementByHcPartyFilterDto = (filter: HealthcareElementByHealthcarePartyFilter) =>\n new HealthElementByHcPartyFilterDto({ desc: filter.description, hcpId: filter.healthcarePartyId })\n\n const toHealthElementByHcPartyIdentifiersFilterDto = (filter: HealthcareElementByHealthcarePartyIdentifiersFilter) =>\n new HealthElementByHcPartyIdentifiersFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n identifiers: filter.identifiers.map((it) => toIdentifierDto(it)),\n })\n\n const toHealthElementByHcPartySecretForeignKeysFilterDto = (filter: HealthcareElementByHealthcarePartyPatientFilter) =>\n new HealthElementByHcPartySecretForeignKeysFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n patientSecretForeignKeys: filter.patientSecretForeignKeys,\n })\n\n const toHealthElementByHcPartyTagCodeFilterDto = (filter: HealthcareElementByHealthcarePartyLabelCodeFilter) =>\n new HealthElementByHcPartyTagCodeFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n codeType: filter.codeType,\n codeCode: filter.codeCode,\n tagType: filter.tagType,\n tagCode: filter.tagCode,\n status: filter.status,\n })\n\n const toHealthElementByIdsFilterDto = (filter: HealthcareElementByIdsFilter) =>\n new HealthElementByIdsFilterDto({ desc: filter.description, ids: filter.ids })\n\n function toAbstractFilterUserDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterUserDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterUserDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterUserDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'AllUsersFilter') {\n return toAllUsersFilterDto(filter as AllUsersFilter)\n }\n if (filter['$type'] === 'UserByIdsFilter') {\n return toUserByIdsFilterDto(filter as UserByIdsFilter)\n }\n if (filter['$type'] === 'UsersByPatientIdFilter') {\n return toUsersByPatientIdFilterDto(filter as UsersByPatientIdFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterUserDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterUserDto(filter.superSet), toAbstractFilterUserDto(filter.subSet))\n\n const toUnionFilterUserDto = (filter: UnionFilter) => new UnionFilterDto(filter.filters.map((it) => toAbstractFilterUserDto(it)))\n\n const toIntersectionFilterUserDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterUserDto(it)))\n\n const toAllUsersFilterDto = (filter: AllUsersFilter) => new AllUsersFilterDto({ desc: filter.description })\n\n const toUserByIdsFilterDto = (filter: UserByIdsFilter) => new UserByIdsFilterDto({ desc: filter.description, ids: filter.ids })\n\n const toUsersByPatientIdFilterDto = (filter: UsersByPatientIdFilter) =>\n new UsersByPatientIdFilterDto({ desc: filter.description, patientId: filter.patientId })\n\n function toAbstractFilterPatientDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterPatientDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterPatientDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterPatientDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartyFilter') {\n return toPatientByHcPartyFilterDto(filter as PatientByHealthcarePartyFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartyIdentifiersFilter') {\n return toPatientByHcPartyAndIdentifiersFilterDto(filter as PatientByHealthcarePartyIdentifiersFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartySsinsFilter') {\n return toPatientByHcPartyAndSsinsFilterDto(filter as PatientByHealthcarePartySsinsFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartyDateOfBirthBetweenFilter') {\n return toPatientByHcPartyDateOfBirthBetweenFilterDto(filter as PatientByHealthcarePartyDateOfBirthBetweenFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartyNameContainsFuzzyFilter') {\n return toPatientByHcPartyNameContainsFuzzyFilterDto(filter as PatientByHealthcarePartyNameContainsFuzzyFilter)\n }\n if (filter['$type'] === 'PatientByHealthcarePartyGenderEducationProfessionFilter') {\n return toPatientByHcPartyGenderEducationProfessionDto(filter as PatientByHealthcarePartyGenderEducationProfessionFilter)\n }\n if (filter['$type'] === 'PatientByIdsFilter') {\n return toPatientByIdsFilterDto(filter as PatientByIdsFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterPatientDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(toAbstractFilterPatientDto(filter.superSet), toAbstractFilterPatientDto(filter.subSet))\n\n const toUnionFilterPatientDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterPatientDto(it)))\n\n const toIntersectionFilterPatientDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterPatientDto(it)))\n\n const toPatientByHcPartyFilterDto = (filter: PatientByHealthcarePartyFilter) =>\n new PatientByHcPartyFilterDto({ desc: filter.description, healthcarePartyId: filter.healthcarePartyId })\n\n const toPatientByHcPartyAndIdentifiersFilterDto = (filter: PatientByHealthcarePartyIdentifiersFilter) =>\n new PatientByHcPartyAndIdentifiersFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n identifiers: filter.identifiers.map((it) => toIdentifierDto(it)),\n })\n const toPatientByHcPartyAndSsinsFilterDto = (filter: PatientByHealthcarePartySsinsFilter) =>\n new PatientByHcPartyAndSsinsFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n ssins: filter.ssins ?? [],\n })\n const toPatientByHcPartyDateOfBirthBetweenFilterDto = (filter: PatientByHealthcarePartyDateOfBirthBetweenFilter) =>\n new PatientByHcPartyDateOfBirthBetweenFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n minDateOfBirth: filter.minDateOfBirth,\n maxDateOfBirth: filter.maxDateOfBirth,\n })\n\n const toPatientByIdsFilterDto = (filter: PatientByIdsFilter) => new PatientByIdsFilterDto({ desc: filter.description, ids: filter.ids })\n\n const toPatientByHcPartyNameContainsFuzzyFilterDto = (filter: PatientByHealthcarePartyNameContainsFuzzyFilter) =>\n new PatientByHcPartyNameContainsFuzzyFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n searchString: filter.searchString,\n })\n const toPatientByHcPartyGenderEducationProfessionDto = (filter: PatientByHealthcarePartyGenderEducationProfessionFilter) =>\n new PatientByHcPartyGenderEducationProfessionDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n gender: filter.gender,\n education: filter.education,\n profession: filter.profession,\n })\n\n function toAbstractFilterMaintenanceTaskDto(filter: Filter): AbstractFilter {\n if (filter['$type'] === 'ComplementFilter') {\n return toComplementFilterMaintenanceTaskDto(filter as ComplementFilter)\n }\n if (filter['$type'] === 'UnionFilter') {\n return toUnionFilterMaintenanceTaskDto(filter as UnionFilter)\n }\n if (filter['$type'] === 'IntersectionFilter') {\n return toIntersectionFilterMaintenanceTaskDto(filter as IntersectionFilter)\n }\n if (filter['$type'] === 'NotificationsByIdFilter') {\n return toMaintenanceTaskByIdsFilterDto(filter as NotificationsByIdFilter)\n }\n if (filter['$type'] === 'NotificationsByHcPartyAndTypeFilter') {\n return toMaintenanceTaskByHcPartyAndTypeFilterDto(filter as NotificationsByHcPartyAndTypeFilter)\n }\n if (filter['$type'] === 'NotificationsAfterDateFilter') {\n return toMaintenanceTaskAfterDateFilterDto(filter as NotificationsAfterDateFilter)\n }\n throw Error(`No mapper for ${filter['$type']}`)\n }\n\n const toComplementFilterMaintenanceTaskDto = (filter: ComplementFilter) =>\n new ComplementFilterDto(\n toAbstractFilterMaintenanceTaskDto(filter.superSet),\n toAbstractFilterMaintenanceTaskDto(filter.subSet)\n )\n\n const toUnionFilterMaintenanceTaskDto = (filter: UnionFilter) =>\n new UnionFilterDto(filter.filters.map((it) => toAbstractFilterMaintenanceTaskDto(it)))\n\n const toIntersectionFilterMaintenanceTaskDto = (filter: IntersectionFilter) =>\n new IntersectionFilterDto(filter.filters.map((it) => toAbstractFilterMaintenanceTaskDto(it)))\n\n const toMaintenanceTaskByIdsFilterDto = (filter: NotificationsByIdFilter) =>\n new MaintenanceTaskByIdsFilterDto({\n desc: filter.description,\n ids: filter.ids,\n })\n\n const toMaintenanceTaskByHcPartyAndTypeFilterDto = (filter: NotificationsByHcPartyAndTypeFilter) =>\n new MaintenanceTaskByHcPartyAndTypeFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n type: filter.type,\n })\n\n const toMaintenanceTaskAfterDateFilterDto = (filter: NotificationsAfterDateFilter) =>\n new MaintenanceTaskAfterDateFilterDto({\n desc: filter.description,\n healthcarePartyId: filter.healthcarePartyId,\n date: filter.date,\n })\n}\n","import { HealthcareElement } from '../models/HealthcareElement'\nimport { HealthElement } from '@icure/api'\nimport { forceUuid, map, mapSet, mapSetToArray, toMapArrayTransform, toMapSetTransform } from './utils'\nimport { SystemMetaDataEncrypted } from '../models/SystemMetaDataEncrypted'\nimport { DelegationMapper } from './delegation'\nimport { IdentifierDtoMapper } from './identifier'\nimport { CodeStubDtoMapper } from './codeStubCodingReference'\nimport { SecurityMetaData } from '../models/SecurityMetaData'\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace HealthcareElementMapper {\n import toCodingReference = CodeStubDtoMapper.toCodingReference\n import toDelegation = DelegationMapper.toDelegation\n import toIdentifierDto = IdentifierDtoMapper.toIdentifierDto\n import toCodeStub = CodeStubDtoMapper.toCodeStub\n import toDelegationDto = DelegationMapper.toDelegationDto\n import toIdentifier = IdentifierDtoMapper.toIdentifier\n import toSystemMetaDataEncrypted = SystemMetaDataMapper.toSystemMetaDataEncrypted\n import toSystemMetaDataEncryptedDto = SystemMetaDataMapper.toSystemMetaDataEncryptedDto\n\n export const toHealthcareElement = (dto: HealthElement) =>\n new HealthcareElement({\n id: dto.id,\n identifiers: map(dto.identifiers, toIdentifier),\n codes: mapSet(new Set(dto.codes), toCodingReference),\n labels: mapSet(new Set(dto.tags), toCodingReference),\n rev: dto.rev,\n created: dto.created,\n modified: dto.modified,\n author: dto.author,\n responsible: dto.responsible,\n medicalLocationId: dto.medicalLocationId,\n endOfLife: dto.endOfLife,\n deletionDate: dto.deletionDate,\n healthcareElementId: dto.healthElementId ?? dto.id,\n valueDate: dto.valueDate,\n openingDate: dto.openingDate,\n closingDate: dto.closingDate,\n description: dto.descr,\n note: dto.note,\n systemMetaData: toSystemMetaDataEncrypted(dto),\n })\n\n export const toHealthElementDto = (obj: HealthcareElement) => {\n const id = forceUuid(obj.id)\n return new HealthElement({\n id: id,\n identifiers: map(obj.identifiers, toIdentifierDto),\n tags: mapSetToArray(obj.labels, toCodeStub),\n codes: mapSetToArray(obj.codes, toCodeStub),\n rev: obj.rev,\n created: obj.created,\n modified: obj.modified,\n author: obj.author,\n responsible: obj.responsible,\n medicalLocationId: obj.medicalLocationId,\n endOfLife: obj.endOfLife,\n deletionDate: obj.deletionDate,\n healthElementId: obj.healthcareElementId ?? id,\n valueDate: obj.valueDate,\n openingDate: obj.openingDate,\n closingDate: obj.closingDate,\n descr: obj.description,\n note: obj.note,\n relevant: true,\n status: 0,\n ...(obj.systemMetaData ? toSystemMetaDataEncryptedDto(obj.systemMetaData) : {}),\n })\n }\n}\n","import { HealthcareParty } from '@icure/api'\nimport { HealthcareProfessional } from '../models/HealthcareProfessional'\nimport { SystemMetaDataOwner } from '../models/SystemMetaDataOwner'\nimport { forceUuid, map, mapSet, mapSetToArray } from './utils'\nimport { PersonNameDtoMapper } from './personName'\nimport { AddressMapper } from './address'\nimport { CodeStubDtoMapper } from './codeStubCodingReference'\nimport { PropertyStubMapper } from './property'\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace HealthcareProfessionalMapper {\n import toPersonName = PersonNameDtoMapper.toPersonName\n import toAddress = AddressMapper.toAddress\n import toCodingReference = CodeStubDtoMapper.toCodingReference\n import toProperty = PropertyStubMapper.toProperty\n import toCodeStub = CodeStubDtoMapper.toCodeStub\n import toSystemMetaDataOwner = SystemMetaDataMapper.toSystemMetaDataOwner\n import toSystemMetaDataOwnerDto = SystemMetaDataMapper.toSystemMetaDataOwnerDto\n\n export const toHealthcareProfessional = (obj: HealthcareParty) =>\n new HealthcareProfessional({\n id: obj.id,\n labels: mapSet(new Set(obj.tags), toCodingReference),\n codes: mapSet(new Set(obj.codes), toCodingReference),\n names: map(obj.names, toPersonName),\n addresses: map(obj.addresses, toAddress),\n languages: obj.languages,\n properties: new Set(map(obj.properties, toProperty)),\n rev: obj.rev,\n deletionDate: obj.deletionDate,\n name: obj.name,\n lastName: obj.lastName,\n firstName: obj.firstName,\n gender: obj.gender,\n civility: obj.civility,\n speciality: obj.speciality,\n parentId: obj.parentId,\n picture: obj.picture,\n notes: obj.notes,\n systemMetaData: toSystemMetaDataOwner(obj),\n })\n\n export const toHealthcarePartyDto = (obj: HealthcareProfessional) =>\n new HealthcareParty({\n id: forceUuid(obj.id),\n tags: mapSetToArray(obj.labels, toCodeStub),\n codes: mapSetToArray(obj.codes, toCodeStub),\n names: map(obj.names, toPersonName),\n addresses: map(obj.addresses, toAddress),\n languages: obj.languages,\n properties: mapSetToArray(obj.properties, toProperty),\n rev: obj.rev,\n deletionDate: obj.deletionDate,\n name: obj.name,\n lastName: obj.lastName,\n firstName: obj.firstName,\n gender: obj.gender,\n civility: obj.civility,\n speciality: obj.speciality,\n parentId: obj.parentId,\n picture: obj.picture,\n notes: obj.notes,\n ...(obj.systemMetaData ? toSystemMetaDataOwnerDto(obj.systemMetaData) : {}),\n })\n}\n","import {Identifier} from \"../models/Identifier\";\nimport {Identifier as IdentifierDto} from \"@icure/api\";\nimport {CodeStubDtoMapper} from \"./codeStubCodingReference\";\n\nexport namespace IdentifierDtoMapper {\n import toCodingReference = CodeStubDtoMapper.toCodingReference;\n import toCodeStub = CodeStubDtoMapper.toCodeStub;\n export const toIdentifier = (obj?: IdentifierDto) => obj ? new Identifier({\n id: obj.id,\n assigner: obj.assigner,\n start: obj.start,\n end: obj.end,\n system: obj.system,\n type: toCodingReference(obj.type),\n use: obj.use,\n value: obj.value\n }) : undefined;\n\n export const toIdentifierDto = (obj?: Identifier) => obj ? new IdentifierDto({\n id: obj.id,\n assigner: obj.assigner,\n start: obj.start,\n end: obj.end,\n system: obj.system,\n type: toCodeStub(obj.type),\n use: obj.use,\n value: obj.value\n }) : undefined;\n}\n","import { Device } from '@icure/api'\nimport { MedicalDevice } from '../models/MedicalDevice'\nimport { SystemMetaDataOwner } from '../models/SystemMetaDataOwner'\nimport { forceUuid, map, mapSetToArray } from './utils'\nimport { CodeStubDtoMapper } from './codeStubCodingReference'\nimport { PropertyStubMapper } from './property'\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace MedicalDeviceMapper {\n import toCodingReference = CodeStubDtoMapper.toCodingReference\n import toProperty = PropertyStubMapper.toProperty\n import toSystemMetaDataOwner = SystemMetaDataMapper.toSystemMetaDataOwner\n import toSystemMetaDataOwnerDto = SystemMetaDataMapper.toSystemMetaDataOwnerDto\n\n export const toMedicalDevice = (dto: Device) =>\n new MedicalDevice({\n id: dto.id,\n labels: new Set(map(dto.tags, toCodingReference)),\n codes: new Set(map(dto.codes, toCodingReference)),\n properties: new Set(map(dto.properties, toProperty)),\n rev: dto.rev,\n deletionDate: dto.deletionDate,\n name: dto.name,\n externalId: dto.externalId,\n parentId: dto.parentId,\n picture: dto.picture,\n type: dto.type,\n brand: dto.brand,\n model: dto.model,\n serialNumber: dto.serialNumber,\n created: dto.created,\n modified: dto.modified,\n systemMetaData: toSystemMetaDataOwner(dto),\n })\n\n export const toDeviceDto = (obj: MedicalDevice) =>\n new Device({\n id: forceUuid(obj.id),\n tags: mapSetToArray(obj.labels, toCodingReference),\n codes: mapSetToArray(obj.codes, toCodingReference),\n properties: mapSetToArray(obj.properties, toProperty),\n rev: obj.rev,\n deletionDate: obj.deletionDate,\n name: obj.name,\n externalId: obj.externalId,\n parentId: obj.parentId,\n picture: obj.picture,\n type: obj.type,\n brand: obj.brand,\n model: obj.model,\n serialNumber: obj.serialNumber,\n created: obj.created,\n modified: obj.modified,\n ...(obj.systemMetaData ? toSystemMetaDataOwnerDto(obj.systemMetaData) : {}),\n })\n}\n","import { EncryptedEntityStub } from '@icure/api'\nimport { SystemMetaDataEncrypted } from '../models/SystemMetaDataEncrypted'\nimport { mapSetToArray, toMap, toMapArrayTransform, toMapSetTransform } from './utils'\nimport { DelegationMapper } from './delegation'\nimport { DataOwnerOrStub } from '@icure/api/icc-x-api/icc-data-owner-x-api'\nimport { SystemMetaDataOwner } from '../models/SystemMetaDataOwner'\nimport { SystemMetaDataOwnerEncrypted } from '../models/SystemMetaDataOwnerEncrypted'\nimport { filterUndefined } from '../utils/filterUndefined'\n\nexport namespace SystemMetaDataMapper {\n import toDelegation = DelegationMapper.toDelegation\n import toDelegationDto = DelegationMapper.toDelegationDto\n\n export const toSystemMetaDataEncrypted = (dto: EncryptedEntityStub) =>\n new SystemMetaDataEncrypted(filterUndefined(toSystemMetaDataOwnerEncrypted(dto)))\n\n export const toSystemMetaDataOwner = (dto: DataOwnerOrStub) => new SystemMetaDataOwner(filterUndefined(toISystemMetaDataOwner(dto)))\n\n export const toSystemMetaDataOwnerEncrypted = (dto: EncryptedEntityStub & DataOwnerOrStub) =>\n new SystemMetaDataOwnerEncrypted(\n filterUndefined({\n ...toISystemMetaDataOwner(dto),\n ...toISystemMetaDataEncrypted(dto),\n })\n )\n\n export const toSystemMetaDataOwnerDto = (obj: SystemMetaDataOwner) => ({\n publicKey: obj.publicKey,\n publicKeysForOaepWithSha256: Array.from(obj.publicKeysForOaepWithSha256),\n aesExchangeKeys: obj.aesExchangeKeys,\n hcPartyKeys: obj.hcPartyKeys,\n privateKeyShamirPartitions: obj.privateKeyShamirPartitions,\n transferKeys: obj.transferKeys,\n })\n\n export const toSystemMetaDataEncryptedDto = (obj: SystemMetaDataEncrypted) => ({\n secretForeignKeys: obj.secretForeignKeys,\n cryptedForeignKeys: toMapArrayTransform(obj.cryptedForeignKeys, toDelegationDto),\n delegations: toMapArrayTransform(obj.delegations, toDelegationDto),\n encryptionKeys: toMapArrayTransform(obj.encryptionKeys, toDelegationDto),\n encryptedSelf: obj.encryptedSelf,\n })\n\n export const toSystemMetaDataOwnerEncryptedDto = (obj: SystemMetaDataOwnerEncrypted) => ({\n ...toSystemMetaDataOwnerDto(obj),\n ...toSystemMetaDataEncryptedDto(obj),\n })\n\n const toISystemMetaDataOwner = (dto: DataOwnerOrStub) => ({\n publicKey: dto.publicKey,\n publicKeysForOaepWithSha256: new Set(dto.publicKeysForOaepWithSha256 ?? []),\n aesExchangeKeys: dto.aesExchangeKeys,\n hcPartyKeys: dto.hcPartyKeys,\n privateKeyShamirPartitions: dto.privateKeyShamirPartitions,\n transferKeys: dto.transferKeys,\n })\n\n const toISystemMetaDataEncrypted = (dto: EncryptedEntityStub) => ({\n secretForeignKeys: dto.secretForeignKeys,\n cryptedForeignKeys: toMapSetTransform(dto.cryptedForeignKeys, toDelegation),\n delegations: toMapSetTransform(dto.delegations, toDelegation),\n encryptionKeys: toMapSetTransform(dto.encryptionKeys, toDelegation),\n encryptedSelf: dto.encryptedSelf,\n })\n}\n","import { Notification, NotificationTypeEnum } from '../models/Notification'\nimport { MaintenanceTask } from '@icure/api'\nimport { SystemMetaDataEncrypted } from '../models/SystemMetaDataEncrypted'\nimport { forceUuid, map, toMapArrayTransform, toMapSetTransform } from './utils'\nimport { DelegationMapper } from './delegation'\nimport { PropertyStubMapper } from './property'\nimport { IdentifierDtoMapper } from './identifier'\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace NotificationMapper {\n import toDelegation = DelegationMapper.toDelegation\n import toDelegationDto = DelegationMapper.toDelegationDto\n import toProperty = PropertyStubMapper.toProperty\n import toIdentifier = IdentifierDtoMapper.toIdentifier\n import toIdentifierDto = IdentifierDtoMapper.toIdentifierDto\n import toSystemMetaDataEncrypted = SystemMetaDataMapper.toSystemMetaDataEncrypted\n import toSystemMetaDataOwner = SystemMetaDataMapper.toSystemMetaDataOwner\n import toSystemMetaDataEncryptedDto = SystemMetaDataMapper.toSystemMetaDataEncryptedDto\n export const toNotification = (obj?: MaintenanceTask) =>\n obj\n ? new Notification({\n id: obj.id,\n rev: obj.rev,\n status: obj.status,\n identifiers: map(obj.identifier, toIdentifier),\n created: obj.created,\n modified: obj.modified,\n deletionDate: obj.deletionDate,\n endOfLife: obj.endOfLife,\n author: obj.author,\n responsible: obj.responsible,\n properties: map(obj.properties, toProperty),\n type:\n !!obj.taskType && Object.values(NotificationTypeEnum).includes(obj.taskType as unknown as NotificationTypeEnum)\n ? NotificationTypeEnum[obj.taskType as keyof typeof NotificationTypeEnum]\n : NotificationTypeEnum.OTHER,\n systemMetaData: toSystemMetaDataEncrypted(obj),\n })\n : undefined\n\n export const toMaintenanceTaskDto = (obj?: Notification) =>\n obj\n ? new MaintenanceTask({\n id: forceUuid(obj.id),\n rev: obj.rev,\n status: obj.status,\n identifier: map(obj.identifiers, toIdentifierDto),\n created: obj.created,\n modified: obj.modified,\n deletionDate: obj.deletionDate,\n endOfLife: obj.endOfLife,\n author: obj.author,\n responsible: obj.responsible,\n properties: obj.properties,\n taskType: obj.type,\n ...(obj.systemMetaData ? toSystemMetaDataEncryptedDto(obj.systemMetaData) : {}),\n })\n : undefined\n}\n","import {PaginatedListMedicalDevice} from \"../models/PaginatedListMedicalDevice\"\nimport {PaginatedListDataSample} from \"../models/PaginatedListDataSample\"\nimport {PaginatedListCoding} from \"../models/PaginatedListCoding\"\nimport {PaginatedListHealthcareElement} from \"../models/PaginatedListHealthcareElement\"\nimport {PaginatedListHealthcareProfessional} from \"../models/PaginatedListHealthcareProfessional\"\nimport {PaginatedListPatient} from \"../models/PaginatedListPatient\"\nimport {PaginatedListUser} from \"../models/PaginatedListUser\"\nimport {map} from \"./utils\";\nimport {PaginatedDocumentKeyAndIdPairObject} from \"../models/PaginatedDocumentKeyAndIdPairObject\";\nimport {DataSampleMapper} from \"./serviceDataSample\";\nimport {CodingMapper} from \"./codeCoding\";\nimport {HealthcareElementMapper} from \"./healthcareElement\";\nimport {MedicalDeviceMapper} from \"./medicalDevice\";\n\nimport {\n PaginatedDocumentKeyIdPairObject,\n PaginatedListCode as PaginatedListCodeDto,\n PaginatedListDevice as PaginatedListDeviceDto,\n PaginatedListHealthcareParty as PaginatedListHealthcarePartyDto,\n PaginatedListHealthElement as PaginatedListHealthElementDto,\n PaginatedListMaintenanceTask as PaginatedListMaintenanceTaskDto,\n PaginatedListPatient as PaginatedListPatientDto,\n PaginatedListService as PaginatedListServiceDto,\n PaginatedListUser as PaginatedListUserDto\n} from \"@icure/api\";\nimport {PatientMapper} from \"./patient\";\nimport {UserMapper} from \"./user\";\nimport {CodeStubDtoMapper} from \"./codeStubCodingReference\";\nimport {HealthcareProfessionalMapper} from \"./healthcareProfessional\";\nimport {PaginatedListNotification} from \"../models/PaginatedListNotification\";\nimport {NotificationMapper} from \"./notification\";\n\nexport namespace PaginatedListMapper {\n import toDataSample = DataSampleMapper.toDataSample;\n import toCoding = CodingMapper.toCoding;\n import toHealthcareElement = HealthcareElementMapper.toHealthcareElement;\n import toMedicalDevice = MedicalDeviceMapper.toMedicalDevice;\n import toPatient = PatientMapper.toPatient;\n import toUser = UserMapper.toUser;\n import toDeviceDto = MedicalDeviceMapper.toDeviceDto;\n import toServiceDto = DataSampleMapper.toServiceDto;\n import toCodeStub = CodeStubDtoMapper.toCodeStub;\n import toHealthElementDto = HealthcareElementMapper.toHealthElementDto;\n import toPatientDto = PatientMapper.toPatientDto;\n import toUserDto = UserMapper.toUserDto;\n import toHealthcareProfessional = HealthcareProfessionalMapper.toHealthcareProfessional;\n import toHealthcarePartyDto = HealthcareProfessionalMapper.toHealthcarePartyDto;\n import toNotification = NotificationMapper.toNotification;\n import toMaintenanceTaskDto = NotificationMapper.toMaintenanceTaskDto;\n export const toPaginatedListMedicalDevice = (obj?: PaginatedListDeviceDto) => obj ? new PaginatedListMedicalDevice({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toMedicalDevice),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListDataSample = (obj?: PaginatedListServiceDto) => obj ? new PaginatedListDataSample({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toDataSample),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListCoding = (obj?: PaginatedListCodeDto) => obj ? new PaginatedListCoding({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toCoding),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListHealthcareElement = (obj?: PaginatedListHealthElementDto) => obj ? new PaginatedListHealthcareElement({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toHealthcareElement),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListHealthcareProfessional = (obj?: PaginatedListHealthcarePartyDto) => obj ? new PaginatedListHealthcareProfessional({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toHealthcareProfessional),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListNotification = (obj?: PaginatedListMaintenanceTaskDto) => obj ? new PaginatedListNotification({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toNotification),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListPatient = (obj?: PaginatedListPatientDto) => obj ? new PaginatedListPatient({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toPatient),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListUser = (obj?: PaginatedListUserDto) => obj ? new PaginatedListUser({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toUser),\n nextKeyPair: new PaginatedDocumentKeyAndIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListDeviceDto = (obj?: PaginatedListMedicalDevice) => obj ? new PaginatedListDeviceDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toDeviceDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListServiceDto = (obj?: PaginatedListDataSample) => obj ? new PaginatedListServiceDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toServiceDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListCodeDto = (obj?: PaginatedListCoding) => obj ? new PaginatedListCodeDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toCodeStub),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListHealthElementDto = (obj?: PaginatedListHealthcareElement) => obj ? new PaginatedListHealthElementDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toHealthElementDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListHealthcarePartyDto = (obj?: PaginatedListHealthcareProfessional) => obj ? new PaginatedListHealthcarePartyDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toHealthcarePartyDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListMaintenanceTaskDto = (obj?: PaginatedListNotification) => obj ? new PaginatedListMaintenanceTaskDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toMaintenanceTaskDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListPatientDto = (obj?: PaginatedListPatient) => obj ? new PaginatedListPatientDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toPatientDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n\n export const toPaginatedListUserDto = (obj?: PaginatedListUser) => obj ? new PaginatedListUserDto({\n pageSize: obj.pageSize,\n totalSize: obj.totalSize,\n rows: map(obj.rows, toUserDto),\n nextKeyPair: new PaginatedDocumentKeyIdPairObject({startKey: obj.nextKeyPair?.startKey, startKeyDocId: obj.nextKeyPair?.startKeyDocId})\n }) : undefined;\n}\n","import {Partnership} from \"../models/Partnership\";\nimport {Partnership as PartnershipDto} from \"@icure/api\";\n\nexport namespace PartnershipDtoMapper {\n export const toPartnership = (obj?: PartnershipDto) => obj ? new Partnership({\n type: obj.type,\n status: obj.status,\n partnerId: obj.partnerId,\n}) : undefined;\n\n export const toPartnershipDto = (obj?: Partnership) => obj ? new PartnershipDto({\n type: obj.type,\n status: obj.status,\n partnerId: obj.partnerId,\n }) : undefined;\n}\n","import { EncryptedPatient, Patient, PotentiallyEncryptedPatient } from '../models/Patient'\nimport { Patient as PatientDto } from '@icure/api'\nimport { forceUuid, map, mapSet, mapSetToArray, toMapArrayTransform, toMapSetTransform } from './utils'\nimport { IdentifierDtoMapper } from './identifier'\nimport { CodeStubDtoMapper } from './codeStubCodingReference'\nimport { PersonNameDtoMapper } from './personName'\nimport { PatientHealthCarePartyDtoMapper } from './patientHealthcareParty'\nimport { PropertyStubMapper } from './property'\nimport { SystemMetaDataOwnerEncrypted } from '../models/SystemMetaDataOwnerEncrypted'\nimport { AddressMapper } from './address'\nimport { DelegationMapper } from './delegation'\nimport { PartnershipDtoMapper } from './partnership'\n\nimport toIdentifier = IdentifierDtoMapper.toIdentifier\nimport toCodeStub = CodeStubDtoMapper.toCodeStub\nimport toPersonNameDto = PersonNameDtoMapper.toPersonNameDto\nimport toCodingReference = CodeStubDtoMapper.toCodingReference\nimport toPersonName = PersonNameDtoMapper.toPersonName\nimport toPatientHealthCareParty = PatientHealthCarePartyDtoMapper.toPatientHealthCareParty\nimport toProperty = PropertyStubMapper.toProperty\nimport toPropertyStubDto = PropertyStubMapper.toPropertyStubDto\nimport toPatientHealthCarePartyDto = PatientHealthCarePartyDtoMapper.toPatientHealthCarePartyDto\nimport toAddressDto = AddressMapper.toAddressDto\nimport toDelegation = DelegationMapper.toDelegation\nimport toPartnershipDto = PartnershipDtoMapper.toPartnershipDto\nimport toDelegationDto = DelegationMapper.toDelegationDto\nimport toPartnership = PartnershipDtoMapper.toPartnership\nimport toAddress = AddressMapper.toAddress\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace PatientMapper {\n import toSystemMetaDataOwnerEncrypted = SystemMetaDataMapper.toSystemMetaDataOwnerEncrypted\n import toSystemMetaDataOwnerEncryptedDto = SystemMetaDataMapper.toSystemMetaDataOwnerEncryptedDto\n export const toPatient = (obj?: PatientDto) =>\n obj\n ? new Patient({\n id: obj.id,\n identifiers: map(obj.identifier, toIdentifier),\n labels: mapSet(new Set(obj.tags), toCodingReference),\n codes: mapSet(new Set(obj.codes), toCodingReference),\n names: map(obj.names, toPersonName),\n languages: obj.languages,\n addresses: map(obj.addresses, toAddress),\n mergedIds: new Set(obj.mergedIds),\n active: obj.active,\n deactivationReason: obj.deactivationReason,\n partnerships: map(obj.partnerships, toPartnership),\n patientHealthCareParties: map(obj.patientHealthCareParties, toPatientHealthCareParty),\n patientProfessions: map(obj.patientProfessions, toCodingReference),\n parameters: obj.parameters,\n properties: mapSet(new Set(obj.properties), toProperty),\n rev: obj.rev,\n created: obj.created,\n modified: obj.modified,\n author: obj.author,\n responsible: obj.responsible,\n endOfLife: obj.endOfLife,\n deletionDate: obj.deletionDate,\n firstName: obj.firstName,\n lastName: obj.lastName,\n companyName: obj.companyName,\n civility: obj.civility,\n gender: obj.gender,\n birthSex: obj.birthSex,\n mergeToPatientId: obj.mergeToPatientId,\n alias: obj.alias,\n ssin: obj.ssin,\n maidenName: obj.maidenName,\n spouseName: obj.spouseName,\n partnerName: obj.partnerName,\n personalStatus: obj.personalStatus,\n dateOfBirth: obj.dateOfBirth,\n dateOfDeath: obj.dateOfDeath,\n placeOfBirth: obj.placeOfBirth,\n placeOfDeath: obj.placeOfDeath,\n deceased: obj.deceased,\n education: obj.education,\n profession: obj.profession,\n note: obj.note,\n administrativeNote: obj.administrativeNote,\n nationality: obj.nationality,\n race: obj.race,\n ethnicity: obj.ethnicity,\n picture: obj.picture,\n externalId: obj.externalId,\n systemMetaData: toSystemMetaDataOwnerEncrypted(obj),\n })\n : undefined\n\n export const toEncryptedPatient = (obj?: PatientDto) =>\n obj\n ? new EncryptedPatient({\n id: obj.id,\n identifiers: map(obj.identifier, toIdentifier),\n labels: mapSet(new Set(obj.tags), toCodingReference),\n codes: mapSet(new Set(obj.codes), toCodingReference),\n names: map(obj.names, toPersonName),\n languages: obj.languages,\n addresses: map(obj.addresses, toAddress),\n mergedIds: new Set(obj.mergedIds),\n active: obj.active,\n deactivationReason: obj.deactivationReason,\n partnerships: map(obj.partnerships, toPartnership),\n patientHealthCareParties: map(obj.patientHealthCareParties, toPatientHealthCareParty),\n patientProfessions: map(obj.patientProfessions, toCodingReference),\n parameters: obj.parameters,\n properties: mapSet(new Set(obj.properties), toProperty),\n rev: obj.rev,\n created: obj.created,\n modified: obj.modified,\n author: obj.author,\n responsible: obj.responsible,\n endOfLife: obj.endOfLife,\n deletionDate: obj.deletionDate,\n firstName: obj.firstName,\n lastName: obj.lastName,\n companyName: obj.companyName,\n civility: obj.civility,\n gender: obj.gender,\n birthSex: obj.birthSex,\n mergeToPatientId: obj.mergeToPatientId,\n alias: obj.alias,\n ssin: obj.ssin,\n maidenName: obj.maidenName,\n spouseName: obj.spouseName,\n partnerName: obj.partnerName,\n personalStatus: obj.personalStatus,\n dateOfBirth: obj.dateOfBirth,\n dateOfDeath: obj.dateOfDeath,\n placeOfBirth: obj.placeOfBirth,\n placeOfDeath: obj.placeOfDeath,\n deceased: obj.deceased,\n education: obj.education,\n profession: obj.profession,\n note: obj.note,\n administrativeNote: obj.administrativeNote,\n nationality: obj.nationality,\n race: obj.race,\n ethnicity: obj.ethnicity,\n picture: obj.picture,\n externalId: obj.externalId,\n systemMetaData: toSystemMetaDataOwnerEncrypted(obj),\n })\n : undefined\n\n export const toPatientDto = (obj?: PotentiallyEncryptedPatient) =>\n obj\n ? new PatientDto({\n id: forceUuid(obj.id),\n identifier: obj.identifiers,\n tags: mapSetToArray(obj.labels, toCodeStub),\n codes: mapSetToArray(obj.codes, toCodeStub),\n names: map(obj.names, toPersonNameDto),\n languages: obj.languages,\n addresses: map(obj.addresses, toAddressDto),\n mergedIds: mapSetToArray(obj.mergedIds, (id) => id),\n active: obj.active,\n deactivationReason: obj.deactivationReason,\n partnerships: map(obj.partnerships, toPartnershipDto),\n patientHealthCareParties: map(obj.patientHealthCareParties, toPatientHealthCarePartyDto),\n patientProfessions: map(obj.patientProfessions, toCodeStub),\n parameters: obj.parameters,\n properties: mapSetToArray(obj.properties, toPropertyStubDto),\n rev: obj.rev,\n created: obj.created,\n modified: obj.modified,\n author: obj.author,\n responsible: obj.responsible,\n endOfLife: obj.endOfLife,\n deletionDate: obj.deletionDate,\n firstName: obj.firstName,\n lastName: obj.lastName,\n companyName: obj.companyName,\n civility: obj.civility,\n gender: obj.gender,\n birthSex: obj.birthSex,\n mergeToPatientId: obj.mergeToPatientId,\n alias: obj.alias,\n ssin: obj.ssin,\n maidenName: obj.maidenName,\n spouseName: obj.spouseName,\n partnerName: obj.partnerName,\n personalStatus: obj.personalStatus,\n dateOfBirth: obj.dateOfBirth,\n dateOfDeath: obj.dateOfDeath,\n placeOfBirth: obj.placeOfBirth,\n placeOfDeath: obj.placeOfDeath,\n deceased: obj.deceased,\n education: obj.education,\n profession: obj.profession,\n note: obj.note,\n administrativeNote: obj.administrativeNote,\n nationality: obj.nationality,\n race: obj.race,\n ethnicity: obj.ethnicity,\n picture: obj.picture,\n externalId: obj.externalId,\n ...(obj.systemMetaData ? toSystemMetaDataOwnerEncryptedDto(obj.systemMetaData) : {}),\n })\n : undefined\n}\n","import {PatientHealthCareParty} from \"../models/PatientHealthCareParty\";\nimport {PatientHealthCareParty as PatientHealthCarePartyDto} from \"@icure/api\";\n\nexport namespace PatientHealthCarePartyDtoMapper {\n export const toPatientHealthCareParty = (obj?: PatientHealthCarePartyDto) => obj ? new PatientHealthCareParty({\n type: obj.type,\n healthcarePartyId: obj.healthcarePartyId,\n }) : undefined;\n\n export const toPatientHealthCarePartyDto = (obj?: PatientHealthCareParty) => obj ? new PatientHealthCarePartyDto({\n type: obj.type,\n healthcarePartyId: obj.healthcarePartyId,\n }) : undefined;\n}\n","import {PersonName} from \"../models/PersonName\";\nimport {PersonName as PersonNameDto} from \"@icure/api\";\n\nexport namespace PersonNameDtoMapper {\n export const toPersonName = (obj?: PersonNameDto) => obj ? new PersonName({\n firstNames: obj.firstNames,\n prefix: obj.prefix,\n suffix: obj.suffix,\n lastName: obj.lastName,\n start: obj.start,\n end: obj.end,\n text: obj.text,\n use: obj.use,\n }) : undefined;\n\n export const toPersonNameDto = (obj?: PersonName) => obj ? new PersonNameDto({\n firstNames: obj.firstNames,\n prefix: obj.prefix,\n suffix: obj.suffix,\n lastName: obj.lastName,\n start: obj.start,\n end: obj.end,\n text: obj.text,\n use: obj.use,\n }) : undefined;\n}\n","import {PropertyStub} from \"@icure/api\";\nimport {Property} from \"../models/Property\";\nimport {PropertyTypeStubMapper} from \"./propertyType\";\nimport {TypedValueObjectMapper} from \"./typedValueObject\";\n\nexport namespace PropertyStubMapper {\n import toPropertyType = PropertyTypeStubMapper.toPropertyType;\n import toPropertyTypeStubDto = PropertyTypeStubMapper.toPropertyTypeStubDto;\n\n import toTypedValueObject = TypedValueObjectMapper.toTypedValueObject;\n import toTypedValueDtoObject = TypedValueObjectMapper.toTypedValueDtoObject;\n\n export const toProperty = (obj?: PropertyStub) => obj ? new Property({\n id: obj.id,\n type: toPropertyType(obj.type),\n typedValue: toTypedValueObject(obj.typedValue),\n deleted: obj.deletionDate,\n }) : undefined;\n\n export const toPropertyStubDto = (obj?: Property) => obj ? new PropertyStub({\n id: obj.id,\n type: toPropertyTypeStubDto(obj.type),\n typedValue: toTypedValueDtoObject(obj.typedValue),\n deletionDate: obj.deleted,\n }) : undefined;\n}\n","import {PropertyTypeStub} from \"@icure/api\";\nimport {PropertyType} from \"../models/PropertyType\";\n\nexport namespace PropertyTypeStubMapper {\nexport const toPropertyType = (obj?: PropertyTypeStub) => obj ? new PropertyType({\n identifier: obj.identifier,\n type: obj.type,\n}) : undefined;\n\n export const toPropertyTypeStubDto = (obj?: PropertyType) => obj ? new PropertyTypeStub({\n identifier: obj.identifier,\n type: obj.type,\n }) : undefined;\n\n}\n","import { forceUuid, map, mapReduce, mapSet, mapSetToArray, toMapSetTransform } from './utils'\nimport { Content as ContentDto, Measure as MeasureDto, Service, SubContact } from '@icure/api'\nimport { DataSample } from '../models/DataSample'\nimport { Content } from '../models/Content'\nimport { Measure } from '../models/Measure'\nimport { TimeSeriesMapper } from './timeSeries'\nimport { CodeStubDtoMapper } from './codeStubCodingReference'\nimport { IdentifierDtoMapper } from './identifier'\nimport { SystemMetaDataEncrypted } from '../models/SystemMetaDataEncrypted'\nimport { DelegationMapper } from './delegation'\nimport { filterUndefined } from '../utils/filterUndefined'\nimport { SystemMetaDataMapper } from './metadata'\n\nexport namespace DataSampleMapper {\n import toTimeSeries = TimeSeriesMapper.toTimeSeries\n import toTimeSeriesDto = TimeSeriesMapper.toTimeSeriesDto\n import toCodingReference = CodeStubDtoMapper.toCodingReference\n import toCodeStub = CodeStubDtoMapper.toCodeStub\n import toIdentifier = IdentifierDtoMapper.toIdentifier\n import toIdentifierDto = IdentifierDtoMapper.toIdentifierDto\n import toDelegation = DelegationMapper.toDelegation\n import toSystemMetaDataEncrypted = SystemMetaDataMapper.toSystemMetaDataEncrypted\n\n export const toDataSample = (obj?: Service, batchId?: string, subContacts?: SubContact[]) =>\n obj\n ? new DataSample(\n filterUndefined({\n id: obj.id,\n identifiers: map(obj.identifier, toIdentifier),\n content: mapReduce(obj.content, toContent),\n qualifiedLinks: obj.qualifiedLinks,\n codes: mapSet(new Set(obj.codes), toCodingReference),\n labels: mapSet(new Set(obj.tags), toCodingReference),\n transactionId: obj.transactionId,\n batchId: obj.contactId ?? batchId,\n healthcareElementIds: mapSet(\n new Set(\n obj.healthElementsIds\n ? obj.healthElementsIds\n : subContacts?.filter((subContact) => subContact.healthElementId)?.map((subContact) => subContact.healthElementId!)\n ),\n (id) => id\n ),\n canvasesIds: mapSet(\n new Set(subContacts ? subContacts.filter((subContact) => subContact.formId).map((subContact) => subContact.formId!) : obj.formIds),\n (id) => id\n ),\n index: obj.index,\n valueDate: obj.valueDate,\n openingDate: obj.openingDate,\n closingDate: obj.closingDate,\n created: obj.created,\n modified: obj.modified,\n endOfLife: obj.endOfLife,\n author: obj.author,\n responsible: obj.responsible,\n comment: obj.comment,\n systemMetaData: toSystemMetaDataEncrypted(obj),\n })\n )\n : undefined\n\n export const toContent = (obj?: ContentDto): Content | undefined =>\n obj\n ? new Content(\n filterUndefined({\n stringValue: obj.stringValue,\n numberValue: obj.numberValue,\n booleanValue: obj.booleanValue,\n instantValue: obj.instantValue,\n fuzzyDateValue: obj.fuzzyDateValue,\n binaryValue: obj.binaryValue,\n documentId: obj.documentId,\n measureValue: toMeasure(obj.measureValue),\n timeSeries: toTimeSeries(obj.timeSeries),\n compoundValue: map(obj.compoundValue, (it) => toDataSample(it)),\n ratio: map(obj.ratio, toMeasure),\n range: map(obj.ratio, toMeasure),\n })\n )\n : undefined\n\n export const toMeasure = (obj?: MeasureDto) =>\n obj\n ? new Measure(\n filterUndefined({\n value: obj.value,\n min: obj.min,\n max: obj.max,\n ref: obj.ref,\n severity: obj.severity,\n severityCode: obj.severityCode,\n evolution: obj.evolution,\n unit: obj.unit,\n unitCodes: mapSet(new Set(obj.unitCodes), toCodingReference),\n comment: obj.comment,\n comparator: obj.comparator,\n })\n )\n : undefined\n\n export const toServiceDto = (obj?: DataSample, batchId?: string) =>\n obj\n ? new Service(\n filterUndefined({\n id: forceUuid(obj.id),\n identifier: map(obj.identifiers, toIdentifierDto),\n content: mapReduce(obj.content, toContentDto),\n qualifiedLinks: obj.qualifiedLinks,\n codes: mapSetToArray(obj.codes, toCodeStub),\n tags: mapSetToArray(obj.labels, toCodeStub),\n healthElementsIds: mapSetToArray(obj.healthcareElementIds, (id) => id),\n formIds: mapSetToArray(obj.canvasesIds, (id) => id),\n transactionId: obj.transactionId,\n contactId: obj.batchId ?? batchId,\n index: obj.index,\n valueDate: obj.valueDate,\n openingDate: obj.openingDate,\n closingDate: obj.closingDate,\n created: obj.created,\n modified: obj.modified,\n endOfLife: obj.endOfLife,\n author: obj.author,\n responsible: obj.responsible,\n comment: obj.comment,\n /*\n * A user without encryption key may update the non-encrypted data of a service. In this case we need to\n * make sure we don't delete the encrypted data. Other metadata is ignored, we keep that of the original\n * contact\n * TODO TEST THIS\n */\n ...(obj.systemMetaData ? SystemMetaDataMapper.toSystemMetaDataEncryptedDto(obj.systemMetaData) : {}),\n })\n )\n : undefined\n\n export const toContentDto = (obj?: Content): ContentDto | undefined =>\n obj\n ? new ContentDto(\n filterUndefined({\n stringValue: obj.stringValue,\n numberValue: obj.numberValue,\n booleanValue: obj.booleanValue,\n instantValue: obj.instantValue,\n fuzzyDateValue: obj.fuzzyDateValue,\n binaryValue: obj.binaryValue,\n documentId: obj.documentId,\n measureValue: toMeasureDto(obj.measureValue),\n timeSeries: toTimeSeriesDto(obj.timeSeries),\n compoundValue: map(obj.compoundValue, toServiceDto),\n ratio: map(obj.ratio, toMeasureDto),\n range: map(obj.range, toMeasureDto),\n })\n )\n : undefined\n\n export const toMeasureDto = (obj?: Measure) =>\n obj\n ? new MeasureDto(\n filterUndefined({\n value: obj.value,\n min: obj.min,\n max: obj.max,\n ref: obj.ref,\n severity: obj.severity,\n severityCode: obj.severityCode,\n evolution: obj.evolution,\n unit: obj.unit,\n unitCodes: mapSetToArray(obj.unitCodes, toCodeStub),\n comment: obj.comment,\n comparator: obj.comparator,\n })\n )\n : undefined\n}\n","import {TimeSeries as TimeSeriesDto} from \"@icure/api\";\nimport {TimeSeries} from \"../models/TimeSeries\";\n\nexport namespace TimeSeriesMapper {\n export const toTimeSeries = (obj?: TimeSeriesDto) => obj ? new TimeSeries({\n fields: obj.fields,\n samples: obj.samples,\n min: obj.min,\n max: obj.max,\n mean: obj.mean,\n median: obj.median,\n variance: obj.variance,\n }): undefined;\n\n export const toTimeSeriesDto = (obj?: TimeSeries) => obj ? new TimeSeriesDto({\n fields: obj.fields,\n samples: obj.samples,\n min: obj.min,\n max: obj.max,\n mean: obj.mean,\n median: obj.median,\n variance: obj.variance,\n }): undefined;\n}\n","import {TypedValueObject} from \"../models/TypedValueObject\";\nimport {TypedValueObject as TypedValueDtoObject} from \"@icure/api\";\n\nexport namespace TypedValueObjectMapper {\n export const toTypedValueObject = (obj?: TypedValueDtoObject) => obj ? new TypedValueObject({\n type: obj.type,\n booleanValue: obj.booleanValue,\n integerValue: obj.integerValue,\n doubleValue: obj.doubleValue,\n stringValue: obj.stringValue,\n dateValue: obj.dateValue,\n }) : undefined;\n\n export const toTypedValueDtoObject = (obj?: TypedValueObject) => obj ? new TypedValueDtoObject({\n type: obj.type,\n booleanValue: obj.booleanValue,\n integerValue: obj.integerValue,\n doubleValue: obj.doubleValue,\n stringValue: obj.stringValue,\n dateValue: obj.dateValue,\n }) : undefined;\n}\n","import {User as UserDto} from \"@icure/api\";\nimport {SharedDataType, User} from \"../models/User\";\nimport {forceUuid, map, mapReduce, mapSetToArray, toMapSet} from \"./utils\";\nimport {PropertyStubMapper} from \"./property\";\nimport {AuthenticationTokenMapper} from \"./authenticationToken\";\n\nexport namespace UserMapper {\n import toPropertyStubDto = PropertyStubMapper.toPropertyStubDto;\n import toProperty = PropertyStubMapper.toProperty;\n import toAuthenticationTokenDto = AuthenticationTokenMapper.toAuthenticationTokenDto;\n import toAuthenticationToken = AuthenticationTokenMapper.toAuthenticationToken;\n\n export const toUser = (obj?: UserDto) => obj ?\n new User({\n id: obj.id,\n properties: new Set(map(obj.properties, toProperty)),\n roles: new Set(obj.roles),\n sharingDataWith: toMapSet(obj.autoDelegations) as { [key in SharedDataType]: Set; } | undefined,\n authenticationTokens: mapReduce(obj.authenticationTokens, toAuthenticationToken),\n rev: obj.rev,\n deletionDate: obj.deletionDate,\n created: obj.created,\n name: obj.name,\n login: obj.login,\n passwordHash: obj.passwordHash,\n secret: obj.secret,\n use2fa: obj.use2fa,\n groupId: obj.groupId,\n healthcarePartyId: obj.healthcarePartyId,\n patientId: obj.patientId,\n deviceId: obj.deviceId,\n email: obj.email,\n mobilePhone: obj.mobilePhone,\n }) : undefined;\n\n export const toUserDto = (obj?: User) => obj ?\n new UserDto({\n id: forceUuid(obj.id),\n properties: mapSetToArray(obj.properties, toPropertyStubDto),\n roles: [...obj?.roles ?? []],\n autoDelegations: mapReduce(obj.sharingDataWith, (elements: Set) => mapSetToArray(elements, (e) => e)),\n authenticationTokens: mapReduce(obj.authenticationTokens, toAuthenticationTokenDto),\n rev: obj.rev,\n deletionDate: obj.deletionDate,\n created: obj.created,\n name: obj.name,\n login: obj.login,\n passwordHash: obj.passwordHash,\n secret: obj.secret,\n use2fa: obj.use2fa,\n groupId: obj.groupId,\n healthcarePartyId: obj.healthcarePartyId,\n patientId: obj.patientId,\n deviceId: obj.deviceId,\n email: obj.email,\n mobilePhone: obj.mobilePhone,\n }) : undefined;\n}\n","import { v4 as uuid, validate as isUuid } from 'uuid'\n\nexport function forceUuid(id?: string): string {\n if (id) {\n if (!isUuid(id)) {\n throw Error('Invalid id, id must be a valid UUID')\n }\n return id\n } else {\n return uuid()\n }\n}\n\nexport function isCodeId(id?: string): boolean {\n const codeRegex = new RegExp(`[a-zA-Z0-9]{0,80}\\\\|[a-zA-Z0-9.-]{0,80}\\\\|[a-zA-Z0-9.]{0,80}`)\n return id != undefined && codeRegex.test(id)\n}\n\nexport function toMap(entries: [key: string, value: V][]): { [key: string]: V } {\n return entries.reduce((m, [k, v]) => {\n m[k] = v\n return m\n }, {} as { [key: string]: V })\n}\n\nexport function mapReduce(map: { [key: string]: I } | undefined, mapper: (obj: I) => O | undefined): { [key: string]: O } | undefined {\n if (!map) {\n return undefined\n }\n return Object.entries(map)\n .map(([k, v]) => [k, mapper(v)!] as [string, O])\n .reduce((m, [k, v]) => {\n m[k] = v\n return m\n }, {} as { [key: string]: O })\n}\n\nexport function mapSet(set: Set | undefined, mapper: (obj: I) => O | undefined): Set | undefined {\n if (!set) {\n return undefined\n }\n const arr: I[] = Array.from(set)\n return new Set(arr.map((it) => mapper(it)!))\n}\n\nexport function mapSetToArray(set: Set | undefined, mapper: (obj: I) => O | undefined): Array | undefined {\n if (!set) {\n return undefined\n }\n const arr: I[] = Array.from(set)\n return arr.map((it) => mapper(it)!)\n}\n\nexport function map(arr: I[] | undefined, mapper: (obj: I) => O | undefined): O[] | undefined {\n if (!arr) {\n return undefined\n }\n return arr.map((it) => mapper(it)!)\n}\n\nexport function toMapTransform(map: { [key: string]: I } | undefined, mapper: (obj: I) => O | undefined): { [key: string]: O } | undefined {\n if (!map) {\n return undefined\n }\n return Object.fromEntries(Object.entries(map).map(([k, v]) => [k, mapper(v)!]))\n}\n\nexport function toMapArrayTransform(\n map: { [key: string]: Iterable } | undefined,\n mapper: (obj: I) => O | undefined\n): { [key: string]: O[] } | undefined {\n if (!map) {\n return undefined\n }\n return Object.entries(map)\n .map(([k, v]) => [k, Array.from(Array.from(v).map((it) => mapper(it)!))] as [string, O[]])\n .reduce((m, [k, v]) => {\n m[k] = v\n return m\n }, {} as { [key: string]: O[] })\n}\n\nexport function toMapSetTransform(\n map: { [key: string]: Iterable } | undefined,\n mapper: (obj: I) => O | undefined\n): { [key: string]: Set } | undefined {\n if (!map) {\n return undefined\n }\n return Object.entries(map)\n .map(([k, v]) => [k, new Set(Array.from(v).map((it) => mapper(it)!))] as [string, Set])\n .reduce((m, [k, v]) => {\n m[k] = v\n return m\n }, {} as { [key: string]: Set })\n}\n\nexport function toMapSet(map: { [key: string]: Iterable } | undefined): { [key: string]: Set } | undefined {\n return toMapSetTransform(map, (i) => i)\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {Telecom} from './Telecom';\n\n/**\n* the list of addresses (with address type).\n*/\nexport class Address {\nconstructor(json: IAddress) {\n const { addressType, telecoms, ...simpleProperties } = json\n\n Object.assign(this as Address, simpleProperties)\n\n this.addressType = addressType as AddressAddressTypeEnum\n this.telecoms = telecoms?.map(t => new Telecom(t)) ?? []\n}\n\n 'addressType'?: AddressAddressTypeEnum;\n 'description'?: string;\n 'street'?: string;\n 'houseNumber'?: string;\n 'postboxNumber'?: string;\n 'postalCode'?: string;\n 'city'?: string;\n 'state'?: string;\n 'country'?: string;\n 'note'?: string;\n 'telecoms': Array;\n\n marshal(): IAddress {\n return {\n ...this,\n telecoms: this.telecoms.map(t => t.marshal()),\n }\n }\n}\n\ninterface IAddress {\n 'addressType'?: AddressAddressTypeEnum;\n 'description'?: string;\n 'street'?: string;\n 'houseNumber'?: string;\n 'postboxNumber'?: string;\n 'postalCode'?: string;\n 'city'?: string;\n 'state'?: string;\n 'country'?: string;\n 'note'?: string;\n 'telecoms'?: Array;\n}\n\n\nexport type AddressAddressTypeEnum = \"home\" | \"work\" | \"vacation\" | \"hospital\" | \"clinic\" | \"hq\" | \"other\" | \"temporary\" | \"postal\" | \"diplomatic\" | \"reference\" ;\n","\nexport class AuthenticationProcess {\n constructor(json: IAuthenticationProcess) {\n Object.assign(this as AuthenticationProcess, json)\n }\n\n /**\n * Id of this process used later for reference\n */\n 'requestId': string;\n /**\n * Login information\n */\n 'login': string;\n /**\n * Bypass Token Check\n */\n 'bypassTokenCheck': boolean;\n\n marshal(): IAuthenticationProcess {\n return {\n ...this,\n }\n }\n}\n\ninterface IAuthenticationProcess {\n 'requestId'?: string;\n 'bypassTokenCheck'?: boolean;\n 'login'?: string;\n}\n","import { MedTechApi } from '../apis/MedTechApi'\n\nexport class AuthenticationResult {\n constructor(json: IAuthenticationResult) {\n Object.assign(this as AuthenticationResult, json)\n }\n\n 'medTechApi': MedTechApi\n /**\n * Available key pairs for the data owner using the api. Hex-encoded byte representation of the private key and public\n * key in pkcs8 and spki format respectively. Note that the key pairs are automatically saved in the key storage\n * implementation provided by iCure. This includes both verified and unverified key pairs.\n */\n 'keyPairs': { privateKey: string; publicKey: string }[]\n 'token': string\n 'groupId': string\n 'userId': string\n}\n\ninterface IAuthenticationResult {\n medTechApi?: MedTechApi\n keyPairs?: { privateKey: string; publicKey: string }[]\n token?: string\n groupId?: string\n userId?: string\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* Encrypted and time-limited Authentication tokens used for inter-applications authentication\n*/\nexport class AuthenticationToken {\nconstructor(json: IAuthenticationToken) {\n Object.assign(this as AuthenticationToken, json)\n}\n\n /**\n * Encrypted token\n */\n 'token': string;\n /**\n * Validity starting time of the token\n */\n 'creationTime': number;\n /**\n * Token validity in seconds\n */\n 'validity': number;\n\n marshal(): IAuthenticationToken {\n return {\n ...this,\n }\n }\n}\n\ninterface IAuthenticationToken {\n 'token'?: string;\n 'creationTime'?: number;\n 'validity'?: number;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class Coding {\nconstructor(json: ICoding) {\n const { searchTerms, ...simpleProperties } = json\n Object.assign(this as Coding, simpleProperties as ICoding)\n this.searchTerms = searchTerms ? Object.entries(searchTerms).map(([k,v]) => [k, new Set([...v])] as [string, Set]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) : {} as any\n}\n\n /**\n * the Id of the coding. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * the revision of the coding in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n 'type'?: string;\n 'code'?: string;\n /**\n * Must be lexicographically searchable\n */\n 'version'?: string;\n 'regions'?: Array;\n /**\n * Description (ex: {en: Rheumatic Aortic Stenosis, fr: Sténose rhumatoïde de l'Aorte})\n */\n 'description'?: { [key: string]: string; };\n /**\n * Links towards related codes\n */\n 'qualifiedLinks': { [key: string]: Array; };\n /**\n * Extra search terms/ language\n */\n 'searchTerms': { [key: string]: Set; };\n\n marshal(): ICoding {\n return {\n ...this,\n searchTerms: Object.entries(this.searchTerms).map(([k,v]) => [k, [...v]] as [string, Array]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) as any,\n }\n }\n}\n\ninterface ICoding {\n 'id'?: string;\n 'rev'?: string;\n 'type'?: string;\n 'code'?: string;\n 'version'?: string;\n 'regions'?: Array;\n 'description'?: { [key: string]: string; };\n 'qualifiedLinks'?: { [key: string]: Array; };\n 'searchTerms'?: { [key: string]: Set; };\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* Codified list of professions exercised by this patient.\n*/\nexport class CodingReference {\nconstructor(json: ICodingReference) {\n Object.assign(this as CodingReference, json)\n}\n\n 'id'?: string;\n 'type'?: string;\n 'code'?: string;\n 'version'?: string;\n\n marshal(): ICodingReference {\n return {\n ...this,\n }\n }\n}\n\ninterface ICodingReference {\n 'id'?: string;\n 'type'?: string;\n 'code'?: string;\n 'version'?: string;\n}\n","import { ConnectionStatus, WebSocketWrapper } from '../utils/websocket'\n\nexport interface Connection {\n close(): void\n onConnected(callback: () => void): Connection\n onClosed(callback: () => void): Connection\n onError(callback: (e?: Error) => void): Connection\n}\n\nexport class ConnectionImpl implements Connection {\n wsw: WebSocketWrapper\n connectionStatus: ConnectionStatus\n\n constructor(rs: WebSocketWrapper) {\n this.wsw = rs\n this.connectionStatus = 'NOT_CONNECTED'\n }\n\n close() {\n this.wsw.close()\n }\n\n onConnected(callback: () => void): Connection {\n this.wsw?.addStatusCallback('CONNECTED', (ws: WebSocketWrapper) => {\n this.connectionStatus = 'CONNECTED'\n callback()\n })\n return this\n }\n\n onClosed(callback: () => void): Connection {\n this.wsw?.addStatusCallback('CLOSED', (ws: WebSocketWrapper) => {\n this.connectionStatus = 'CLOSED'\n callback()\n })\n return this\n }\n\n onError(callback: (e?: Error) => void): Connection {\n this.wsw?.addStatusCallback('ERROR', (ws: WebSocketWrapper, e?: Error) => {\n this.connectionStatus = 'ERROR'\n callback(e)\n })\n return this\n }\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {DataSample} from './DataSample';\nimport {Measure} from './Measure';\nimport {TimeSeries} from './TimeSeries';\nimport {b2a, b64_2ab, ua2b64} from \"@icure/api\";\n\n/**\n* Information contained in the data sample (Measure, number, ...). Content is localized, using ISO language code as key\n*/\nexport class Content {\nconstructor(json: IContent) {\n const { binaryValue, measureValue, timeSeries, compoundValue, ratio, range, ...simpleProperties } = json\n\n Object.assign(this as Content, simpleProperties)\n\n this.binaryValue = !binaryValue ? undefined : (binaryValue as unknown instanceof ArrayBuffer) ? binaryValue : (typeof (binaryValue as unknown) === 'string') ? b64_2ab(binaryValue as unknown as string) : undefined\n this.measureValue = measureValue && new Measure(measureValue)\n this.timeSeries = timeSeries && new TimeSeries(timeSeries)\n this.compoundValue = compoundValue?.map(r => new DataSample(r)) ?? []\n this.ratio = ratio?.map(r => new Measure(r)) ?? []\n this.range = range?.map(r => new Measure(r)) ?? []\n}\n\n 'stringValue'?: string;\n 'numberValue'?: number;\n 'booleanValue'?: boolean;\n 'instantValue'?: number;\n /**\n * Value as date. The format could have a all three (day, month and year) or values on any of these three, whatever is known.\n */\n 'fuzzyDateValue'?: number;\n 'binaryValue'?: ArrayBuffer;\n /**\n * Linked document.\n */\n 'documentId'?: string;\n 'measureValue'?: Measure;\n 'timeSeries'?: TimeSeries;\n 'compoundValue'?: Array;\n 'ratio'?: Array;\n 'range'?: Array;\n\n marshal(): IContent {\n return {\n ...this,\n binaryValue: this.binaryValue ? ua2b64(this.binaryValue) : undefined,\n measureValue: this.measureValue?.marshal(),\n timeSeries: this.timeSeries?.marshal(),\n compoundValue: this.compoundValue?.map(r => r.marshal()),\n ratio: this.ratio?.map(r => r.marshal()),\n range: this.range?.map(r => r.marshal()),\n }\n }\n\n}\n\ninterface IContent {\n 'stringValue'?: string;\n 'numberValue'?: number;\n 'booleanValue'?: boolean;\n 'instantValue'?: number;\n 'fuzzyDateValue'?: number;\n 'binaryValue'?: ArrayBuffer;\n 'documentId'?: string;\n 'measureValue'?: Measure;\n 'timeSeries'?: TimeSeries;\n 'compoundValue'?: Array;\n 'ratio'?: Array;\n 'range'?: Array;\n}\n","import { PotentiallyEncryptedPatient } from './Patient'\nimport { HealthcareProfessional } from './HealthcareProfessional'\nimport { MedicalDevice } from './MedicalDevice'\n\nexport enum DataOwnerTypeEnum {\n Patient = 'Patient',\n HealthcareProfessional = 'HealthcareProfessional',\n MedicalDevice = 'MedicalDevice',\n}\nexport type DataOwner = PotentiallyEncryptedPatient | HealthcareProfessional | MedicalDevice\nexport type DataOwnerWithType =\n | { type: DataOwnerTypeEnum.Patient; dataOwner: PotentiallyEncryptedPatient }\n | { type: DataOwnerTypeEnum.HealthcareProfessional; dataOwner: HealthcareProfessional }\n | { type: DataOwnerTypeEnum.MedicalDevice; dataOwner: MedicalDevice }\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {CodingReference} from './CodingReference';\nimport {Content} from './Content';\nimport {Identifier} from './Identifier';\nimport {SystemMetaDataEncrypted} from \"./SystemMetaDataEncrypted\";\nimport {SystemMetaDataOwnerEncrypted} from \"./SystemMetaDataOwnerEncrypted\";\n\n/**\n* A Data Sample represents a medical information, provided by a Data Owner concerning one specific [Patient], for a T moment. Provided by a Data Owner means that the data sample may have been either provided by a [HealthcareProfessional] or a [Patient], either collected by a [MedicalDevice]. Data Samples provided by the patient include subjective information, such as complaints, reason for visit, feelings, etc. or objective information like bio-metric measures (blood pressure, temperature, heart beat, etc.), or physical exam description, diagnosis, prescription, integration of lab reports from another [HealthcareProfessional], action plan, etc. Any action performed by the [HealthcareProfessional] (which is relevant for a [HealthcareElement] of a [Patient]) is considered as a [DataSample]. The data samples can be linked to healthcare elements or other structuring elements of the medical record\n*/\nexport class DataSample {\nconstructor(json: IDataSample) {\n const { identifiers, healthcareElementIds, canvasesIds, content, codes, labels, systemMetaData, ...simpleProperties } = json\n\n Object.assign(this as DataSample, simpleProperties as IDataSample)\n\n this.identifiers = identifiers?.map((item) => new Identifier(item)) ?? []\n this.healthcareElementIds = healthcareElementIds ? new Set([...healthcareElementIds]) : new Set()\n this.canvasesIds = canvasesIds ? new Set([...canvasesIds]) : new Set()\n this.content = content ? Object.entries(content).map(([k,v]) => [k, new Content(v)] as [string, Content]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) : {}\n this.codes = codes ? new Set([...codes].map((it)=> new CodingReference(it))) : new Set()\n this.labels = labels ? new Set([...labels].map((it)=> new CodingReference(it))) : new Set()\n this.systemMetaData = systemMetaData && new SystemMetaDataOwnerEncrypted(systemMetaData)\n}\n\n /**\n * The Id of the Data sample. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * The transactionId is used when a single data sample had to be split into parts for technical reasons. Several data samples with the same non null transaction id form one single data sample\n */\n 'transactionId'?: string;\n /**\n * Typically used for business / client identifiers. An identifier should identify a data sample uniquely and unambiguously. However, iCure can't guarantee the uniqueness of those identifiers : This is something you need to take care of.\n */\n 'identifiers': Array;\n /**\n * Id of the batch that embeds this data sample\n */\n 'batchId'?: string;\n /**\n * List of IDs of all healthcare elements for which the data sample is provided. Only used when the Data sample is emitted outside of its batch\n */\n 'healthcareElementIds'?: Set;\n /**\n * List of Ids of all canvases linked to the Data sample. Only used when the Data sample is emitted outside of its batch.\n */\n 'canvasesIds'?: Set;\n /**\n * Used for sorting data samples inside an upper object (A batch, a transaction, a FHIR bundle, ...)\n */\n 'index'?: number;\n /**\n * Information contained in the data sample (Measure, number, ...). Content is localized, using ISO language code as key\n */\n 'content': { [key: string]: Content; };\n /**\n * The date (YYYYMMDDhhmmss) when the Data sample is noted to have started and also closes on the same date\n */\n 'valueDate'?: number;\n /**\n * The date (YYYYMMDDhhmmss) of the start of the Data sample\n */\n 'openingDate'?: number;\n /**\n * The date (YYYYMMDDhhmmss) marking the end of the Data sample\n */\n 'closingDate'?: number;\n /**\n * The timestamp (unix epoch in ms) of creation of this data sample in iCure system. Will be filled automatically if not provided.\n */\n 'created'?: number;\n /**\n * The timestamp (unix epoch in ms) of the latest modification of this data sample in iCure system. Will be filled automatically if not provided.\n */\n 'modified'?: number;\n /**\n * Soft delete (unix epoch in ms) timestamp of the data sample\n */\n 'endOfLife'?: number;\n /**\n * The id of the [User] that created this data sample. When creating the data sample, will be filled automatically by the current user id if not provided.\n */\n 'author'?: string;\n /**\n * The id of the data owner that is responsible of this data sample. When creating the data sample, will be filled automatically by the current user data owner id ([HealthcareProfessional], [Patient] or [MedicalDevice]) if missing\n */\n 'responsible'?: string;\n /**\n * Text, comments on the Data sample provided\n */\n 'comment'?: string;\n /**\n * Links towards related data samples (possibly in other batches)\n */\n 'qualifiedLinks': { [key: string]: { [key: string]: string; }; };\n /**\n * A code is an item from a codification system that qualifies the content of this data sample. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n 'codes': Set;\n /**\n * A label is an item from a codification system that qualifies a data sample as being member of a certain class, whatever the value it might have taken. If the label qualifies the content of a field, it means that whatever the content of the field, the label will always apply. LOINC is a codification system typically used for labels.\n */\n 'labels': Set;\n 'systemMetaData'?: SystemMetaDataEncrypted;\n\n marshal(): IDataSample {\n return {\n ...this,\n identifiers: this.identifiers?.map((item) => item.marshal()),\n healthcareElementIds: this.healthcareElementIds ? Array.from(this.healthcareElementIds) : undefined,\n canvasesIds: this.canvasesIds ? Array.from(this.canvasesIds) : undefined,\n content: this.content ? Object.entries(this.content).map(([k,v]) => [k, v.marshal()] as [string, Content]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) : undefined,\n codes: this.codes ? Array.from(this.codes).map((it)=> it.marshal()) : undefined,\n labels: this.labels ? Array.from(this.labels).map((it)=> it.marshal()) : undefined,\n systemMetaData: this.systemMetaData ? this.systemMetaData.marshal() : undefined\n }\n }\n\n}\n\ninterface IDataSample {\n 'id'?: string;\n 'transactionId'?: string;\n 'identifiers'?: Array;\n 'batchId'?: string;\n 'healthcareElementIds'?: Set;\n 'canvasesIds'?: Set;\n 'index'?: number;\n 'content'?: { [key: string]: Content; };\n 'valueDate'?: number;\n 'openingDate'?: number;\n 'closingDate'?: number;\n 'created'?: number;\n 'modified'?: number;\n 'endOfLife'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'comment'?: string;\n 'qualifiedLinks'?: { [key: string]: { [key: string]: string; }; };\n 'codes'?: Set;\n 'labels'?: Set;\n 'systemMetaData'?: SystemMetaDataEncrypted;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class Delegation {\nconstructor(json: IDelegation) {\n Object.assign(this as Delegation, json)\n}\n\n 'tags': Array;\n 'owner'?: string;\n 'delegatedTo'?: string;\n 'key'?: string;\n\n marshal(): IDelegation {\n return {\n ...this,\n }\n }\n}\n\ninterface IDelegation {\n 'tags'?: Array;\n 'owner'?: string;\n 'delegatedTo'?: string;\n 'key'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class Document {\nconstructor(json: IDocument) {\n const { otherUtis, ...simpleProperties } = json\n\n Object.assign(this as Document, simpleProperties as IDocument)\n\n this.otherUtis = otherUtis ? new Set([...otherUtis]) : new Set()\n}\n\n /**\n * The Id of the document. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * The revision of the document in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n 'created'?: number;\n 'modified'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'medicalLocationId'?: string;\n 'deletionDate'?: number;\n /**\n * Reference in object store\n */\n 'objectStoreReference'?: string;\n /**\n * The main Uniform Type Identifier of the document (https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html#//apple_ref/doc/uid/TP40001319-CH202-CHDHIJDE)\n */\n 'mainUti'?: string;\n /**\n * Name of the document\n */\n 'name'?: string;\n /**\n * The document version\n */\n 'version'?: string;\n /**\n * Extra Uniform Type Identifiers\n */\n 'otherUtis': Set;\n /**\n * A unique external id (from another external source).\n */\n 'externalUuid'?: string;\n /**\n * Size of the document file\n */\n 'size'?: number;\n /**\n * Hashed version of the document\n */\n 'hash'?: string;\n /**\n * Id of attachment to this document\n */\n 'attachmentId'?: string;\n\n marshal(): IDocument {\n return {\n ...this,\n otherUtis: [...this.otherUtis],\n }\n }\n\n}\n\ninterface IDocument {\n 'id'?: string;\n 'rev'?: string;\n 'created'?: number;\n 'modified'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'medicalLocationId'?: string;\n 'deletionDate'?: number;\n 'objectStoreReference'?: string;\n 'mainUti'?: string;\n 'name'?: string;\n 'version'?: string;\n 'otherUtis'?: Set;\n 'externalUuid'?: string;\n 'size'?: number;\n 'hash'?: string;\n 'attachmentId'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class Filter {\nconstructor(json: IFilter) {\n Object.assign(this as Filter, json)\n}\n\n 'description': string;\n\n marshal(): IFilter {\n return {\n ...this,\n }\n }\n}\n\ninterface IFilter {\n 'description'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {CodingReference} from './CodingReference';\nimport {Identifier} from './Identifier';\nimport {SystemMetaDataEncrypted} from './SystemMetaDataEncrypted';\nimport {Content} from \"./Content\";\n\nexport class HealthcareElement {\nconstructor(json: IHealthcareElement) {\n\n const { identifiers, codes, labels, systemMetaData, ...simpleProperties } = json\n\n Object.assign(this as HealthcareElement, simpleProperties as IHealthcareElement)\n\n this.identifiers = identifiers?.map((it) => new Identifier(it)) ?? []\n this.codes = codes ? new Set([...codes].map((it)=> new CodingReference(it))) : new Set()\n this.labels = labels ? new Set([...labels].map((it)=> new CodingReference(it))) : new Set()\n this.systemMetaData = systemMetaData && new SystemMetaDataEncrypted(systemMetaData)\n}\n\n /**\n * The Id of the healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n 'identifiers': Array;\n /**\n * The revision of the healthcare element in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n 'created'?: number;\n 'modified'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'medicalLocationId'?: string;\n 'labels': Set;\n 'codes': Set;\n 'endOfLife'?: number;\n 'deletionDate'?: number;\n /**\n * The logical id of the healthcare element, used to link together different versions of the same healthcare element. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'healthcareElementId'?: string;\n /**\n * The date (unix epoch in ms) when the healthcare element is noted to have started and also closes on the same date\n */\n 'valueDate'?: number;\n /**\n * The date (unix epoch in ms) of the start of the healthcare element.\n */\n 'openingDate'?: number;\n /**\n * The date (unix epoch in ms) marking the end of the healthcare element.\n */\n 'closingDate'?: number;\n /**\n * Description of the healthcare element.\n */\n 'description'?: string;\n /**\n * A text note (can be confidential, encrypted by default).\n */\n 'note'?: string;\n 'systemMetaData'?: SystemMetaDataEncrypted;\n\n marshal(): IHealthcareElement {\n return {\n ...this,\n codes: [...this.codes].map((it)=> it.marshal()),\n labels: [...this.labels].map((it)=> it.marshal()),\n systemMetaData: this.systemMetaData && this.systemMetaData.marshal(),\n }\n }\n\n}\n\ninterface IHealthcareElement {\n 'id'?: string;\n 'identifiers'?: Array;\n 'rev'?: string;\n 'created'?: number;\n 'modified'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'medicalLocationId'?: string;\n 'labels'?: Set;\n 'codes'?: Set;\n 'endOfLife'?: number;\n 'deletionDate'?: number;\n 'healthcareElementId'?: string;\n 'valueDate'?: number;\n 'openingDate'?: number;\n 'closingDate'?: number;\n 'description'?: string;\n 'note'?: string;\n 'systemMetaData'?: SystemMetaDataEncrypted;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {Address} from './Address';\nimport {CodingReference} from './CodingReference';\nimport {PersonName} from './PersonName';\nimport {Property} from './Property';\nimport {SystemMetaDataOwner} from './SystemMetaDataOwner';\nimport {SystemMetaDataEncrypted} from \"./SystemMetaDataEncrypted\";\nimport {b64_2ab, ua2b64} from \"@icure/api\";\n\nexport class HealthcareProfessional {\nconstructor(json: IHealthcareProfessional) {\n const { labels, codes, names, gender, addresses, picture, specialityCodes, properties, systemMetaData, ...simpleProperties } = json\n\n Object.assign(this as HealthcareProfessional, simpleProperties as IHealthcareProfessional)\n\n this.labels = labels ? new Set([...labels].map((it)=> new CodingReference(it))) : new Set()\n this.codes = codes ? new Set([...codes].map((it)=> new CodingReference(it))) : new Set()\n\n this.names = names?.map(n => new PersonName(n)) ?? []\n this.gender = gender as HealthcareProfessionalGenderEnum\n this.addresses = addresses?.map(a => new Address(a)) ?? []\n this.picture = !picture ? undefined : (picture as unknown instanceof ArrayBuffer) ? picture : (typeof (picture as unknown) === 'string') ? b64_2ab(picture as unknown as string) : undefined\n this.specialityCodes = specialityCodes && new Set([...specialityCodes].map((it)=> new CodingReference(it)))\n this.properties = properties ? new Set(([...properties])?.map(p => new Property(p))) : new Set()\n\n this.systemMetaData = systemMetaData && new SystemMetaDataOwner(systemMetaData)\n\n}\n\n /**\n * the Id of the healthcare party. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * the revision of the healthcare party in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n /**\n * creation timestamp of the object.\n */\n 'created'?: number;\n /**\n * last modification timestamp of the object.\n */\n 'modified'?: number;\n /**\n * A label is an item from a codification system that qualifies a doctor as being member of a certain class, whatever the value it might have taken. If the label qualifies the content of a field, it means that whatever the content of the field, the label will always apply. LOINC is a codification system typically used for labels.\n * Example: HealthcareProfessional is an organisation\n */\n 'labels': Set;\n /**\n * A code is an item from a codification system that qualifies the content of this doctor.\n * Example: doctor's specialty\n */\n 'codes': Set;\n /**\n * the soft delete timestamp. When a user is ”deleted“, this is set to a non null value: the moment of the deletion\n */\n 'deletionDate'?: number;\n /**\n * The full name of the healthcare party, used mainly when the healthcare party is an organization\n */\n 'name'?: string;\n /**\n * the lastname (surname) of the healthcare party. This is the official lastname that should be used for official administrative purposes.\n */\n 'lastName'?: string;\n /**\n * the firstname (name) of the healthcare party.\n */\n 'firstName'?: string;\n /**\n * the list of all names of the healthcare party, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the healthcare party in the application\n */\n 'names': Array;\n /**\n * the gender of the healthcare party: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n 'gender'?: HealthcareProfessionalGenderEnum;\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n 'civility'?: string;\n /**\n * Medical specialty of the healthcare party\n */\n 'speciality'?: string;\n /**\n * Id of parent of the user representing the healthcare party.\n */\n 'parentId'?: string;\n /**\n * The list of addresses (with address type).\n */\n 'addresses': Array

;\n /**\n * The list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n 'languages': Array;\n /**\n * A picture usually saved in JPEG format.\n */\n 'picture'?: ArrayBuffer;\n /**\n * Medical specialty of the healthcare party codified using FHIR or Kmehr codificaiton scheme\n */\n 'specialityCodes'?: Set;\n /**\n * Text notes.\n */\n 'notes'?: string;\n 'properties': Set;\n 'systemMetaData'?: SystemMetaDataOwner;\n\n marshal(): IHealthcareProfessional {\n return {\n ...this,\n labels: this.labels ? [...this.labels].map((it)=> it.marshal()) : undefined,\n codes: this.codes ? [...this.codes].map((it)=> it.marshal()) : undefined,\n names: this.names?.map(n => n.marshal()) ?? undefined,\n addresses: this.addresses?.map(a => a.marshal()) ?? undefined,\n picture: this.picture ? ua2b64(this.picture) : undefined,\n specialityCodes: this.specialityCodes ? [...this.specialityCodes].map((it)=> it.marshal()) : undefined,\n properties: this.properties ? [...this.properties].map((it)=> it.marshal()) : undefined,\n systemMetaData: this.systemMetaData ? this.systemMetaData.marshal() : undefined,\n }\n }\n}\n\ninterface IHealthcareProfessional {\n 'id'?: string;\n 'rev'?: string;\n 'created'?: number;\n 'modified'?: number;\n 'labels'?: Set;\n 'codes'?: Set;\n 'deletionDate'?: number;\n 'name'?: string;\n 'lastName'?: string;\n 'firstName'?: string;\n 'names'?: Array;\n 'gender'?: HealthcareProfessionalGenderEnum;\n 'civility'?: string;\n 'speciality'?: string;\n 'parentId'?: string;\n 'addresses'?: Array
;\n 'languages'?: Array;\n 'picture'?: ArrayBuffer;\n 'specialityCodes'?: Set;\n 'notes'?: string;\n 'properties'?: Set;\n 'systemMetaData'?: SystemMetaDataOwner;\n}\n\n\nexport type HealthcareProfessionalGenderEnum = \"male\" | \"female\" | \"indeterminate\" | \"changed\" | \"changedToMale\" | \"changedToFemale\" | \"unknown\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {CodingReference} from './CodingReference';\n\n/**\n* Typically used for business / client identifiers. An identifier should identify a patient uniquely and unambiguously. However, iCure can't guarantee the uniqueness of those identifiers : This is something you need to take care of.\n*/\nexport class Identifier {\nconstructor(json: IIdentifier) {\n const { type, ...simpleProperties } = json\n Object.assign(this as Identifier, simpleProperties as IIdentifier)\n this.type = type && new CodingReference(type)\n}\n\n 'id'?: string;\n 'assigner'?: string;\n 'start'?: string;\n 'end'?: string;\n 'system'?: string;\n 'type'?: CodingReference;\n 'use'?: string;\n 'value'?: string;\n\n marshal(): IIdentifier {\n return {\n ...this,\n type: this.type?.marshal(),\n }\n }\n\n}\n\ninterface IIdentifier {\n 'id'?: string;\n 'assigner'?: string;\n 'start'?: string;\n 'end'?: string;\n 'system'?: string;\n 'type'?: CodingReference;\n 'use'?: string;\n 'value'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class InlineResponse403 {\nconstructor(json: IInlineResponse403) {\n Object.assign(this as InlineResponse403, json)\n}\n\n '_short'?: number;\n '_char'?: string;\n '_int'?: number;\n '_long'?: number;\n '_float'?: number;\n '_double'?: number;\n 'direct'?: boolean;\n 'readOnly'?: boolean;\n\n}\n\ninterface IInlineResponse403 {\n '_short'?: number;\n '_char'?: string;\n '_int'?: number;\n '_long'?: number;\n '_float'?: number;\n '_double'?: number;\n 'direct'?: boolean;\n 'readOnly'?: boolean;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {CodingReference} from './CodingReference';\nimport {Property} from \"./Property\";\n\nexport class Measure {\nconstructor(json: IMeasure) {\n const { unitCodes, ...simpleProperties } = json\n Object.assign(this as Measure, simpleProperties as IMeasure)\n this.unitCodes = unitCodes && new Set(([...unitCodes])?.map(p => new CodingReference(p)))\n}\n\n 'value'?: number;\n 'min'?: number;\n 'max'?: number;\n 'ref'?: number;\n 'severity'?: number;\n 'severityCode'?: string;\n 'evolution'?: number;\n 'unit'?: string;\n 'unitCodes'?: Set;\n 'comment'?: string;\n 'comparator'?: string;\n\n marshal(): IMeasure {\n return {\n ...this,\n unitCodes: this.unitCodes?.size ? [...this.unitCodes].map(p => p.marshal()) : undefined,\n }\n }\n}\n\ninterface IMeasure {\n 'value'?: number;\n 'min'?: number;\n 'max'?: number;\n 'ref'?: number;\n 'severity'?: number;\n 'severityCode'?: string;\n 'evolution'?: number;\n 'unit'?: string;\n 'unitCodes'?: Set;\n 'comment'?: string;\n 'comparator'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {CodingReference} from './CodingReference';\nimport {Identifier} from './Identifier';\nimport {Property} from './Property';\nimport {SystemMetaDataOwner} from './SystemMetaDataOwner';\nimport {PersonName} from \"./PersonName\";\nimport {Address} from \"./Address\";\nimport {b64_2ab, ua2b64} from \"@icure/api\";\nimport {HealthcareProfessionalGenderEnum} from \"./HealthcareProfessional\";\n\nexport class MedicalDevice {\nconstructor(json: IMedicalDevice) {\n const { identifiers, labels, codes, picture, properties, systemMetaData, ...simpleProperties } = json\n\n Object.assign(this as MedicalDevice, simpleProperties as IMedicalDevice)\n\n this.identifiers = identifiers?.map((item) => new Identifier(item)) ?? []\n\n this.labels = labels ? new Set([...labels].map((it)=> new CodingReference(it))) : new Set()\n this.codes = codes ? new Set([...codes].map((it)=> new CodingReference(it))) : new Set()\n\n this.picture = !picture ? undefined : (picture as unknown instanceof ArrayBuffer) ? picture : (typeof (picture as unknown) === 'string') ? b64_2ab(picture as unknown as string) : undefined\n this.properties = properties ? new Set(([...properties])?.map(p => new Property(p))) : new Set()\n\n this.systemMetaData = systemMetaData && new SystemMetaDataOwner(systemMetaData)\n}\n\n /**\n * The Id of the MedicalDevice. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * the revision of the medical device in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n /**\n * the soft delete timestamp. When a medical device is ”deleted“, this is set to a non null value: the moment of the deletion\n */\n 'deletionDate'?: number;\n /**\n * Typically used for business / client identifiers. An identifier should identify a device uniquely and unambiguously. However, iCure can't guarantee the uniqueness of those identifiers : This is something you need to take care of.\n */\n 'identifiers': Array;\n /**\n * the creation date of the medical device (encoded as epoch).\n */\n 'created'?: number;\n /**\n * the last modification date of the medical device (encoded as epoch).\n */\n 'modified'?: number;\n /**\n * The id of the [User] that created this medical device. When creating the device, this field will be filled automatically by the current user id if not provided.\n */\n 'author'?: string;\n /**\n * The id of the data owner that is responsible of this medical device. When creating the medical device, will be filled automatically by the current user data owner id ([HealthcareProfessional], [Patient] or [MedicalDevice]) if missing\n */\n 'responsible'?: string;\n /**\n * A label is an item from a codification system that qualifies a medical device as being member of a certain class, whatever the value it might have taken. If the label qualifies the content of a field, it means that whatever the content of the field, the label will always apply. LOINC is a codification system typically used for labels.\n */\n 'labels': Set;\n /**\n * A code is an item from a codification system that qualifies the content of this medical device. SNOMED-CT, ICPC-2 or ICD-10 codifications systems can be used for codes\n */\n 'codes': Set;\n /**\n * Soft delete (unix epoch in ms) timestamp of the medical device\n */\n 'endOfLife'?: number;\n /**\n * An external (from another source) id with no guarantee or requirement for unicity.\n */\n 'externalId'?: string;\n /**\n * Name of the device/application recording the data\n */\n 'name'?: string;\n /**\n * Type of device/application recording the data. (eg. \\\"smartphone\\\", \\\"watch\\\",...)\n */\n 'type'?: string;\n /**\n * Brand of the device recording the data\n */\n 'brand'?: string;\n /**\n * Model of the device recording the data\n */\n 'model'?: string;\n /**\n * Serial number of the device recording the data\n */\n 'serialNumber'?: string;\n 'parentId'?: string;\n /**\n * Picture of the device/application\n */\n 'picture'?: ArrayBuffer;\n 'properties': Set;\n 'systemMetaData'?: SystemMetaDataOwner;\n\n marshal(): IMedicalDevice {\n return {\n ...this,\n picture: this.picture ? ua2b64(this.picture) : undefined,\n labels: [...this.labels].map((it)=> it.marshal()),\n codes: [...this.codes].map((it)=> it.marshal()),\n identifiers: this.identifiers.map((it)=> it.marshal()),\n properties: [...this.properties].map((it)=> it.marshal()),\n systemMetaData: this.systemMetaData?.marshal()\n }\n }\n}\n\ninterface IMedicalDevice {\n 'id'?: string;\n 'rev'?: string;\n 'deletionDate'?: number;\n 'identifiers'?: Array;\n 'created'?: number;\n 'modified'?: number;\n 'author'?: string;\n 'responsible'?: string;\n 'labels'?: Set;\n 'codes'?: Set;\n 'endOfLife'?: number;\n 'externalId'?: string;\n 'name'?: string;\n 'type'?: string;\n 'brand'?: string;\n 'model'?: string;\n 'serialNumber'?: string;\n 'parentId'?: string;\n 'picture'?: ArrayBuffer;\n 'properties'?: Set;\n 'systemMetaData'?: SystemMetaDataOwner;\n}\n","import {Identifier} from \"./Identifier\";\nimport {Property} from \"./Property\";\nimport {SystemMetaDataEncrypted} from \"./SystemMetaDataEncrypted\";\n\nexport class Notification {\n constructor(json: INotification) {\n const { status, identifiers, properties, type, systemMetaData, ...simpleProperties } = json\n\n Object.assign(this as Notification, simpleProperties as INotification)\n\n this.status = status as MaintenanceTaskStatusEnum\n this.identifiers = identifiers?.map((item) => new Identifier(item)) ?? []\n this.properties = properties && ([...properties]).map(p => new Property(p))\n this.type = type as NotificationTypeEnum\n this.systemMetaData = systemMetaData && new SystemMetaDataEncrypted(systemMetaData)\n }\n\n /**\n * The Id of the notification. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * The revision of the patient in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n /**\n * The status of the notification.\n */\n 'status'?: MaintenanceTaskStatusEnum;\n /**\n * The creation date of the notification (encoded as epoch).\n */\n 'created'?: number;\n /**\n * Soft delete (unix epoch in ms) timestamp of the patient\n */\n 'endOfLife'?: number;\n /**\n * the soft delete timestamp. When a patient is \"deleted\", this is set to a non-null value: the moment of the deletion\n */\n 'deletionDate'?: number;\n /**\n * Typically used for business / client identifiers. An identifier should identify a notification uniquely and unambiguously. However, iCure can't guarantee the uniqueness of those identifiers : This is something you need to take care of.\n */\n 'identifiers'?: Array;\n /**\n * the last modification date of the notification (encoded as epoch).\n */\n 'modified'?: number;\n /**\n * The id of the [User] that created this notification. When creating the notification, this field will be filled automatically by the current user id if not provided.\n */\n 'author'?: string;\n /**\n * The id of the data owner that is responsible for this notification. When creating the notification, will be filled automatically by the current user data owner id ([HealthcareProfessional], [Patient] or [MedicalDevice]) if missing\n */\n 'responsible'?: string;\n /**\n * Additional properties for the notification.\n */\n 'properties'?: Array;\n /**\n * The type of the notification.\n */\n 'type'?: NotificationTypeEnum;\n 'systemMetaData'?: SystemMetaDataEncrypted;\n\n marshal(): INotification {\n return {\n ...this,\n identifiers: this.identifiers?.map((item) => item.marshal()),\n properties: this.properties?.map((item) => item.marshal()),\n systemMetaData: this.systemMetaData?.marshal(),\n }\n }\n}\n\nexport interface INotification {\n id?: string;\n rev?: string;\n status?: MaintenanceTaskStatusEnum;\n identifiers?: Array;\n created?: number;\n modified?: number;\n endOfLife?: number;\n deletionDate?: number;\n author?: string;\n responsible?: string;\n properties?: Array;\n type?: NotificationTypeEnum;\n systemMetaData?: SystemMetaDataEncrypted;\n}\n\nexport enum NotificationTypeEnum {\n KEY_PAIR_UPDATE = \"KEY_PAIR_UPDATE\",\n NEW_USER_OWN_DATA_ACCESS = \"NEW_USER_OWN_DATA_ACCESS\",\n OTHER = \"OTHER\"\n}\nexport type MaintenanceTaskStatusEnum = \"pending\" | \"ongoing\" | \"cancelled\" | \"completed\";\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class PaginatedDocumentKeyAndIdPairObject {\nconstructor(json: IPaginatedDocumentKeyAndIdPairObject) {\n Object.assign(this as PaginatedDocumentKeyAndIdPairObject, json)\n}\n\n 'startKey'?: any;\n 'startKeyDocId'?: string;\n\n marshal(): IPaginatedDocumentKeyAndIdPairObject {\n return {\n ...this,\n }\n }\n}\n\ninterface IPaginatedDocumentKeyAndIdPairObject {\n 'startKey'?: any;\n 'startKeyDocId'?: string;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {Coding} from './Coding';\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\n\nexport class PaginatedListCoding {\nconstructor(json: IPaginatedListCoding) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListCoding, simpleProperties as IPaginatedListCoding)\n\n this.rows = rows ? [...rows]?.map(p => new Coding(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListCoding {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListCoding {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {DataSample} from './DataSample';\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\nimport {Coding} from \"./Coding\";\n\nexport class PaginatedListDataSample {\nconstructor(json: IPaginatedListDataSample) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListDataSample, simpleProperties as IPaginatedListDataSample)\n\n this.rows = rows ? [...rows]?.map(p => new DataSample(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListDataSample {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListDataSample {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {HealthcareElement} from './HealthcareElement';\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\n\nexport class PaginatedListHealthcareElement {\nconstructor(json: IPaginatedListHealthcareElement) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListHealthcareElement, simpleProperties as IPaginatedListHealthcareElement)\n\n this.rows = rows ? [...rows]?.map(p => new HealthcareElement(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListHealthcareElement {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListHealthcareElement {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {HealthcareProfessional} from './HealthcareProfessional';\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\n\nexport class PaginatedListHealthcareProfessional {\nconstructor(json: IPaginatedListHealthcareProfessional) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListHealthcareProfessional, simpleProperties as IPaginatedListHealthcareProfessional)\n\n this.rows = rows ? [...rows]?.map(p => new HealthcareProfessional(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListHealthcareProfessional {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListHealthcareProfessional {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {MedicalDevice} from './MedicalDevice';\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\n\nexport class PaginatedListMedicalDevice {\nconstructor(json: IPaginatedListMedicalDevice) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListMedicalDevice, json)\n\n this.rows = rows ? [...rows]?.map(p => new MedicalDevice(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListMedicalDevice {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListMedicalDevice {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","import {PaginatedDocumentKeyAndIdPairObject} from \"./PaginatedDocumentKeyAndIdPairObject\";\nimport {Notification} from \"./Notification\"\n\nexport class PaginatedListNotification {\n constructor(json: IPaginatedListNotification) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListNotification, simpleProperties as IPaginatedListNotification)\n\n this.rows = rows ? [...rows]?.map(p => new Notification(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n }\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListNotification {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListNotification {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\nimport {Patient} from './Patient';\n\nexport class PaginatedListPatient {\nconstructor(json: IPaginatedListPatient) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListPatient, simpleProperties as IPaginatedListPatient)\n\n this.rows = rows ? [...rows]?.map(p => new Patient(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListPatient {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListPatient {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {PaginatedDocumentKeyAndIdPairObject} from './PaginatedDocumentKeyAndIdPairObject';\nimport {User} from './User';\n\nexport class PaginatedListUser {\nconstructor(json: IPaginatedListUser) {\n const { rows, nextKeyPair, ...simpleProperties } = json\n\n Object.assign(this as PaginatedListUser, simpleProperties as IPaginatedListUser)\n\n this.rows = rows ? [...rows]?.map(p => new User(p)) : []\n this.nextKeyPair = nextKeyPair && new PaginatedDocumentKeyAndIdPairObject(nextKeyPair)\n}\n\n 'pageSize': number;\n 'totalSize': number;\n 'rows': Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n\n marshal(): IPaginatedListUser {\n return {\n ...this,\n rows: this.rows?.map(p => p.marshal()),\n nextKeyPair: this.nextKeyPair?.marshal(),\n }\n }\n}\n\ninterface IPaginatedListUser {\n 'pageSize'?: number;\n 'totalSize'?: number;\n 'rows'?: Array;\n 'nextKeyPair'?: PaginatedDocumentKeyAndIdPairObject;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* List of partners, or persons of contact (of class Partnership, see below).\n*/\nexport class Partnership {\nconstructor(json: IPartnership) {\n const { type, status, ...simpleProperties } = json\n Object.assign(this as Partnership, simpleProperties as IPartnership)\n this.type = type as PartnershipTypeEnum\n this.status = status as PartnershipStatusEnum\n}\n\n 'type'?: PartnershipTypeEnum;\n 'status'?: PartnershipStatusEnum;\n 'partnerId'?: string;\n\n marshal(): IPartnership {\n return {\n ...this,\n }\n }\n}\n\ninterface IPartnership {\n 'type'?: PartnershipTypeEnum;\n 'status'?: PartnershipStatusEnum;\n 'partnerId'?: string;\n}\n\n\nexport type PartnershipTypeEnum = \"primary_contact\" | \"primary_contact_for\" | \"family\" | \"friend\" | \"counselor\" | \"contact\" | \"brother\" | \"brotherinlaw\" | \"child\" | \"daughter\" | \"employer\" | \"father\" | \"grandchild\" | \"grandparent\" | \"husband\" | \"lawyer\" | \"mother\" | \"neighbour\" | \"notary\" | \"partner\" | \"sister\" | \"sisterinlaw\" | \"son\" | \"spouse\" | \"stepdaughter\" | \"stepfather\" | \"stepmother\" | \"stepson\" | \"tutor\" | \"next_of_kin\" | \"federal_agency\" | \"insurance_company\" | \"state_agency\" | \"unknown\" | \"seealso\" | \"refer\" ;\nexport type PartnershipStatusEnum = \"active\" | \"complicated\" | \"past\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { Address } from './Address'\nimport { CodingReference } from './CodingReference'\nimport { Identifier } from './Identifier'\nimport { Partnership } from './Partnership'\nimport { PatientHealthCareParty } from './PatientHealthCareParty'\nimport { PersonName } from './PersonName'\nimport { Property } from './Property'\nimport { SystemMetaDataOwnerEncrypted } from './SystemMetaDataOwnerEncrypted'\nimport { b64_2ab, ua2b64 } from '@icure/api'\nimport { SystemMetaDataOwner } from './SystemMetaDataOwner'\nimport { HealthcareProfessionalGenderEnum } from './HealthcareProfessional'\n\nexport class Patient implements PotentiallyEncryptedPatient {\n constructor(json: IPatient) {\n const {\n identifiers,\n labels,\n codes,\n names,\n addresses,\n gender,\n birthSex,\n mergedIds,\n deactivationReason,\n personalStatus,\n picture,\n partnerships,\n patientHealthCareParties,\n patientProfessions,\n properties,\n systemMetaData,\n ...simpleProperties\n } = json\n\n Object.assign(this as Patient, simpleProperties as IPatient)\n\n this.identifiers = identifiers ? [...identifiers]?.map((p) => new Identifier(p)) : []\n\n this.labels = labels ? new Set([...labels].map((it) => new CodingReference(it))) : new Set()\n this.codes = codes ? new Set([...codes].map((it) => new CodingReference(it))) : new Set()\n\n this.names = names?.map((n) => new PersonName(n)) ?? []\n this.addresses = addresses?.map((a) => new Address(a)) ?? []\n this.gender = gender as HealthcareProfessionalGenderEnum\n this.birthSex = birthSex as HealthcareProfessionalGenderEnum\n this.mergedIds = mergedIds ? new Set([...mergedIds]) : new Set()\n this.deactivationReason = deactivationReason as PatientDeactivationReasonEnum\n this.personalStatus = personalStatus as PatientPersonalStatusEnum\n\n this.picture = !picture\n ? undefined\n : (picture as unknown) instanceof ArrayBuffer\n ? picture\n : typeof (picture as unknown) === 'string'\n ? b64_2ab(picture as unknown as string)\n : undefined\n\n this.partnerships = partnerships ? [...partnerships]?.map((p) => new Partnership(p)) : []\n this.patientHealthCareParties = patientHealthCareParties ? [...patientHealthCareParties]?.map((p) => new PatientHealthCareParty(p)) : []\n this.patientProfessions = patientProfessions ? [...patientProfessions]?.map((p) => new CodingReference(p)) : []\n\n this.properties = properties ? new Set([...properties]?.map((p) => new Property(p))) : new Set()\n\n this.systemMetaData = systemMetaData && new SystemMetaDataOwnerEncrypted(systemMetaData)\n }\n\n 'id'?: string\n 'rev'?: string\n 'identifiers': Identifier[]\n 'created'?: number\n 'modified'?: number\n 'author'?: string\n 'responsible'?: string\n 'labels': Set\n 'codes': Set\n 'endOfLife'?: number\n 'deletionDate'?: number\n 'firstName'?: string\n 'lastName'?: string\n 'names': PersonName[]\n 'companyName'?: string\n 'languages': string[]\n 'addresses': Address[]\n 'civility'?: string\n 'gender'?: PatientGenderEnum\n 'birthSex'?: PatientBirthSexEnum\n 'mergeToPatientId'?: string\n 'mergedIds': Set\n 'alias'?: string\n 'active': boolean\n 'deactivationReason': PatientDeactivationReasonEnum\n 'ssin'?: string\n 'maidenName'?: string\n 'spouseName'?: string\n 'partnerName'?: string\n 'personalStatus'?: PatientPersonalStatusEnum\n 'dateOfBirth'?: number\n 'dateOfDeath'?: number\n 'placeOfBirth'?: string\n 'placeOfDeath'?: string\n 'deceased'?: boolean\n 'education'?: string\n 'profession'?: string\n 'note'?: string\n 'administrativeNote'?: string\n 'nationality'?: string\n 'race'?: string\n 'ethnicity'?: string\n 'picture'?: ArrayBuffer\n 'externalId'?: string\n 'partnerships': Partnership[]\n 'patientHealthCareParties': PatientHealthCareParty[]\n 'patientProfessions': CodingReference[]\n 'parameters': { [key: string]: string[] }\n 'properties': Set\n 'systemMetaData'?: SystemMetaDataOwnerEncrypted\n\n marshal(): IPatient {\n return {\n ...this,\n identifiers: this.identifiers && this.identifiers.map((i) => i.marshal()),\n labels: this.labels ? [...this.labels].map((it) => it.marshal()) : undefined,\n codes: this.codes ? [...this.codes].map((it) => it.marshal()) : undefined,\n names: this.names?.map((n) => n.marshal()) ?? undefined,\n addresses: this.addresses?.map((a) => a.marshal()) ?? undefined,\n mergedIds: this.mergedIds ? [...this.mergedIds] : undefined,\n picture: this.picture ? ua2b64(this.picture) : undefined,\n partnerships: this.partnerships?.map((p) => p.marshal()) ?? undefined,\n patientHealthCareParties: this.patientHealthCareParties?.map((p) => p.marshal()) ?? undefined,\n patientProfessions: this.patientProfessions?.map((p) => p.marshal()) ?? undefined,\n properties: this.properties ? [...this.properties].map((it) => it.marshal()) : undefined,\n systemMetaData: this.systemMetaData ? this.systemMetaData.marshal() : undefined,\n }\n }\n}\n\nexport class EncryptedPatient implements PotentiallyEncryptedPatient {\n constructor(json: IPatient) {\n const {\n identifiers,\n labels,\n codes,\n names,\n addresses,\n gender,\n birthSex,\n mergedIds,\n deactivationReason,\n personalStatus,\n picture,\n partnerships,\n patientHealthCareParties,\n patientProfessions,\n properties,\n systemMetaData,\n ...simpleProperties\n } = json\n\n Object.assign(this as Patient, simpleProperties as IPatient)\n\n this.identifiers = identifiers ? [...identifiers]?.map((p) => new Identifier(p)) : []\n\n this.labels = labels ? new Set([...labels].map((it) => new CodingReference(it))) : new Set()\n this.codes = codes ? new Set([...codes].map((it) => new CodingReference(it))) : new Set()\n\n this.names = names?.map((n) => new PersonName(n)) ?? []\n this.addresses = addresses?.map((a) => new Address(a)) ?? []\n this.gender = gender as HealthcareProfessionalGenderEnum\n this.birthSex = birthSex as HealthcareProfessionalGenderEnum\n this.mergedIds = mergedIds ? new Set([...mergedIds]) : new Set()\n this.deactivationReason = deactivationReason as PatientDeactivationReasonEnum\n this.personalStatus = personalStatus as PatientPersonalStatusEnum\n\n this.picture = !picture\n ? undefined\n : (picture as unknown) instanceof ArrayBuffer\n ? picture\n : typeof (picture as unknown) === 'string'\n ? b64_2ab(picture as unknown as string)\n : undefined\n\n this.partnerships = partnerships ? [...partnerships]?.map((p) => new Partnership(p)) : []\n this.patientHealthCareParties = patientHealthCareParties ? [...patientHealthCareParties]?.map((p) => new PatientHealthCareParty(p)) : []\n this.patientProfessions = patientProfessions ? [...patientProfessions]?.map((p) => new CodingReference(p)) : []\n\n this.properties = properties ? new Set([...properties]?.map((p) => new Property(p))) : new Set()\n\n this.systemMetaData = systemMetaData && new SystemMetaDataOwnerEncrypted(systemMetaData)\n }\n\n 'id'?: string\n 'rev'?: string\n 'identifiers': Identifier[]\n 'created'?: number\n 'modified'?: number\n 'author'?: string\n 'responsible'?: string\n 'labels': Set\n 'codes': Set\n 'endOfLife'?: number\n 'deletionDate'?: number\n 'firstName'?: string\n 'lastName'?: string\n 'names': PersonName[]\n 'companyName'?: string\n 'languages': string[]\n 'addresses': Address[]\n 'civility'?: string\n 'gender'?: PatientGenderEnum\n 'birthSex'?: PatientBirthSexEnum\n 'mergeToPatientId'?: string\n 'mergedIds': Set\n 'alias'?: string\n 'active': boolean\n 'deactivationReason': PatientDeactivationReasonEnum\n 'ssin'?: string\n 'maidenName'?: string\n 'spouseName'?: string\n 'partnerName'?: string\n 'personalStatus'?: PatientPersonalStatusEnum\n 'dateOfBirth'?: number\n 'dateOfDeath'?: number\n 'placeOfBirth'?: string\n 'placeOfDeath'?: string\n 'deceased'?: boolean\n 'education'?: string\n 'profession'?: string\n 'note'?: string\n 'administrativeNote'?: string\n 'nationality'?: string\n 'race'?: string\n 'ethnicity'?: string\n 'picture'?: ArrayBuffer\n 'externalId'?: string\n 'partnerships': Partnership[]\n 'patientHealthCareParties': PatientHealthCareParty[]\n 'patientProfessions': CodingReference[]\n 'parameters': { [key: string]: string[] }\n 'properties': Set\n 'systemMetaData'?: SystemMetaDataOwnerEncrypted\n\n marshal(): IPatient {\n return {\n ...this,\n identifiers: this.identifiers && this.identifiers.map((i) => i.marshal()),\n labels: this.labels ? [...this.labels].map((it) => it.marshal()) : undefined,\n codes: this.codes ? [...this.codes].map((it) => it.marshal()) : undefined,\n names: this.names?.map((n) => n.marshal()) ?? undefined,\n addresses: this.addresses?.map((a) => a.marshal()) ?? undefined,\n mergedIds: this.mergedIds ? [...this.mergedIds] : undefined,\n picture: this.picture ? ua2b64(this.picture) : undefined,\n partnerships: this.partnerships?.map((p) => p.marshal()) ?? undefined,\n patientHealthCareParties: this.patientHealthCareParties?.map((p) => p.marshal()) ?? undefined,\n patientProfessions: this.patientProfessions?.map((p) => p.marshal()) ?? undefined,\n properties: this.properties ? [...this.properties].map((it) => it.marshal()) : undefined,\n systemMetaData: this.systemMetaData ? this.systemMetaData.marshal() : undefined,\n }\n }\n}\n\nexport interface PotentiallyEncryptedPatient {\n /**\n * the Id of the patient. We encourage using either a v4 UUID or a HL7 Id.\n */\n id?: string\n /**\n * the revision of the patient in the database, used for conflict management / optimistic locking.\n */\n rev?: string\n /**\n * Typically used for business / client identifiers. An identifier should identify a patient uniquely and unambiguously. However, iCure can't guarantee the uniqueness of those identifiers : This is something you need to take care of.\n */\n identifiers: Array\n /**\n * the creation date of the patient (encoded as epoch).\n */\n created?: number\n /**\n * the last modification date of the patient (encoded as epoch).\n */\n modified?: number\n /**\n * The id of the [User] that created this patient. When creating the patient, this field will be filled automatically by the current user id if not provided.\n */\n author?: string\n /**\n * The id of the data owner that is responsible of this patient. When creating the patient, will be filled automatically by the current user data owner id ([HealthcareProfessional], [Patient] or [MedicalDevice]) if missing\n */\n responsible?: string\n /**\n * A label is an item from a codification system that qualifies a patient as being member of a certain class, whatever the value it might have taken. If the label qualifies the content of a field, it means that whatever the content of the field, the label will always apply. LOINC is a codification system typically used for labels.\n */\n labels: Set\n /**\n * A code is an item from a codification system that qualifies the content of this patient.\n */\n codes: Set\n /**\n * Soft delete (unix epoch in ms) timestamp of the patient\n */\n endOfLife?: number\n /**\n * the soft delete timestamp. When a patient is ”deleted“, this is set to a non null value: the moment of the deletion\n */\n deletionDate?: number\n /**\n * the firstname (name) of the patient.\n */\n firstName?: string\n /**\n * the lastname (surname) of the patient. This is the official lastname that should be used for official administrative purposes.\n */\n lastName?: string\n /**\n * the list of all names of the patient, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the patient in the application\n */\n names: Array\n /**\n * the name of the company this patient is member of.\n */\n companyName?: string\n /**\n * the list of languages spoken by the patient ordered by fluency (alpha-2 code http://www.loc.gov/standards/iso639-2/ascii_8bits.html).\n */\n languages: Array\n /**\n * the list of addresses (with address type).\n */\n addresses: Array
\n /**\n * Mr., Ms., Pr., Dr. ...\n */\n civility?: string\n /**\n * the gender of the patient: male, female, indeterminate, changed, changedToMale, changedToFemale, unknown\n */\n gender?: PatientGenderEnum\n /**\n * the birth sex of the patient: male, female, indeterminate, unknown\n */\n birthSex?: PatientBirthSexEnum\n /**\n * The id of the patient this patient has been merged with.\n */\n mergeToPatientId?: string\n /**\n * The ids of the patients that have been merged inside this patient.\n */\n mergedIds: Set\n /**\n * An alias of the person, nickname, ...\n */\n alias?: string\n /**\n * Is the patient active (boolean).\n */\n active: boolean\n /**\n * When not active, the reason for deactivation.\n */\n deactivationReason: PatientDeactivationReasonEnum\n /**\n * Social security inscription number.\n */\n ssin?: string\n /**\n * Lastname at birth (can be different of the current name), depending on the country, must be used to design the patient .\n */\n maidenName?: string\n /**\n * Lastname of the spouse for a married woman, depending on the country, can be used to design the patient.\n */\n spouseName?: string\n /**\n * Lastname of the partner, should not be used to design the patient.\n */\n partnerName?: string\n /**\n * any of `single`, `in_couple`, `married`, `separated`, `divorced`, `divorcing`, `widowed`, `widower`, `complicated`, `unknown`, `contract`, `other`.\n */\n personalStatus?: PatientPersonalStatusEnum\n /**\n * The birthdate encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfBirth?: number\n /**\n * The date of death encoded as a fuzzy date on 8 positions (YYYYMMDD) MM and/or DD can be set to 00 if unknown (19740000 is a valid date).\n */\n dateOfDeath?: number\n /**\n * The place of birth.\n */\n placeOfBirth?: string\n /**\n * The place of death.\n */\n placeOfDeath?: string\n /**\n * Is the patient deceased.\n */\n deceased?: boolean\n /**\n * The level of education (college degree, undergraduate, phd).\n */\n education?: string\n /**\n * The current professional activity.\n */\n profession?: string\n /**\n * A text note (can be confidential, encrypted by default).\n */\n note?: string\n /**\n * An administrative note, not confidential.\n */\n administrativeNote?: string\n /**\n * The nationality of the patient.\n */\n nationality?: string\n /**\n * The race of the patient.\n */\n race?: string\n /**\n * The ethnicity of the patient.\n */\n ethnicity?: string\n /**\n * A picture usually saved in JPEG format.\n */\n picture?: ArrayBuffer\n /**\n * An external (from another source) id with no guarantee or requirement for unicity .\n */\n externalId?: string\n /**\n * List of partners, or persons of contact (of class Partnership, see below).\n */\n partnerships: Array\n /**\n * Links (usually for therapeutic reasons) between this patient and healthcare parties (of class PatientHealthcareParty).\n */\n patientHealthCareParties: Array\n /**\n * Codified list of professions exercised by this patient.\n */\n patientProfessions: Array\n /**\n * Extra parameters\n */\n parameters: { [key: string]: Array }\n /**\n * Extra properties\n */\n properties: Set\n systemMetaData?: SystemMetaDataOwnerEncrypted\n}\n\ninterface IPatient {\n id?: string\n rev?: string\n identifiers?: Array\n created?: number\n modified?: number\n author?: string\n responsible?: string\n labels?: Set\n codes?: Set\n endOfLife?: number\n deletionDate?: number\n firstName?: string\n lastName?: string\n names?: Array\n companyName?: string\n languages?: Array\n addresses?: Array
\n civility?: string\n gender?: PatientGenderEnum\n birthSex?: PatientBirthSexEnum\n mergeToPatientId?: string\n mergedIds?: Set\n alias?: string\n active?: boolean\n deactivationReason?: PatientDeactivationReasonEnum\n ssin?: string\n maidenName?: string\n spouseName?: string\n partnerName?: string\n personalStatus?: PatientPersonalStatusEnum\n dateOfBirth?: number\n dateOfDeath?: number\n placeOfBirth?: string\n placeOfDeath?: string\n deceased?: boolean\n education?: string\n profession?: string\n note?: string\n administrativeNote?: string\n nationality?: string\n race?: string\n ethnicity?: string\n picture?: ArrayBuffer\n externalId?: string\n partnerships?: Array\n patientHealthCareParties?: Array\n patientProfessions?: Array\n parameters?: { [key: string]: Array }\n properties?: Set\n systemMetaData?: SystemMetaDataOwnerEncrypted\n}\n\nexport type PatientGenderEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\nexport type PatientBirthSexEnum = 'male' | 'female' | 'indeterminate' | 'changed' | 'changedToMale' | 'changedToFemale' | 'unknown'\nexport type PatientDeactivationReasonEnum = 'deceased' | 'moved' | 'other_doctor' | 'retired' | 'no_contact' | 'unknown' | 'none'\nexport type PatientPersonalStatusEnum =\n | 'single'\n | 'in_couple'\n | 'married'\n | 'separated'\n | 'divorced'\n | 'divorcing'\n | 'widowed'\n | 'widower'\n | 'complicated'\n | 'unknown'\n | 'contract'\n | 'other'\n | 'annulled'\n | 'polygamous'\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* Links (usually for therapeutic reasons) between this patient and healthcare parties (of class PatientHealthcareParty).\n*/\nexport class PatientHealthCareParty {\nconstructor(json: IPatientHealthCareParty) {\n const { type, ...simpleProperties } = json\n Object.assign(this as PatientHealthCareParty, simpleProperties as IPatientHealthCareParty)\n this.type = type as PatientHealthCarePartyTypeEnum\n}\n\n 'type': PatientHealthCarePartyTypeEnum;\n 'healthcarePartyId'?: string;\n\n marshal(): IPatientHealthCareParty {\n return {\n ...this,\n }\n }\n}\n\ninterface IPatientHealthCareParty {\n 'type'?: PatientHealthCarePartyTypeEnum;\n 'healthcarePartyId'?: string;\n}\n\n\nexport type PatientHealthCarePartyTypeEnum = \"doctor\" | \"referral\" | \"medicalhouse\" | \"retirementhome\" | \"hospital\" | \"other\" | \"referringphysician\" | \"managingorganization\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* the list of all names of the patient, also containing the official full name information. Ordered by preference of use. First element is therefore the official name used for the patient in the application\n*/\nexport class PersonName {\nconstructor(json: IPersonName) {\n const { use, ...simpleProperties } = json\n Object.assign(this as PersonName, simpleProperties as IPersonName)\n this.use = use as PersonNameUseEnum\n}\n\n 'lastName'?: string;\n 'firstNames': Array;\n 'start'?: number;\n 'end'?: number;\n 'prefix': Array;\n 'suffix': Array;\n 'text'?: string;\n 'use'?: PersonNameUseEnum;\n\n marshal(): IPersonName {\n return {\n ...this,\n }\n }\n}\n\ninterface IPersonName {\n 'lastName'?: string;\n 'firstNames'?: Array;\n 'start'?: number;\n 'end'?: number;\n 'prefix'?: Array;\n 'suffix'?: Array;\n 'text'?: string;\n 'use'?: PersonNameUseEnum;\n}\n\n\nexport type PersonNameUseEnum = \"usual\" | \"official\" | \"temp\" | \"nickname\" | \"anonymous\" | \"maiden\" | \"old\" | \"other\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {PropertyType} from './PropertyType';\nimport {TypedValueObject} from './TypedValueObject';\n\n/**\n* Extra properties for the user. Those properties are typed (see class Property)\n*/\nexport class Property {\nconstructor(json: IProperty) {\n const { type, typedValue, ...simpleProperties } = json\n Object.assign(this as Property, simpleProperties as IProperty)\n this.type = type && new PropertyType(type)\n this.typedValue = typedValue && new TypedValueObject(typedValue)\n}\n\n 'id'?: string;\n 'type'?: PropertyType;\n 'typedValue'?: TypedValueObject;\n 'deleted'?: number;\n\n marshal(): IProperty {\n return {\n ...this,\n type: this.type?.marshal(),\n typedValue: this.typedValue?.marshal(),\n }\n }\n}\n\ninterface IProperty {\n 'id'?: string;\n 'type'?: PropertyType;\n 'typedValue'?: TypedValueObject;\n 'deleted'?: number;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class PropertyType {\nconstructor(json: IPropertyType) {\n const { type, ...simpleProperties } = json\n Object.assign(this as PropertyType, simpleProperties as IPropertyType)\n this.type = type as PropertyTypeTypeEnum\n}\n\n 'identifier'?: string;\n 'type'?: PropertyTypeTypeEnum;\n\n marshal(): IPropertyType {\n return {\n ...this,\n }\n }\n}\n\ninterface IPropertyType {\n 'identifier'?: string;\n 'type'?: PropertyTypeTypeEnum;\n}\n\n\nexport type PropertyTypeTypeEnum = \"BOOLEAN\" | \"INTEGER\" | \"DOUBLE\" | \"STRING\" | \"DATE\" | \"CLOB\" | \"JSON\" ;\n","export class SecureDelegation {\n constructor(json: ISecureDelegation) {\n Object.assign(this as SecureDelegation, json)\n\n this.secretIds = new Set(json.secretIds ?? [])\n this.encryptionKeys = new Set(json.encryptionKeys ?? [])\n this.owningEntityIds = new Set(json.owningEntityIds ?? [])\n this.parentDelegations = new Set(json.parentDelegations ?? [])\n }\n\n 'delegator'?: string\n 'delegate'?: string\n 'secretIds': Set\n 'encryptionKeys': Set\n 'owningEntityIds': Set\n 'parentDelegations': Set\n 'exchangeDataId'?: string\n 'permissions': AccessLevelEnum\n\n marshal(): ISecureDelegation {\n return {\n ...this,\n secretIds: [...this.secretIds],\n encryptionKeys: [...this.encryptionKeys],\n owningEntityIds: [...this.owningEntityIds],\n parentDelegations: [...this.parentDelegations],\n }\n }\n}\n\ninterface ISecureDelegation {\n delegator?: string\n delegate?: string\n secretIds?: Set\n encryptionKeys?: Set\n owningEntityIds?: Set\n parentDelegations?: Set\n exchangeDataId?: string\n permissions: AccessLevelEnum\n}\n\nexport enum AccessLevelEnum {\n READ = 'READ',\n WRITE = 'WRITE',\n}\n","import { SecureDelegation } from './SecureDelegation'\n\nexport class SecurityMetaData {\n constructor(json: ISecurityMetadata) {\n Object.assign(this as SecurityMetaData, json)\n const { secureDelegations, keysEquivalences } = json\n this.secureDelegations = secureDelegations\n ? Object.entries(secureDelegations)\n .map(([k, d]) => [k, new SecureDelegation(d)] as [string, SecureDelegation])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.keysEquivalences = keysEquivalences ?? {}\n }\n\n 'secureDelegations': { [hash: string]: SecureDelegation }\n 'keysEquivalences': { [hash: string]: string }\n\n marshal(): ISecurityMetadata {\n return {\n ...this,\n secureDelegations: Object.entries(this.secureDelegations).reduce((acc, [k, v]) => ({ ...acc, [k]: v.marshal() }), {}),\n }\n }\n}\n\ninterface ISecurityMetadata {\n secureDelegations?: { [hash: string]: SecureDelegation }\n keysEquivalences?: { [hash: string]: string }\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { Delegation } from './Delegation'\nimport { Content } from './Content'\nimport { SecurityMetaData } from './SecurityMetaData'\n\nexport class SystemMetaDataEncrypted {\n constructor(json: ISystemMetaDataEncrypted) {\n const { secretForeignKeys, cryptedForeignKeys, delegations, encryptionKeys, encryptedSelf, securityMetadata } = json\n\n this.secretForeignKeys = secretForeignKeys ? [...secretForeignKeys] : []\n this.cryptedForeignKeys = cryptedForeignKeys\n ? Object.entries(cryptedForeignKeys)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.delegations = delegations\n ? Object.entries(delegations)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.encryptionKeys = encryptionKeys\n ? Object.entries(encryptionKeys)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n if (encryptedSelf) {\n this.encryptedSelf = encryptedSelf\n }\n if (securityMetadata) {\n this.securityMetadata = new SecurityMetaData(securityMetadata)\n }\n }\n\n 'secretForeignKeys': Array\n 'cryptedForeignKeys': { [key: string]: Set }\n 'delegations': { [key: string]: Set }\n 'encryptionKeys': { [key: string]: Set }\n 'encryptedSelf'?: string\n 'securityMetadata'?: SecurityMetaData\n\n marshal(): ISystemMetaDataEncrypted {\n return {\n ...this,\n cryptedForeignKeys: Object.entries(this.cryptedForeignKeys).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n delegations: Object.entries(this.delegations).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n encryptionKeys: Object.entries(this.encryptionKeys).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n securityMetadata: this.securityMetadata?.marshal(),\n }\n }\n}\n\ninterface ISystemMetaDataEncrypted {\n secretForeignKeys?: Array\n cryptedForeignKeys?: { [key: string]: Set }\n delegations?: { [key: string]: Set }\n encryptionKeys?: { [key: string]: Set }\n encryptedSelf?: string\n securityMetadata?: SecurityMetaData\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport class SystemMetaDataOwner {\n constructor(json: ISystemMetaDataOwner) {\n const { publicKeysForOaepWithSha256, ...simpleProperties } = json\n\n Object.assign(this as SystemMetaDataOwner, simpleProperties)\n\n this.publicKeysForOaepWithSha256 = new Set(json.publicKeysForOaepWithSha256 ?? [])\n }\n\n 'publicKey': string\n 'hcPartyKeys': { [key: string]: Array }\n 'privateKeyShamirPartitions': { [key: string]: string }\n 'aesExchangeKeys': { [key: string]: { [key: string]: { [key: string]: string } } }\n 'transferKeys': { [key: string]: { [key: string]: string } }\n 'publicKeysForOaepWithSha256': Set\n\n marshal(): ISystemMetaDataOwner {\n return {\n ...this,\n publicKeysForOaepWithSha256: [...this.publicKeysForOaepWithSha256],\n }\n }\n}\n\ninterface ISystemMetaDataOwner {\n publicKey?: string\n hcPartyKeys?: { [key: string]: Array }\n privateKeyShamirPartitions?: { [key: string]: string }\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n transferKeys?: { [key: string]: { [key: string]: string } }\n publicKeysForOaepWithSha256?: Set\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { Delegation } from './Delegation'\nimport { SecurityMetaData } from './SecurityMetaData'\n\nexport class SystemMetaDataOwnerEncrypted {\n constructor(json: ISystemMetaDataOwnerEncrypted) {\n const { secretForeignKeys, cryptedForeignKeys, delegations, encryptionKeys, securityMetadata, publicKeysForOaepWithSha256, ...simpleProperties } =\n json\n\n Object.assign(this as SystemMetaDataOwnerEncrypted, simpleProperties as ISystemMetaDataOwnerEncrypted)\n\n this.secretForeignKeys = secretForeignKeys ? [...secretForeignKeys] : []\n this.cryptedForeignKeys = cryptedForeignKeys\n ? Object.entries(cryptedForeignKeys)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.delegations = delegations\n ? Object.entries(delegations)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.encryptionKeys = encryptionKeys\n ? Object.entries(encryptionKeys)\n .map(([k, v]) => [k, new Set([...v].map((d) => new Delegation(d)))] as [string, Set])\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n : {}\n this.publicKeysForOaepWithSha256 = new Set(publicKeysForOaepWithSha256 ?? [])\n if (securityMetadata) {\n this.securityMetadata = new SecurityMetaData(securityMetadata)\n }\n }\n\n 'publicKey': string\n 'hcPartyKeys': { [key: string]: Array }\n 'privateKeyShamirPartitions': { [key: string]: string }\n 'secretForeignKeys': Array\n 'cryptedForeignKeys': { [key: string]: Set }\n 'delegations': { [key: string]: Set }\n 'encryptionKeys': { [key: string]: Set }\n 'aesExchangeKeys': { [key: string]: { [key: string]: { [key: string]: string } } }\n 'transferKeys': { [key: string]: { [key: string]: string } }\n 'encryptedSelf'?: string\n 'publicKeysForOaepWithSha256': Set\n 'securityMetadata'?: SecurityMetaData\n\n marshal(): ISystemMetaDataOwnerEncrypted {\n return {\n ...this,\n cryptedForeignKeys: Object.entries(this.cryptedForeignKeys).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n delegations: Object.entries(this.delegations).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n encryptionKeys: Object.entries(this.encryptionKeys).reduce((acc, [k, v]) => ({ ...acc, [k]: [...v].map((d) => d.marshal()) }), {}),\n publicKeysForOaepWithSha256: [...this.publicKeysForOaepWithSha256],\n securityMetadata: this.securityMetadata?.marshal(),\n }\n }\n}\n\ninterface ISystemMetaDataOwnerEncrypted {\n publicKey?: string\n hcPartyKeys?: { [key: string]: Array }\n privateKeyShamirPartitions?: { [key: string]: string }\n secretForeignKeys?: Array\n cryptedForeignKeys?: { [key: string]: Set }\n delegations?: { [key: string]: Set }\n encryptionKeys?: { [key: string]: Set }\n aesExchangeKeys?: { [key: string]: { [key: string]: { [key: string]: string } } }\n transferKeys?: { [key: string]: { [key: string]: string } }\n encryptedSelf?: string\n publicKeysForOaepWithSha256?: Set\n securityMetadata?: SecurityMetaData\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class Telecom {\nconstructor(json: ITelecom) {\n const { telecomType, ...simpleProperties } = json\n Object.assign(this as Telecom, simpleProperties as ITelecom)\n this.telecomType = telecomType as TelecomTelecomTypeEnum\n}\n\n 'telecomType'?: TelecomTelecomTypeEnum;\n 'telecomNumber'?: string;\n 'telecomDescription'?: string;\n\n marshal(): ITelecom {\n return {\n ...this,\n }\n }\n}\n\ninterface ITelecom {\n 'telecomType'?: TelecomTelecomTypeEnum;\n 'telecomNumber'?: string;\n 'telecomDescription'?: string;\n}\n\n\nexport type TelecomTelecomTypeEnum = \"mobile\" | \"phone\" | \"email\" | \"fax\" | \"skype\" | \"im\" | \"medibridge\" | \"ehealthbox\" | \"apicrypt\" | \"web\" | \"print\" | \"disk\" | \"other\" | \"pager\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n* A high frequency time-series containing the ts in ms from the start (double) and the values\n*/\nexport class TimeSeries {\nconstructor(json: ITimeSeries) {\n Object.assign(this as TimeSeries, json)\n}\n\n 'fields': Array;\n 'samples': Array>;\n 'min': Array;\n 'max': Array;\n 'mean': Array;\n 'median': Array;\n 'variance': Array;\n\n marshal(): ITimeSeries {\n return {\n ...this,\n }\n }\n}\n\ninterface ITimeSeries {\n 'fields'?: Array;\n 'samples'?: Array>;\n 'min'?: Array;\n 'max'?: Array;\n 'mean'?: Array;\n 'median'?: Array;\n 'variance'?: Array;\n}\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport class TypedValueObject {\nconstructor(json: ITypedValueObject) {\n const { type, ...simpleProperties } = json\n Object.assign(this as TypedValueObject, simpleProperties as ITypedValueObject)\n this.type = type as TypedValueObjectTypeEnum\n}\n\n 'type'?: TypedValueObjectTypeEnum;\n 'booleanValue'?: boolean;\n 'integerValue'?: number;\n 'doubleValue'?: number;\n 'stringValue'?: string;\n 'dateValue'?: number;\n\n marshal(): ITypedValueObject {\n return {\n ...this,\n }\n }\n}\n\ninterface ITypedValueObject {\n 'type'?: TypedValueObjectTypeEnum;\n 'booleanValue'?: boolean;\n 'integerValue'?: number;\n 'doubleValue'?: number;\n 'stringValue'?: string;\n 'dateValue'?: number;\n}\n\n\nexport type TypedValueObjectTypeEnum = \"BOOLEAN\" | \"INTEGER\" | \"DOUBLE\" | \"STRING\" | \"DATE\" | \"CLOB\" | \"JSON\" ;\n","/**\n * ICure Medical Device Micro Service\n * ICure Medical Device Micro Service\n *\n * OpenAPI spec version: v2\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {AuthenticationToken} from './AuthenticationToken';\nimport {Property} from './Property';\nimport {Delegation} from \"./Delegation\";\n\nexport class User {\nconstructor(json: IUser) {\n const { properties, roles, sharingDataWith, authenticationTokens, ...simpleProperties } = json\n Object.assign(this as User, simpleProperties as IUser)\n this.properties = properties ? new Set(([...properties])?.map(p => new Property(p))) : new Set()\n this.roles = roles ? new Set(([...roles])) : new Set()\n this.sharingDataWith = sharingDataWith ? Object.entries(sharingDataWith).map(([k,v]) => [k, new Set([...v])] as [SharedDataType, Set]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) : {} as any\n this.authenticationTokens = authenticationTokens ? Object.entries(authenticationTokens).map(([k,v]) => [k, new AuthenticationToken(v)] as [string, AuthenticationToken]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}) : {} as any\n}\n\n /**\n * the Id of the user. We encourage using either a v4 UUID or a HL7 Id.\n */\n 'id'?: string;\n /**\n * the revision of the user in the database, used for conflict management / optimistic locking.\n */\n 'rev'?: string;\n /**\n * the soft delete timestamp. When a user is ”deleted“, this is set to a non null value: the moment of the deletion\n */\n 'deletionDate'?: number;\n /**\n * the creation date of the user (encoded as epoch).\n */\n 'created'?: number;\n /**\n * Last name of the user. This is the official last name that should be used for official administrative purposes.\n */\n 'name'?: string;\n /**\n * Extra properties for the user. Those properties are typed (see class Property)\n */\n 'properties': Set;\n /**\n * Roles assigned to this user\n */\n 'roles': Set;\n /**\n * Username for this user. We encourage using an email address\n */\n 'login'?: string;\n /**\n * Hashed version of the password (BCrypt is used for hashing)\n */\n 'passwordHash'?: string;\n /**\n * Secret token used to verify 2fa\n */\n 'secret'?: string;\n /**\n * Whether the user has activated two factors authentication\n */\n 'use2fa'?: boolean;\n /**\n * id of the group (practice/hospital) the user is member of\n */\n 'groupId'?: string;\n /**\n * Id of the healthcare party if the user is a healthcare party.\n */\n 'healthcarePartyId'?: string;\n /**\n * Id of the patient if the user is a patient\n */\n 'patientId'?: string;\n /**\n * Id of the patient if the user is a patient\n */\n 'deviceId'?: string;\n /**\n * Ids of the dataOwners with who the user is sharing all new data he is creating in iCure : All Data Types that may be shared can be found in SharedDataType enum\n */\n 'sharingDataWith': { [key in SharedDataType]?: Set; };\n /**\n * email address of the user (used for token exchange or password recovery).\n */\n 'email'?: string;\n /**\n * mobile phone of the user (used for token exchange or password recovery).\n */\n 'mobilePhone'?: string;\n /**\n * Encrypted and time-limited Authentication tokens used for inter-applications authentication\n */\n 'authenticationTokens': { [key: string]: AuthenticationToken; };\n\n marshal(): IUser {\n return {\n ...this,\n roles: [...this.roles],\n properties: [...this.properties].map(p => p.marshal()),\n sharingDataWith: Object.entries(this.sharingDataWith).map(([k,v]) => [k, [...v]] as [SharedDataType, string[]]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}),\n authenticationTokens: Object.entries(this.authenticationTokens).map(([k,v]) => [k, v.marshal()] as [string, AuthenticationToken]).reduce((acc, [k,v]) => ({...acc, [k]: v}), {}),\n }\n }\n}\n\nexport type SharedDataType = 'all'\n | 'administrativeData'\n | 'generalInformation'\n | 'financialInformation'\n | 'medicalInformation'\n | 'sensitiveInformation'\n | 'confidentialInformation';\n\ninterface IUser {\n 'id'?: string;\n 'rev'?: string;\n 'deletionDate'?: number;\n 'created'?: number;\n 'name'?: string;\n 'properties'?: Set;\n 'roles'?: Set;\n 'login'?: string;\n 'passwordHash'?: string;\n 'secret'?: string;\n 'use2fa'?: boolean;\n 'groupId'?: string;\n 'healthcarePartyId'?: string;\n 'patientId'?: string;\n 'deviceId'?: string;\n 'sharingDataWith'?: { [key in SharedDataType]?: Set; };\n 'email'?: string;\n 'mobilePhone'?: string;\n 'authenticationTokens'?: { [key: string]: AuthenticationToken; };\n}\n","export * from './Address'\nexport * from './AuthenticationToken'\nexport * from './Coding'\nexport * from './CodingReference'\nexport * from './Connection'\nexport * from './Content'\nexport * from './DataSample'\nexport * from './Delegation'\nexport * from './Document'\nexport * from './Filter'\nexport * from './HealthcareElement'\nexport * from './HealthcareProfessional'\nexport * from './Identifier'\nexport * from './InlineResponse403'\nexport * from './Measure'\nexport * from './MedicalDevice'\nexport * from './PaginatedDocumentKeyAndIdPairObject'\nexport * from './PaginatedListCoding'\nexport * from './PaginatedListDataSample'\nexport * from './PaginatedListHealthcareElement'\nexport * from './PaginatedListHealthcareProfessional'\nexport * from './PaginatedListMedicalDevice'\nexport * from './PaginatedListPatient'\nexport * from './PaginatedListUser'\nexport * from './Partnership'\nexport * from './Patient'\nexport * from './PatientHealthCareParty'\nexport * from './PersonName'\nexport * from './Property'\nexport * from './PropertyType'\nexport * from './SystemMetaDataEncrypted'\nexport * from './SystemMetaDataOwner'\nexport * from './SystemMetaDataOwnerEncrypted'\nexport * from './Telecom'\nexport * from './TimeSeries'\nexport * from './TypedValueObject'\nexport * from './User'\nexport * from './RecaptchaType'\n","export abstract class ErrorHandler {\n public createErrorWithMessage(message: string): Error {\n return this.createError(Error(message))\n }\n\n public createError(error: Error): Error {\n return error\n }\n\n public createErrorFromAny(reason: any): Error {\n if (reason instanceof Error) {\n return this.createError(reason)\n }\n if (typeof reason === 'string') {\n return this.createErrorWithMessage(reason)\n }\n throw reason\n }\n}\n","import { CryptoPrimitives } from '@icure/api/icc-x-api/crypto/CryptoPrimitives'\nimport { KeyPair } from '@icure/api/icc-x-api/crypto/RSA'\nimport { DataOwnerTypeEnum, DataOwnerWithType } from '../models/DataOwner'\nimport { CryptoActorStubWithType } from '@icure/api/icc-api/model/CryptoActorStub'\n\n/**\n * Allows to customise the behaviour of the med tech api to better suit your needs.\n *\n * An important task which should be done in these crypto strategies is public key verification: in general there is no\n * guarantee that the public keys stored in the iCure database are authentic, i.e. created by the data owner they are\n * associated to. This is because the database admins or a malicious attacker may have added his own public keys to the\n * data owner's public keys.\n * Sharing any kind of data using unverified public keys could potentially cause a data leak: this is why when creating\n * new exchange keys or when creating recovery data only verified keys will be considered. Unverified keys can still be\n * safely used for decryption of data.\n */\nexport interface MedTechCryptoStrategies {\n /**\n * Method called during initialisation if the api could not find and/or verify some key pairs for the current data\n * owner. This method allows you to implement custom key recovery methods and to support iCure's key recovery methods\n * by verifying keys.\n *\n * Any key recovered automatically by iCure will only be used for the decryption of data and not for the encryption of\n * new data. Verified keys instead will be used for both encryption and decryption (if the private key is also\n * available); additionally regardless of the availability of the private key verified keys will be used also to\n * automatically improve the metadata for iCure's key recovery methods.\n *\n * @param self the current data owner.\n * @param missingKeys hex-encoded spki representation of public keys which could not be found for the current data\n * owner. May overlap with {@link unverifiedKeys}.\n * @param unverifiedKeys hex-encoded spki representation of public keys which could not be verified as authentic. May\n * overlap with {@link missingKeys}.\n * @return\n * an object containing:\n * - `recoveredKeyPairs`: all recovered key pairs. They will automatically be considered as verified.\n * - `verifiedKeys`: an object associating each key of {@link unverifiedKeys} to the\n * {@link MedTechCryptoStrategies.KeyVerificationBehaviour verification behaviour} for that key. All unverified keys\n * which are not also recovered must be included here.\n */\n recoverAndVerifyKeys(\n self: DataOwnerWithType,\n missingKeys: string[],\n unverifiedKeys: string[]\n ): Promise<{\n recoveredKeyPairs: KeyPair[]\n verifiedKeys: { [publicKey: string]: MedTechCryptoStrategies.KeyVerificationBehaviour }\n }>\n\n /**\n * Method called during the initialisation of the medtech API. For the correct initialisation of the api at least key\n * pair must be available for the logged data owner. If no key is available the api initialisation will call this\n * method to determine if it is allowed to create new key pairs.\n * @param self the current data owner.\n * @return true if the api initialisation can generate a new key pair, false if not; if false the api initialisation\n * will fail.\n */\n allowNewKeyPairGeneration(self: DataOwnerWithType): Promise\n\n /**\n * Method called when a new key pair is generated. Will be called only once during the initialisation of the api and\n * won't ever be called afterwards.\n * @param keyPair the generated key pair in hex-encoded spki format.\n */\n notifyKeyPairGeneration(keyPair: KeyPair): Promise\n\n /**\n * Verifies if the public keys of a data owner which will be the delegate of a new exchange key do actually belong to\n * the person the data owner represents. This method is not called when the delegate would be the current data owner\n * for the api.\n *\n * The user will have to obtain the verified public keys of the delegate from outside iCure, for example by email with\n * another hcp, by checking the personal website of the other user, or by scanning verification qr codes at the doctor\n * office...\n *\n * As long as one of the public keys is verified the creation of a new exchange key will succeed. If no public key is\n * verified the operation will fail.\n * @param delegateId the potential data owner delegate id.\n * @param publicKeys public keys requiring verification, in spki hex-encoded format.\n * @param cryptoPrimitives cryptographic primitives you can use to support the process.\n * @return all verified public keys, in spki hex-encoded format.\n */\n verifyDelegatePublicKeys(delegateId: string, publicKeys: string[], cryptoPrimitives: CryptoPrimitives): Promise\n}\n\nexport namespace MedTechCryptoStrategies {\n /**\n * Specifies how the api should treat unverified key pairs for the data owner.\n */\n export enum KeyVerificationBehaviour {\n /**\n * The key pair will be marked as unverified and this result will be stored locally. Future instantiation of the api\n * with access to the same local storage (StorageFacade) will consider the key as unverified, without asking again\n * the crypto strategies for verification of the key.\n */\n MARK_UNVERIFIED = 'MARK_UNVERIFIED',\n /**\n * The key will be considered as unverified for this instance of the medtech api. Future instantiation of the api\n * will ask again for the verification of the key.\n */\n TEMPORARILY_UNVERIFIED = 'TEMPORARILY_UNVERIFIED',\n /**\n * The key pair will be marked as verified and this result will be stored locally. Future instantiation of the api\n * with access to the same local storage (StorageFacade) will consider the key as verified, without asking again\n * the crypto strategies for verification of the key.\n */\n MARK_VERIFIED = 'MARK_VERIFIED',\n }\n}\n","import { XHR } from '@icure/api'\nimport { ErrorHandler } from '../ErrorHandler'\nimport XHRError = XHR.XHRError\n\nexport class ErrorHandlerImpl extends ErrorHandler {\n public createError(error: Error): Error {\n switch (error.constructor) {\n case XHRError:\n return this.handleXHRError(error as XHRError)\n default:\n return error\n }\n }\n\n private handleXHRError(xhrError: XHR.XHRError, message?: string): Error {\n return new Error(\n `${xhrError.statusCode} - ${message ?? xhrError.message}\\nX-Request-Id: ${xhrError.headers.get('X-Request-Id')}\\nURL: ${xhrError.url}`\n )\n }\n}\n","import { Sanitizer } from '../Sanitizer'\nimport { ErrorHandler } from '../ErrorHandler'\n\nexport class SanitizerImpl implements Sanitizer {\n private readonly errorHandler: ErrorHandler\n\n constructor(errorHandler: ErrorHandler) {\n this.errorHandler = errorHandler\n }\n\n validateEmail(email?: string): string {\n const regex =\n /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\n if (email?.match(regex)) {\n return email\n }\n throw this.errorHandler.createErrorWithMessage(\n 'Invalid email address. Provided email must satisfy the format RFC5322 : local-part@domain.extension'\n )\n }\n\n validateMobilePhone(mobilePhone?: string): string {\n const regex = /^\\+[1-9][0-9]{3,14}$/\n if (mobilePhone?.match(regex)) {\n return mobilePhone\n }\n throw this.errorHandler.createErrorWithMessage('Invalid phone number. Provided mobile phone must satisfy the following format : +XXXXXXXXX')\n }\n}\n","import { MedTechCryptoStrategies } from '../MedTechCryptoStrategies'\nimport { KeyPair } from '@icure/api/icc-x-api/crypto/RSA'\nimport { CryptoPrimitives } from '@icure/api/icc-x-api/crypto/CryptoPrimitives'\nimport { DataOwnerTypeEnum, DataOwnerWithType } from '../../models/DataOwner'\n\n/**\n * Implementation of med-tech crypto strategies which uses pre-loaded keys for initialisation and puts full trust on the\n * server in regard to public keys.\n *\n * The pre-loaded keys are used during the initialisation as recovered keys if some keys could not be found\n * automatically by the api initialisation procedure. There is no need to provide keys from the key storage if they\n * were stored at standard entries, nor keys recovered from transfer keys and/or shamir splits, as these will be\n * automatically loaded by the initialisation procedure.\n */\nexport class SimpleMedTechCryptoStrategies implements MedTechCryptoStrategies {\n /**\n * If a new key pair was initialised during api initialisation this will return the generated keypair.\n */\n get generatedKeyPair(): KeyPair | undefined {\n return this._generatedKeyPair ? { ...this._generatedKeyPair } : undefined\n }\n private _generatedKeyPair: KeyPair | undefined\n\n /**\n * Builds a new instance of simple med-tech crypto strategies:\n * @param availableKeys pre-loaded available keys which may not be contained yet in the key storage. Will be also\n * considered as verified.\n */\n constructor(private readonly availableKeys: KeyPair[]) {}\n\n allowNewKeyPairGeneration(self: DataOwnerWithType): Promise {\n return Promise.resolve(true)\n }\n\n recoverAndVerifyKeys(\n self: DataOwnerWithType,\n missingKeys: string[],\n unverifiedKeys: string[]\n ): Promise<{\n recoveredKeyPairs: KeyPair[]\n verifiedKeys: { [p: string]: MedTechCryptoStrategies.KeyVerificationBehaviour }\n }> {\n const availableKeysByPublic = Object.fromEntries(this.availableKeys.map((keyPair) => [keyPair.publicKey, keyPair] as [string, KeyPair]))\n const recoveredKeyPairs = missingKeys.flatMap((missingKey) => {\n const availableKey = availableKeysByPublic[missingKey]\n return availableKey ? [availableKey] : []\n })\n const recoveredPublicKeysSet = new Set(recoveredKeyPairs.map((keyPair) => keyPair.publicKey))\n const verifiedKeys = Object.fromEntries(\n unverifiedKeys\n .filter((unverifiedKey) => !recoveredPublicKeysSet.has(unverifiedKey))\n .map(\n (unverifiedKey) =>\n [\n unverifiedKey,\n !!availableKeysByPublic[unverifiedKey]\n ? MedTechCryptoStrategies.KeyVerificationBehaviour.MARK_VERIFIED\n : MedTechCryptoStrategies.KeyVerificationBehaviour.TEMPORARILY_UNVERIFIED,\n ] as [string, MedTechCryptoStrategies.KeyVerificationBehaviour]\n )\n )\n return Promise.resolve({ recoveredKeyPairs, verifiedKeys })\n }\n\n async notifyKeyPairGeneration(keyPair: KeyPair): Promise {\n if (!!this._generatedKeyPair) throw new Error('A new key pair was already created')\n this._generatedKeyPair = keyPair\n }\n\n verifyDelegatePublicKeys(delegateId: string, publicKeys: string[], cryptoPrimitives: CryptoPrimitives): Promise {\n return Promise.resolve(publicKeys)\n }\n}\n","/**\n * Returns if a specific http code is in a given code range\n * where the code range is defined as a combination of digits\n * and \"X\" (the letter X) with a length of 3\n *\n * @param codeRange string with length 3 consisting of digits and \"X\" (the letter X)\n * @param code the http status code to be checked against the code range\n */\nexport function isCodeInRange(codeRange: string, code: number): boolean {\n // This is how the default value is encoded in OAG\n if (codeRange === '0') {\n return true\n }\n if (codeRange == code.toString()) {\n return true\n } else {\n const codeString = code.toString()\n if (codeString.length != codeRange.length) {\n return false\n }\n for (let i = 0; i < codeString.length; i++) {\n if (codeRange.charAt(i) != 'X' && codeRange.charAt(i) != codeString.charAt(i)) {\n return false\n }\n }\n return true\n }\n}\n\n/**\n * Returns if it can consume form\n *\n * @param consumes array\n */\nexport function canConsumeForm(contentTypes: string[]): boolean {\n return contentTypes.indexOf('multipart/form-data') !== -1\n}\n\nexport function formatICureApiUrl(iCureUrl: string): string {\n let formattedEndUrl = removeSlashEndOfApiUrl(iCureUrl)\n\n if (formattedEndUrl.match('^https?://[a-zA-Z0-9.-]+(:[0-9]+)?$') != null) {\n return formattedEndUrl\n }\n\n throw Error(\n `Invalid API URL: Should respect the format ^https?://[a-zA-Z0-9.-]+{2,}(:d+)?$. Consider using only the constants of index.ts, except if you received any other information from the iCure Team`\n )\n}\n\nfunction removeSlashEndOfApiUrl(apiUrl: string): string {\n return apiUrl.endsWith('/') ? apiUrl.substring(0, apiUrl.length - 1) : apiUrl\n}\n","import {Address, AddressAddressTypeEnum} from \"../models/Address\";\nimport {Telecom, TelecomTelecomTypeEnum} from \"../models/Telecom\";\n\nexport function filteredContactsFromAddresses(addresses: Array
, telecomType: TelecomTelecomTypeEnum, addressType?: AddressAddressTypeEnum): Telecom | undefined {\n return addresses\n .filter( address => (!addressType || address.addressType === addressType) &&\n address.telecoms.filter( telecom => telecom.telecomType === telecomType).length > 0)\n .map( address => address.telecoms.filter( telecom => telecom.telecomType === telecomType).pop())\n .filter( telecom => !!telecom)[0];\n}\n","import {add, compareAsc} from 'date-fns';\n\nexport class CachedMap {\n private readonly expirationInSeconds: number;\n private readonly maxSize: number;\n\n private cachedElements: { [key: string]: CachedElement } = {};\n\n constructor(expirationInSeconds: number = 60 * 5, maxSize: number = 1000) {\n this.expirationInSeconds = expirationInSeconds;\n this.maxSize = maxSize;\n }\n\n\n getIfPresent(key: string) : V | undefined {\n let element = this.cachedElements[key];\n if (element == undefined || compareAsc(new Date(), add(element.creationDateTime, { seconds: this.expirationInSeconds })) > 0) {\n delete this.cachedElements[key];\n return undefined;\n } else {\n return element.value;\n }\n }\n\n getAllPresent(keys: Array) : { [key: string]: V } {\n let cachedValues: { [key: string]: V } = {};\n\n keys.forEach((keyToFind) => {\n let value = this.getIfPresent(keyToFind);\n if (value != null) {\n cachedValues[keyToFind] = value;\n }\n });\n\n return cachedValues;\n }\n\n invalidate(key: string) {\n delete this.cachedElements[key];\n }\n\n invalidateAll(keys?: Array) {\n if (keys) {\n keys.forEach((keyToDelete) => {\n this.invalidate(keyToDelete);\n })\n } else {\n this.invalidateAll(Object.keys(this.cachedElements))\n }\n }\n\n\n put(key: string, value: V) {\n if (Object.entries(this.cachedElements).length == this.maxSize) {\n this.invalidateOldestValue();\n }\n\n this.cachedElements[key] = new CachedElement(value);\n }\n\n invalidateOldestValue() {\n let [oldestEntryKey, oldestEntryValue] = Object.entries(this.cachedElements)[0];\n Object.entries(this.cachedElements).forEach(([k, v]) => {\n if (compareAsc(oldestEntryValue.creationDateTime, v.creationDateTime) > 0) {\n oldestEntryKey = k;\n oldestEntryValue = v;\n }\n });\n\n delete this.cachedElements[oldestEntryKey];\n }\n}\n\nclass CachedElement {\n value: V;\n creationDateTime: Date;\n\n constructor(value: V, creationDateTime: Date = new Date()) {\n this.value = value;\n this.creationDateTime = creationDateTime;\n }\n}\n","function xor(a: boolean, b: boolean): boolean {\n return (a && !b) || (!a && b)\n}\n\nexport function deepEquality(val1?: any, val2?: any): boolean {\n if (!val1 && !val2) return true\n else if (xor(!!val1, !!val2)) return false\n else if (Array.isArray(val1) && Array.isArray(val2)) return arrayEquality(val1, val2)\n else if (val1 instanceof Set && val2 instanceof Set) return setEquality(val1, val2)\n else if (typeof val1 === 'object' && typeof val2 === 'object') return objectEquality(val1, val2)\n else if (typeof val1 === typeof val2) return val1 === val2\n else return false\n}\n\nexport function setEquality(set1?: Set, set2?: Set): boolean {\n return !!set1 && !!set2 && arrayEquality(Array.from(set1), Array.from(set2))\n}\n\nexport function arrayEquality(arr1?: any[], arr2?: any[]): boolean {\n if (!arr1 && !arr2) return true\n else if (xor(!!arr1, !!arr2)) return false\n else if (!!arr1 && !!arr2 && arr1.length !== arr2.length) return false\n\n return arr1!.every((val1, _) => arr2!.some((val2) => deepEquality(val1, val2)))\n}\n\nexport function objectEquality(obj1?: { [key: string]: any }, obj2?: { [key: string]: any }): boolean {\n const keys1 = Object.keys(obj1 ?? {})\n const keys2 = Object.keys(obj2 ?? {})\n return (\n arrayEquality(keys1, keys2) &&\n keys1.every((key1, _) => {\n const val1 = obj1!![key1]\n const val2 = obj2!![key1]\n return deepEquality(val1, val2)\n })\n )\n}\n","/**\n * Filters out entries where the value is undefined.\n * @param obj an object\n * @return the input object without any undefined values\n */\nexport function filterUndefined(obj: T): T {\n const res: { [k: string]: any } = {}\n Object.entries(obj).forEach(([k, v]) => {\n if (v !== undefined) {\n res[k] = v\n }\n })\n return res as T\n}\n","\nexport function distinctBy(elements: Array, selector: (obj: T) => K) : Set {\n let set = new Set();\n elements.forEach((elem) => {\n let newElem = selector(elem);\n set.add(newElem);\n });\n return set;\n}\n\nexport function any(elements: Array, check: (obj: T) => boolean) : boolean {\n for (const elem of elements) {\n if (check(elem)) {\n return true;\n }\n }\n return false;\n}\n\nexport function firstOrNull(elements: Array): T | undefined {\n if (elements.length == 0) {\n return undefined;\n } else {\n return elements[0];\n }\n}\n\nexport function isNotEmpty(elements?: Array) : Boolean {\n return elements?.length != undefined && elements?.length > 0\n}\n\nexport function sumOf(elements: Array | undefined, selector: (obj: T) => number) : number {\n if (elements == undefined) {\n return 0;\n }\n\n let sum = 0;\n elements.forEach((element) => {\n sum += selector(element);\n });\n return sum;\n}\n","import { HealthcareProfessional } from '../models/HealthcareProfessional'\nimport { Patient } from '../models/Patient'\nimport { User } from '../models/User'\nimport { filteredContactsFromAddresses } from './addressUtils'\n\nexport type SMSMessage = { message: string }\nexport type EmailMessage = { from: string; html: string; subject: string }\nexport type AuthenticationProcessBody = {\n 'g-recaptcha-response': string | undefined\n 'friendly-captcha-response': string | undefined\n firstName: string\n lastName: string\n from: string | undefined\n email: string | undefined\n mobilePhone: string | undefined\n hcpId: string | undefined\n}\n\nexport interface MsgGtwMessageFactory {\n dataOwner: HealthcareProfessional | Patient\n link: string\n patient: Patient\n\n get(recipient: User, recipientPassword: string): T\n}\n\nexport interface EmailMessageFactory extends MsgGtwMessageFactory {}\n\nexport interface SMSMessageFactory extends MsgGtwMessageFactory {}\n\nexport class ICureRegistrationEmail implements EmailMessageFactory {\n dataOwner: HealthcareProfessional | Patient\n hcpEmail: string\n link: string\n solutionName: string\n patient: Patient\n\n constructor(dataOwner: HealthcareProfessional | Patient, link: string, solutionName: string, patient: Patient) {\n this.dataOwner = dataOwner\n this.link = link\n this.solutionName = solutionName\n const availableHcpEmail = filteredContactsFromAddresses(this.dataOwner.addresses, 'email')\n if (!availableHcpEmail || !availableHcpEmail.telecomNumber) throw new Error('HCP does not have a valid email!')\n this.hcpEmail = availableHcpEmail.telecomNumber\n this.patient = patient\n }\n\n get(recipient: User, recipientPassword: string): EmailMessage {\n return {\n from: this.hcpEmail,\n html: `Dear ${this.patient.firstName}, you have been invited by ${this.dataOwner.lastName} to use ${this.solutionName}. Go to the link ${this.link} and use the following credentials : ${recipient.login} & ${recipientPassword}`,\n subject: `You have been invited to use ${this.solutionName}`,\n }\n }\n}\n\nexport class ICureRegistrationSMS implements SMSMessageFactory {\n dataOwner: HealthcareProfessional | Patient\n link: string\n solutionName: string\n patient: Patient\n\n constructor(dataOwner: HealthcareProfessional | Patient, link: string, solutionName: string, patient: Patient) {\n this.dataOwner = dataOwner\n this.link = link\n this.solutionName = solutionName\n this.patient = patient\n }\n\n get(recipient: User, recipientPassword: string): SMSMessage {\n return {\n message: `Dear ${this.patient.firstName}, you have been invited by ${this.dataOwner.lastName} to use ${this.solutionName}. Go to the link ${this.link} and use the following credentials : ${recipient.login} & ${recipientPassword}`,\n }\n }\n}\n","export namespace UtiDetector {\n const jpegExtensions = ['jpeg', 'jpg', 'jfif', 'jpe']\n const txtExtensions = ['txt', 'text', 'ini']\n const rtfExtensions = ['rtf', 'rtx']\n const htmlExtensions = ['html', 'htm', 'xhtml', 'xhtm', 'shtml', 'shtm']\n const xmlExtensions = ['xml', 'xsd', 'xsl']\n\n export const getUtiFor = (documentName: string | undefined) => {\n if (documentName == undefined) {\n return undefined\n }\n\n let pos = documentName.lastIndexOf('.')\n let fileExtension = pos != -1 ? documentName.substring(pos + 1, documentName.length) : undefined\n if (fileExtension == undefined) {\n return undefined\n }\n\n if (jpegExtensions.includes(fileExtension)) {\n return 'public.jpeg'\n }\n\n if (txtExtensions.includes(fileExtension)) {\n return 'public.plain-text'\n }\n\n if (rtfExtensions.includes(fileExtension)) {\n return 'public.rtf'\n }\n\n if (htmlExtensions.includes(fileExtension)) {\n return 'public.html'\n }\n\n if (fileExtension == 'json') {\n return 'public.json'\n }\n\n if (xmlExtensions.includes(fileExtension)) {\n return 'public.xml'\n }\n\n if (fileExtension == 'png') {\n return 'public.png'\n }\n\n if (fileExtension == 'pdf') {\n return 'public.adobe.pdf'\n }\n\n return undefined\n }\n}\n","import * as WebSocketNode from 'ws'\nimport { Filter } from '../filter/Filter'\nimport { Patient } from '../models/Patient'\nimport { DataSample } from '../models/DataSample'\nimport { User } from '../models/User'\nimport { Notification } from '../models/Notification'\nimport { FilterMapper } from '../mappers/filter'\nimport { UserMapper } from '../mappers/user'\nimport { HealthElement, IccAuthApi, MaintenanceTask, Patient as PatientDto, Service, User as UserDto } from '@icure/api'\nimport { PatientMapper } from '../mappers/patient'\nimport { DataSampleMapper } from '../mappers/serviceDataSample'\nimport { HealthcareElement } from '../models/HealthcareElement'\nimport { HealthcareElementMapper } from '../mappers/healthcareElement'\nimport { NotificationMapper } from '../mappers/notification'\nimport log, { LogLevelDesc } from 'loglevel'\nimport { iccRestApiPath } from '@icure/api/icc-api/api/IccRestApiPath'\nimport { isNode } from 'browser-or-node'\nexport type EventTypes = 'CREATE' | 'UPDATE' | 'DELETE'\ntype Subscribable = 'Patient' | 'DataSample' | 'User' | 'HealthcareElement' | 'Notification'\n\nlog.setLevel((process.env.WEBSOCKET_LOG_LEVEL as LogLevelDesc) ?? 'info')\n\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Patient',\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: Patient) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number },\n decryptor: (encrypted: PatientDto) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'DataSample',\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: DataSample) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number },\n decryptor: (encrypted: Service) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'HealthcareElement',\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: HealthcareElement) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number },\n decryptor: (encrypted: HealthElement) => Promise\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'User',\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: User) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number }\n): Promise\nexport function subscribeToEntityEvents(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: 'Notification',\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: Notification) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number },\n decryptor: (encrypted: MaintenanceTask) => Promise\n): Promise\n\nexport function subscribeToEntityEvents<\n O extends Patient | DataSample | User | HealthcareElement | Notification,\n T extends PatientDto | Service | HealthElement | MaintenanceTask\n>(\n basePath: string,\n authApi: IccAuthApi,\n entityClass: Subscribable,\n eventTypes: EventTypes[],\n filter: Filter | undefined,\n eventFired: (entity: O) => Promise,\n options: { connectionMaxRetry?: number; connectionRetryIntervalMs?: number } = {},\n decryptor?: (encrypted: T) => Promise\n): Promise {\n const config = {\n User: {\n qualifiedName: 'org.taktik.icure.entities.User',\n filter: (filter: Filter) => FilterMapper.toAbstractFilterDto(filter, 'User'),\n mapper: (data: UserDto) => Promise.resolve(UserMapper.toUser(data as UserDto)! as O),\n },\n Patient: {\n qualifiedName: 'org.taktik.icure.entities.Patient',\n filter: (filter: Filter) => FilterMapper.toAbstractFilterDto(filter, 'Patient'),\n mapper: (data: PatientDto) => decryptor!(data as PatientDto as T).then((p) => PatientMapper.toPatient(p as PatientDto)! as O),\n },\n DataSample: {\n qualifiedName: 'org.taktik.icure.entities.embed.Service',\n filter: (filter: Filter) => FilterMapper.toAbstractFilterDto(filter, 'DataSample'),\n mapper: (data: Service) => decryptor!(data as Service as T).then((s) => DataSampleMapper.toDataSample(s as Service)! as O),\n },\n HealthcareElement: {\n qualifiedName: 'org.taktik.icure.entities.HealthElement',\n filter: (filter: Filter) => FilterMapper.toAbstractFilterDto(filter, 'HealthcareElement'),\n mapper: (data: HealthElement) =>\n decryptor!(data as HealthElement as T).then((h) => HealthcareElementMapper.toHealthcareElement(h as HealthElement)! as O),\n },\n Notification: {\n qualifiedName: 'org.taktik.icure.entities.MaintenanceTask',\n filter: (filter: Filter) => FilterMapper.toAbstractFilterDto(filter, 'Notification'),\n mapper: (data: MaintenanceTask) =>\n decryptor!(data as MaintenanceTask as T).then((n) => NotificationMapper.toNotification(n as MaintenanceTask)! as O),\n },\n }\n\n return WebSocketWrapper.create(\n iccRestApiPath(basePath).replace('http', 'ws').replace('rest', 'ws') + '/notification/subscribe',\n new WebSocketAuthProviderImpl(authApi),\n options.connectionMaxRetry ?? 5,\n options.connectionRetryIntervalMs ?? 1_000,\n {\n CONNECTED: [\n async (ws: WebSocketWrapper) => {\n const subscription = {\n eventTypes,\n entityClass: config[entityClass].qualifiedName,\n filter: filter\n ? {\n filter: config[entityClass].filter(filter),\n }\n : undefined,\n }\n\n ws.send(JSON.stringify(subscription))\n },\n ],\n },\n async (data: any) => {\n try {\n await config[entityClass].mapper(data).then((o) => eventFired(o))\n } catch (e) {\n log.error(e)\n }\n }\n )\n}\n\nexport type ConnectionStatus = 'NOT_CONNECTED' | 'CONNECTED' | 'CLOSED' | 'ERROR'\nexport type StatusCallback = (ws: WebSocketWrapper) => void\nexport type ErrorStatusCallback = (ws: WebSocketWrapper, error?: Error) => void\nexport type ConnectionStatusFunction = {\n [K in ConnectionStatus]: K extends 'ERROR' ? ErrorStatusCallback : StatusCallback\n}\nexport type ConnectionStatusFunctions = {\n [K in ConnectionStatus]?: K extends 'ERROR' ? Array : Array\n}\nexport type WebSocketWrapperMessageCallback = (data: any) => void\n\nexport class WebSocketWrapper {\n private readonly pingLifetime: number = 20_000\n private socket: WebSocketNode | WebSocket | null = null\n private retries = 0\n private closed = false\n private lastPingReceived = Date.now()\n private intervalIds: (NodeJS.Timeout | number)[] = []\n private readonly methodPath: string\n\n private constructor(\n private readonly url: string,\n private readonly authProvider: WebSocketAuthProvider,\n private readonly maxRetries = 3,\n private readonly retryDelay = 1000,\n private readonly statusCallbacks: ConnectionStatusFunctions = {},\n private readonly messageCallback: WebSocketWrapperMessageCallback = () => {}\n ) {\n this.methodPath = new URL(url).pathname\n }\n\n public static async create(\n url: string,\n authProvider: WebSocketAuthProvider,\n maxRetries?: number,\n retryDelay?: number,\n statusCallbacks?: ConnectionStatusFunctions,\n messageCallback?: WebSocketWrapperMessageCallback\n ): Promise {\n const ws = new WebSocketWrapper(url, authProvider, maxRetries, retryDelay, statusCallbacks, messageCallback)\n await ws.connect()\n return ws\n }\n\n public send(data: Buffer | ArrayBuffer | string) {\n if (this.socket && this.socket.readyState === WebSocketNode.OPEN) {\n this.socket.send(data)\n }\n }\n\n public close() {\n if (this.socket) {\n this.closed = true\n this.socket.close(1001, 'Client closed connection')\n }\n }\n\n public addStatusCallback(status: ConnectionStatus, callback: ConnectionStatusFunction[ConnectionStatus]) {\n switch (status) {\n case 'CONNECTED':\n case 'CLOSED':\n if (!this.statusCallbacks[status]) this.statusCallbacks[status] = []\n this.statusCallbacks?.[status]?.push(callback)\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.push(callback)\n break\n }\n }\n\n private async connect() {\n if (this.retries >= this.maxRetries) {\n throw new Error('WebSocket connection failed after ' + this.maxRetries + ' retries')\n }\n\n const bearerToken = await this.authProvider.getBearerToken()\n\n if (isNode) {\n const socket: WebSocketNode = !!bearerToken\n ? new WebSocketNode(this.url, {\n headers: {\n Authorization: bearerToken,\n },\n })\n : await this.authProvider.getIcureOtt(this.methodPath).then((icureOttToken) => new WebSocketNode(`${this.url};tokenid=${icureOttToken}`))\n this.socket = socket\n\n socket.on('open', async () => {\n log.debug('WebSocket connection opened')\n\n this.intervalIds.push(\n setTimeout(() => {\n this.retries = 0\n }, (this.maxRetries + 1) * this.retryDelay)\n )\n\n this.callStatusCallbacks('CONNECTED')\n })\n\n socket.on('message', (event: Buffer) => {\n log.debug('WebSocket message received', event)\n\n const dataAsString = event.toString('utf8')\n\n // Handle ping messages\n if (dataAsString === 'ping') {\n log.debug('Received ping, sending pong')\n\n this.send('pong')\n this.lastPingReceived = Date.now()\n\n this.intervalIds.push(\n setTimeout(() => {\n if (Date.now() - this.lastPingReceived > this.pingLifetime) {\n log.error(`No ping received in the last ${this.pingLifetime} ms`)\n this.socket?.close()\n }\n }, this.pingLifetime)\n )\n\n return\n }\n\n // Call the message callback for other messages\n try {\n const data = JSON.parse(dataAsString)\n this.messageCallback(data)\n } catch (error) {\n log.error('Failed to parse WebSocket message', error)\n }\n })\n\n socket.on('close', (code, reason) => {\n log.debug('WebSocket connection closed', code, reason.toString('utf8'))\n\n this.callStatusCallbacks('CLOSED')\n\n this.intervalIds.forEach((id) => clearTimeout(id as number))\n this.intervalIds = []\n\n if (this.closed) {\n return\n }\n\n setTimeout(async () => {\n ++this.retries\n return await this.connect()\n }, this.retryDelay)\n })\n\n socket.on('error', async (err) => {\n log.error('WebSocket error', err)\n\n this.callStatusCallbacks('ERROR', err)\n\n if (this.socket) {\n this.socket.close()\n }\n })\n } else {\n throw new Error('Subscription api is not yet supported in browser')\n // TODO implement browser version\n // const socket: WebSocket = await this.authProvider.getIcureOtt(this.methodPath).then((icureOttToken) => new WebSocket(`${this.url};tokenid=${icureOttToken}`))\n // this.socket = socket\n //\n // socket.addEventListener('open', async () => {\n // log.debug('WebSocket connection opened')\n //\n // this.intervalIds.push(\n // setTimeout(() => {\n // this.retries = 0\n // }, (this.maxRetries + 1) * this.retryDelay)\n // )\n //\n // this.callStatusCallbacks('CONNECTED')\n // })\n //\n // const decoder = new TextDecoder('utf-8')\n // socket.addEventListener('message', async (event: MessageEvent) => {\n // log.debug('WebSocket message received', event)\n //\n // let dataAsString: string | undefined\n // if (event.type === 'text') {\n // dataAsString = event.data\n // } else if (event.type === 'binary') {\n // const binaryType = socket.binaryType\n // if (binaryType === 'arraybuffer') {\n // dataAsString = decoder.decode(event.data as ArrayBuffer)\n // } else if (binaryType === 'blob') {\n // dataAsString = decoder.decode(await (event.data as Blob).arrayBuffer())\n // } else log.error(\"Unexpected binary type: \" + binaryType)\n // } else log.error(\"Unexpected event type: \" + event.type)\n //\n // if (!dataAsString) {\n // log.error(\"Failed to parse WebSocket message\")\n // return\n // }\n //\n // // Handle ping messages\n // if (dataAsString === 'ping') {\n // log.debug('Received ping, sending pong')\n //\n // this.send('pong')\n // this.lastPingReceived = Date.now()\n //\n // this.intervalIds.push(\n // setTimeout(() => {\n // if (Date.now() - this.lastPingReceived > this.pingLifetime) {\n // log.error(`No ping received in the last ${this.pingLifetime} ms`)\n // this.socket?.close()\n // }\n // }, this.pingLifetime)\n // )\n //\n // return\n // }\n //\n // // Call the message callback for other messages\n // try {\n // const data = JSON.parse(dataAsString)\n // this.messageCallback(data)\n // } catch (error) {\n // log.error('Failed to parse WebSocket message', error)\n // }\n // })\n //\n // socket.addEventListener('close', (event) => {\n // log.debug('WebSocket connection closed', event.code, event.reason)\n //\n // this.callStatusCallbacks('CLOSED')\n //\n // this.intervalIds.forEach((id) => clearTimeout(id as number))\n // this.intervalIds = []\n //\n // if (this.closed) {\n // return\n // }\n //\n // setTimeout(async () => {\n // ++this.retries\n // return await this.connect()\n // }, this.retryDelay)\n // })\n //\n // socket.addEventListener('error', async (err) => {\n // log.error('WebSocket error', err)\n //\n // this.callStatusCallbacks('ERROR', new Error(\"WebSocket error event received: \" + JSON.stringify(err)))\n //\n // if (this.socket) {\n // this.socket.close()\n // }\n // })\n }\n }\n\n private callStatusCallbacks(event: ConnectionStatus, error?: Error) {\n switch (event) {\n case 'CONNECTED':\n case 'CLOSED':\n this.statusCallbacks?.[event]?.forEach((callback) => callback(this))\n break\n case 'ERROR':\n this.statusCallbacks?.ERROR?.forEach((callback) => callback(this, error))\n break\n }\n }\n}\n\ninterface WebSocketAuthProvider {\n getBearerToken(): Promise\n getIcureOtt(icureMethodPath: string): Promise\n}\n\nclass WebSocketAuthProviderImpl {\n constructor(private readonly authApi: IccAuthApi) {}\n\n async getBearerToken(): Promise {\n const headers = await this.authApi.authenticationProvider.getAuthService().getAuthHeaders()\n return headers.find((header) => header.header === 'Authorization' && header.data.startsWith('Bearer '))?.data\n }\n\n async getIcureOtt(icureMethodPath: string): Promise {\n return await this.authApi.token('GET', icureMethodPath)\n }\n}\n","import { addTracingExtensions, getMainCarrier } from '@sentry/core';\nimport type { Integration, IntegrationClass } from '@sentry/types';\nimport { dynamicRequire, isNodeEnv, loadModule } from '@sentry/utils';\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mysql() {\n const integration = dynamicRequire(module, './node/integrations/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './node/integrations/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type {\n Breadcrumb,\n BreadcrumbHint,\n CaptureContext,\n CheckIn,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n FinishedCheckIn,\n MonitorConfig,\n Primitive,\n Scope as ScopeInterface,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Span,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception: any,\n hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(callback);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(() => {\n // eslint-disable-next-line deprecation/deprecation\n hub.getStackTop().scope = scope as Scope;\n return callback(scope as Scope);\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return runWithAsyncContext(() => {\n return callback(getIsolationScope());\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span, callback: (scope: Scope) => T): T {\n return withScope(scope => {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n return callback(scope);\n });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n // eslint-disable-next-line deprecation/deprecation\n): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n * @deprecated This function will be removed in the next major version of the Sentry SDK.\n */\nexport function lastEventId(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getClient();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Client,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n PropagationContext,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n ScopeData,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /**\n * Transaction Name\n */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** The client on this scope */\n protected _client?: Client;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n public static clone(scope?: Scope): Scope {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n public getClient(): Client | undefined {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n public getAttachments(): Attachment[] {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n public getScopeData(): ScopeData {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n public applyToEvent(\n event: Event,\n hint: EventHint = {},\n additionalEventProcessors: EventProcessor[] = [],\n ): PromiseLike {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors: EventProcessor[] = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n","export const SDK_VERSION = '7.114.0';\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isThenable,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n /** Whether to reuse an existing async context if one exists. Defaults to false. */\n reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n /**\n * Gets the current async context. Returns undefined if there is no current async context.\n */\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub | undefined;\n /**\n * Runs the supplied callback in its own async context.\n */\n runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n // eslint-disable-next-line deprecation/deprecation\n hub?: Hub;\n acs?: AsyncContextStrategy;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n private _isolationScope: Scope;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n *\n * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n *\n * If you are currently using the Hub for multi-client use like so:\n *\n * ```\n * // OLD\n * const hub = new Hub();\n * hub.bindClient(client);\n * makeMain(hub)\n * ```\n *\n * instead initialize the client as follows:\n *\n * ```\n * // NEW\n * Sentry.withIsolationScope(() => {\n * Sentry.setCurrentClient(client);\n * client.init();\n * });\n * ```\n *\n * If you are using the Hub to capture events like so:\n *\n * ```\n * // OLD\n * const client = new Client();\n * const hub = new Hub(client);\n * hub.captureException()\n * ```\n *\n * instead capture isolated events as follows:\n *\n * ```\n * // NEW\n * const client = new Client();\n * const scope = new Scope();\n * scope.setClient(client);\n * scope.captureException();\n * ```\n */\n public constructor(\n client?: Client,\n scope?: Scope,\n isolationScope?: Scope,\n private readonly _version: number = API_VERSION,\n ) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n assignedScope.setClient(client);\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n assignedIsolationScope.setClient(client);\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n this._stack = [{ scope: assignedScope }];\n\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n this.bindClient(client);\n }\n\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Checks if this hub's version is older than the given version.\n *\n * @param version A version number to compare to.\n * @return True if the given version is newer; otherwise false.\n *\n * @deprecated This will be removed in v8.\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * This binds the given client to the current scope.\n * @param client An SDK client (client) instance.\n *\n * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n */\n public bindClient(client?: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const top = this.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n // eslint-disable-next-line deprecation/deprecation\n if (client && client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope().clone();\n // eslint-disable-next-line deprecation/deprecation\n this.getStack().push({\n // eslint-disable-next-line deprecation/deprecation\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public popScope(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n if (this.getStack().length <= 1) return false;\n // eslint-disable-next-line deprecation/deprecation\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.withScope()` instead.\n */\n public withScope(callback: (scope: Scope) => T): T {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return res;\n },\n e => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n },\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return maybePromiseResult;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.getClient()` instead.\n */\n public getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n *\n * @deprecated Use `Sentry.getCurrentScope()` instead.\n */\n public getScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().scope;\n }\n\n /**\n * @deprecated Use `Sentry.getIsolationScope()` instead.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the scope stack for domains or the process.\n * @deprecated This will be removed in v8.\n */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n * @deprecated This will be removed in v8.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureException()` instead.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureException(exception, {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureMessage()` instead.\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureMessage(message, level, {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureEvent()` instead.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated This will be removed in v8.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.addBreadcrumb()` instead.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n // the event processing pipeline.\n // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setUser()` instead.\n */\n public setUser(user: User | null): void {\n // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setUser(user);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTags()` instead.\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTags(tags);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtras()` instead.\n */\n public setExtras(extras: Extras): void {\n // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtras(extras);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTag()` instead.\n */\n public setTag(key: string, value: Primitive): void {\n // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTag(key, value);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtra()` instead.\n */\n public setExtra(key: string, extra: Extra): void {\n // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtra(key, extra);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setContext()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setContext(name, context);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `getScope()` directly.\n */\n public configureScope(callback: (scope: Scope) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public run(callback: (hub: Hub) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n // eslint-disable-next-line deprecation/deprecation\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n */\n public getIntegration(integration: IntegrationClass): T | null {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) return null;\n try {\n // eslint-disable-next-line deprecation/deprecation\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top level `captureSession` instead.\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n // eslint-disable-next-line deprecation/deprecation\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `endSession` instead.\n */\n public endSession(): void {\n // eslint-disable-next-line deprecation/deprecation\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `startSession` instead.\n */\n public startSession(context?: SessionContext): Session {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n // eslint-disable-next-line deprecation/deprecation\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n *\n * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n * only unnecessarily increased API surface but only wrapped accessing the option.\n */\n public shouldSendDefaultPii(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n // If there's no hub, or its an old API, assign a new one\n\n if (\n !hasHubOnCarrier(registry) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(registry).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (\n !hasHubOnCarrier(carrier) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n const client = parent.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const scope = parent.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const isolationScope = parent.getIsolationScope();\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n // eslint-disable-next-line deprecation/deprecation\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport { getActiveSpan } from '../tracing';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map;\n\nlet SPAN_METRIC_SUMMARY: WeakMap | undefined;\n\nfunction getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record> | undefined {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output: Record> = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n metricType: MetricType,\n sanitizedName: string,\n value: number,\n unit: MeasurementUnit,\n tags: Record,\n bucketKey: string,\n): void {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || new Map();\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n\n if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n trace_id: string,\n client: Client,\n scope?: Scope,\n): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) as DynamicSamplingContext;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","import {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n logger,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SpanStatusType } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import type { ClientOptions, CustomSamplingContext, TransactionContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { spanToTraceHeader } from '../utils/spanUtils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { sampleTransaction } from './sampling';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n // eslint-disable-next-line deprecation/deprecation\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n DEBUG_BUILD &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n delayAutoFinishUntilSignal: boolean = false,\n): IdleTransaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport type { SpanTimeInput, TransactionContext } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest: unknown[]) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record;\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean;\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n private _idleTimeoutCanceledPermanently: boolean;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n private _finishReason: (typeof IDLE_TRANSACTION_FINISH_REASONS)[number];\n\n private _autoFinishAllowed: boolean;\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n public constructor(\n transactionContext: TransactionContext,\n // eslint-disable-next-line deprecation/deprecation\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n /**\n * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanContext().spanId === this.spanContext().spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n public cancelIdleTimeout(\n endTimestamp?: Parameters[0],\n {\n restartOnChildSpanChange,\n }: {\n restartOnChildSpanChange?: boolean;\n } = {\n restartOnChildSpanChange: true,\n },\n ): void {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n public setFinishReason(reason: string): void {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n public sendAutoFinishSignal(): void {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n private _restartIdleTimeout(endTimestamp?: Parameters[0]): void {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanToJSON } from '../utils/spanUtils';\nimport type { Transaction } from './transaction';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nexport function sampleTransaction(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n","/* eslint-disable max-lines */\nimport type {\n Instrumenter,\n Measurements,\n Primitive,\n Span as SpanInterface,\n SpanAttributeValue,\n SpanAttributes,\n SpanContext,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n TraceContext,\n Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n} from '../semanticAttributes';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport {\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTraceContext,\n spanToTraceHeader,\n} from '../utils/spanUtils';\nimport type { SpanStatusType } from './spanstatus';\nimport { setHttpStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public tags: { [key: string]: Primitive };\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any };\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n public instrumenter: Instrumenter;\n\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatusType | string | undefined;\n protected _exclusiveTime?: number;\n\n protected _measurements: Measurements;\n\n private _logMessage?: string;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SpanContext = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n\n if (spanContext.parentSpanId) {\n this._parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this._sampled = spanContext.sampled;\n }\n if (spanContext.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set name(name: string) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get description(): string | undefined {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set description(description: string | undefined) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n public get traceId(): string {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n public set traceId(traceId: string) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n public get spanId(): string {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n public set spanId(spanId: string) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n public set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n public get parentSpanId(): string | undefined {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n public get sampled(): boolean | undefined {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n public set sampled(sampled: boolean | undefined) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public get attributes(): SpanAttributes {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n public set attributes(attributes: SpanAttributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get startTimestamp(): number {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n public set startTimestamp(startTime: number) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get endTimestamp(): number | undefined {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n public set endTimestamp(endTime: number | undefined) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n public get status(): SpanStatusType | string | undefined {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n public set status(status: SpanStatusType | string | undefined) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n public get op(): string | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n public set op(op: string | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n public get origin(): SpanOrigin | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n public set origin(origin: SpanOrigin | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startChild(\n spanContext?: Pick>,\n ): SpanInterface {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this._spanId,\n sampled: this._sampled,\n traceId: this._traceId,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan as Transaction;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n public setTag(key: string, value: Primitive): this {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setData(key: string, value: any): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): void {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): void {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n public setHttpStatus(httpStatus: number): this {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n public setName(name: string): void {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n public isSuccess(): boolean {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n public finish(endTimestamp?: number): void {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public toTraceparent(): string {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n public updateWithContext(spanContext: SpanContext): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n public getTraceContext(): TraceContext {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n public toJSON(): SpanJSON {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n private _getData():\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n }\n | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nexport enum SpanStatus {\n /** The operation completed successfully. */\n Ok = 'ok',\n /** Deadline expired before operation could complete. */\n DeadlineExceeded = 'deadline_exceeded',\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n Unauthenticated = 'unauthenticated',\n /** 403 Forbidden */\n PermissionDenied = 'permission_denied',\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n NotFound = 'not_found',\n /** 429 Too Many Requests */\n ResourceExhausted = 'resource_exhausted',\n /** Client specified an invalid argument. 4xx. */\n InvalidArgument = 'invalid_argument',\n /** 501 Not Implemented */\n Unimplemented = 'unimplemented',\n /** 503 Service Unavailable */\n Unavailable = 'unavailable',\n /** Other/generic 5xx. */\n InternalError = 'internal_error',\n /** Unknown. Any non-standard HTTP status code. */\n UnknownError = 'unknown_error',\n /** The operation was cancelled (typically by the user). */\n Cancelled = 'cancelled',\n /** Already exists (409) */\n AlreadyExists = 'already_exists',\n /** Operation was rejected because the system is not in a state required for the operation's */\n FailedPrecondition = 'failed_precondition',\n /** The operation was aborted, typically due to a concurrency issue. */\n Aborted = 'aborted',\n /** Operation was attempted past the valid range. */\n OutOfRange = 'out_of_range',\n /** Unrecoverable data loss or corruption */\n DataLoss = 'data_loss',\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport const spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally: () => void = () => {},\n): ReturnType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n","import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types';\n\nimport { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '.';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getCurrentScope, withScope } from '../exports';\nimport type { Hub } from '../hub';\nimport { runWithAsyncContext } from '../hub';\nimport { getIsolationScope } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport type { Scope as ScopeClass } from '../scope';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nexport function trace(\n context: TransactionContext,\n callback: (span?: Span) => T,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError: (error: unknown, span?: Span) => void = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish: () => void = () => {},\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpan(context: StartSpanOptions, callback: (span: Span | undefined) => T): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nexport const startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpanManual(\n context: StartSpanOptions,\n callback: (span: Span | undefined, finish: () => void) => T,\n): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan(): void {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startInactiveSpan(context: StartSpanOptions): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope as ScopeClass).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\ninterface ContinueTrace {\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers,\n * or in the browser from `` and `` HTML tags.\n *\n * @deprecated Use the version of this function taking a callback as second parameter instead:\n *\n * ```\n * Sentry.continueTrace(sentryTrace: '...', baggage: '...' }, () => {\n * // ...\n * })\n * ```\n *\n */\n ({\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n }): Partial;\n\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * Deprecation notice: In the next major version of the SDK the provided callback will not receive a transaction\n * context argument.\n */\n (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n // TODO(v8): Remove parameter from this callback.\n callback: (transactionContext: Partial) => V,\n ): V;\n}\n\nexport const continueTrace: ContinueTrace = (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n callback?: (transactionContext: Partial) => V,\n): V | Partial => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext: Partial = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }: {\n parentSpan: Span | undefined;\n spanContext: TransactionContext;\n forceTransaction?: boolean;\n scope: Scope;\n },\n): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span | undefined;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context: StartSpanOptions): TransactionContext {\n if (context.startTime) {\n const ctx: TransactionContext & { startTime?: SpanTimeInput } = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\nfunction setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n return {\n scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n","import type {\n Context,\n Contexts,\n DynamicSamplingContext,\n MeasurementUnit,\n SpanTimeInput,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionEvent,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { Span as SpanClass, SpanRecorder } from './span';\nimport { getCapturedScopesOnSpan } from './trace';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n public _hub: Hub;\n\n protected _name: string;\n\n private _contexts: Contexts;\n\n private _trimEnd?: boolean | undefined;\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n private _frozenDynamicSamplingContext: Readonly> | undefined;\n\n private _metadata: Partial;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n *\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n public set name(newName: string) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public get metadata(): TransactionMetadata {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionMetadata['source'],\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as TransactionMetadata['sampleRate'],\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public set metadata(metadata: TransactionMetadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top-level `setMeasurement()` instead.\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n public setMetadata(newMetadata: Partial): void {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n // eslint-disable-next-line deprecation/deprecation\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this._name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n public getDynamicSamplingContext(): Readonly> {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n public setHub(hub: Hub): void {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n public getProfileId(): string | undefined {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id as string;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n protected _finishTransaction(endTimestamp?: number): TransactionEvent | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) as number[];\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction: TransactionEvent = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n","import type { Transaction } from '@sentry/types';\nimport { extractTraceparentData as _extractTraceparentData } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nexport const extractTraceparentData = _extractTraceparentData;\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n","import type { Options } from '@sentry/types';\n\nimport { getClient } from '../exports';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n for (const key of Object.keys(currBaggageObject)) {\n acc[key] = currBaggageObject[key];\n }\n return acc;\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumentFn();\n instrumented[type] = true;\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console as Console;\n const wrappedFuncs: Partial = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as LoggerMethod;\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n return __SENTRY_SDK_SOURCE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","import type { PropagationContext, TraceparentData } from '@sentry/types';\n\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { uuid4 } from './misc';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nexport function tracingContextFromHeaders(\n sentryTrace: Parameters[0],\n baggage: Parameters[0],\n): {\n traceparentData: ReturnType;\n dynamicSamplingContext: ReturnType;\n propagationContext: PropagationContext;\n} {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceparentData,\n dynamicSamplingContext: undefined,\n propagationContext: {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n },\n };\n } else {\n return {\n traceparentData,\n dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n propagationContext: {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n },\n };\n }\n}\n\n/**\n * Create a propagation context from incoming headers.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n };\n } else {\n return {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n };\n }\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string = uuid4(),\n spanId: string = uuid4().substring(16),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex(cancelError) {\n this._semaphore = new Semaphore_1.default(1, cancelError);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, arguments, void 0, function (priority) {\n var _a, releaser;\n if (priority === void 0) { priority = 0; }\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire(1, priority)];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback, priority) {\n if (priority === void 0) { priority = 0; }\n return this._semaphore.runExclusive(function () { return callback(); }, 1, priority);\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n Mutex.prototype.waitForUnlock = function (priority) {\n if (priority === void 0) { priority = 0; }\n return this._semaphore.waitForUnlock(1, priority);\n };\n Mutex.prototype.release = function () {\n if (this._semaphore.isLocked())\n this._semaphore.release();\n };\n Mutex.prototype.cancel = function () {\n return this._semaphore.cancel();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_value, _cancelError) {\n if (_cancelError === void 0) { _cancelError = errors_1.E_CANCELED; }\n this._value = _value;\n this._cancelError = _cancelError;\n this._queue = [];\n this._weightedWaiters = [];\n }\n Semaphore.prototype.acquire = function (weight, priority) {\n var _this = this;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n return new Promise(function (resolve, reject) {\n var task = { resolve: resolve, reject: reject, weight: weight, priority: priority };\n var i = findIndexFromEnd(_this._queue, function (other) { return priority <= other.priority; });\n if (i === -1 && weight <= _this._value) {\n // Needs immediate dispatch, skip the queue\n _this._dispatchItem(task);\n }\n else {\n _this._queue.splice(i + 1, 0, task);\n }\n });\n };\n Semaphore.prototype.runExclusive = function (callback_1) {\n return tslib_1.__awaiter(this, arguments, void 0, function (callback, weight, priority) {\n var _a, value, release;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire(weight, priority)];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.waitForUnlock = function (weight, priority) {\n var _this = this;\n if (weight === void 0) { weight = 1; }\n if (priority === void 0) { priority = 0; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n if (this._couldLockImmediately(weight, priority)) {\n return Promise.resolve();\n }\n else {\n return new Promise(function (resolve) {\n if (!_this._weightedWaiters[weight - 1])\n _this._weightedWaiters[weight - 1] = [];\n insertSorted(_this._weightedWaiters[weight - 1], { resolve: resolve, priority: priority });\n });\n }\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n Semaphore.prototype.getValue = function () {\n return this._value;\n };\n Semaphore.prototype.setValue = function (value) {\n this._value = value;\n this._dispatchQueue();\n };\n Semaphore.prototype.release = function (weight) {\n if (weight === void 0) { weight = 1; }\n if (weight <= 0)\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n this._value += weight;\n this._dispatchQueue();\n };\n Semaphore.prototype.cancel = function () {\n var _this = this;\n this._queue.forEach(function (entry) { return entry.reject(_this._cancelError); });\n this._queue = [];\n };\n Semaphore.prototype._dispatchQueue = function () {\n this._drainUnlockWaiters();\n while (this._queue.length > 0 && this._queue[0].weight <= this._value) {\n this._dispatchItem(this._queue.shift());\n this._drainUnlockWaiters();\n }\n };\n Semaphore.prototype._dispatchItem = function (item) {\n var previousValue = this._value;\n this._value -= item.weight;\n item.resolve([previousValue, this._newReleaser(item.weight)]);\n };\n Semaphore.prototype._newReleaser = function (weight) {\n var _this = this;\n var called = false;\n return function () {\n if (called)\n return;\n called = true;\n _this.release(weight);\n };\n };\n Semaphore.prototype._drainUnlockWaiters = function () {\n if (this._queue.length === 0) {\n for (var weight = this._value; weight > 0; weight--) {\n var waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n waiters.forEach(function (waiter) { return waiter.resolve(); });\n this._weightedWaiters[weight - 1] = [];\n }\n }\n else {\n var queuedPriority_1 = this._queue[0].priority;\n for (var weight = this._value; weight > 0; weight--) {\n var waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n var i = waiters.findIndex(function (waiter) { return waiter.priority <= queuedPriority_1; });\n (i === -1 ? waiters : waiters.splice(0, i))\n .forEach((function (waiter) { return waiter.resolve(); }));\n }\n }\n };\n Semaphore.prototype._couldLockImmediately = function (weight, priority) {\n return (this._queue.length === 0 || this._queue[0].priority < priority) &&\n weight <= this._value;\n };\n return Semaphore;\n}());\nfunction insertSorted(a, v) {\n var i = findIndexFromEnd(a, function (other) { return v.priority <= other.priority; });\n a.splice(i + 1, 0, v);\n}\nfunction findIndexFromEnd(a, predicate) {\n for (var i = a.length - 1; i >= 0; i--) {\n if (predicate(a[i])) {\n return i;\n }\n }\n return -1;\n}\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.E_CANCELED = exports.E_ALREADY_LOCKED = exports.E_TIMEOUT = void 0;\nexports.E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nexports.E_ALREADY_LOCKED = new Error('mutex already locked');\nexports.E_CANCELED = new Error('request for lock canceled');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = exports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\nvar tryAcquire_1 = require(\"./tryAcquire\");\nObject.defineProperty(exports, \"tryAcquire\", { enumerable: true, get: function () { return tryAcquire_1.tryAcquire; } });\ntslib_1.__exportStar(require(\"./errors\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryAcquire = void 0;\nvar errors_1 = require(\"./errors\");\nvar withTimeout_1 = require(\"./withTimeout\");\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError) {\n if (alreadyAcquiredError === void 0) { alreadyAcquiredError = errors_1.E_ALREADY_LOCKED; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (0, withTimeout_1.withTimeout)(sync, 0, alreadyAcquiredError);\n}\nexports.tryAcquire = tryAcquire;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar errors_1 = require(\"./errors\");\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = errors_1.E_TIMEOUT; }\n return {\n acquire: function (weightOrPriority, priority) {\n var weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n }\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, handle, ticket, release, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n handle = setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, (isSemaphore(sync)\n ? sync.acquire(weight, priority)\n : sync.acquire(priority))];\n case 2:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e_1);\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback, weight, priority) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire(weight, priority)];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n release: function (weight) {\n sync.release(weight);\n },\n cancel: function () {\n return sync.cancel();\n },\n waitForUnlock: function (weightOrPriority, priority) {\n var weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(\"invalid weight \".concat(weight, \": must be positive\"));\n }\n return new Promise(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(timeoutError); }, timeout);\n (isSemaphore(sync)\n ? sync.waitForUnlock(weight, priority)\n : sync.waitForUnlock(priority)).then(function () {\n clearTimeout(handle);\n resolve();\n });\n });\n },\n isLocked: function () { return sync.isLocked(); },\n getValue: function () { return sync.getValue(); },\n setValue: function (value) { return sync.setValue(value); },\n };\n}\nexports.withTimeout = withTimeout;\nfunction isSemaphore(sync) {\n return sync.getValue !== undefined;\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] + (i + 1 < digits.length ? digits[i + 1] / BASE : 0) : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < digits[i]) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isBrowser: () => isBrowser,\n isBun: () => isBun,\n isDeno: () => isDeno,\n isJsDom: () => isJsDom,\n isNode: () => isNode,\n isWebWorker: () => isWebWorker\n});\nmodule.exports = __toCommonJS(src_exports);\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\nvar isNode = (\n // @ts-expect-error\n typeof process !== \"undefined\" && // @ts-expect-error\n process.versions != null && // @ts-expect-error\n process.versions.node != null\n);\nvar isWebWorker = typeof self === \"object\" && self.constructor && self.constructor.name === \"DedicatedWorkerGlobalScope\";\nvar isJsDom = typeof window !== \"undefined\" && window.name === \"nodejs\" || typeof navigator !== \"undefined\" && \"userAgent\" in navigator && typeof navigator.userAgent === \"string\" && (navigator.userAgent.includes(\"Node.js\") || navigator.userAgent.includes(\"jsdom\"));\nvar isDeno = (\n // @ts-expect-error\n typeof Deno !== \"undefined\" && // @ts-expect-error\n typeof Deno.version !== \"undefined\" && // @ts-expect-error\n typeof Deno.version.deno !== \"undefined\"\n);\nvar isBun = typeof process !== \"undefined\" && process.versions != null && process.versions.bun != null;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n isBrowser,\n isBun,\n isDeno,\n isJsDom,\n isNode,\n isWebWorker\n});\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * const result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * const result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 0;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * const result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 6;\n}","import isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isSaturday from \"../isSaturday/index.js\";\n/**\n * @name addBusinessDays\n * @category Day Helpers\n * @summary Add the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 business days to 1 September 2014:\n * const result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var startedOnWeekend = isWeekend(date);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) return new Date(NaN);\n var hours = date.getHours();\n var sign = amount < 0 ? -1 : 1;\n var fullWeeks = toInteger(amount / 5);\n date.setDate(date.getDate() + fullWeeks * 7);\n\n // Get remaining days not part of a full week\n var restDays = Math.abs(amount % 5);\n\n // Loops over remaining days\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n }\n\n // If the date is a weekend day and we reduce a dividable of\n // 5 from it, we land on a weekend date.\n // To counter this, we add days accordingly to land on the next business day\n if (startedOnWeekend && isWeekend(date) && amount !== 0) {\n // If we're reducing days, we want to add days until we land on a weekday\n // If we're adding days we want to reduce days until we land on a weekday\n if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));\n if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));\n }\n\n // Restore hours to avoid DST lag\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * const result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeekYear = toInteger(dirtyISOWeekYear);\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOWeekYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport setISOWeekYear from \"../setISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * const result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\nexport default function areIntervalsOverlapping(intervalLeft, intervalRight, options) {\n requiredArgs(2, arguments);\n var leftStartTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n if (options !== null && options !== void 0 && options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import max from \"../max/index.js\";\nimport min from \"../min/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name clamp\n * @category Interval Helpers\n * @summary Return a date bounded by the start and the end of the given interval\n *\n * @description\n * Clamps a date to the lower bound with the start of the interval and the upper\n * bound with the end of the interval.\n *\n * - When the date is less than the start of the interval, the start is returned.\n * - When the date is greater than the end of the interval, the end is returned.\n * - Otherwise the date is returned.\n *\n * @example\n * // What is Mar, 21, 2021 bounded to an interval starting at Mar, 22, 2021 and ending at Apr, 01, 2021\n * const result = clamp(new Date(2021, 2, 21), {\n * start: new Date(2021, 2, 22),\n * end: new Date(2021, 3, 1),\n * })\n * //=> Mon Mar 22 2021 00:00:00\n *\n * @param {Date | Number} date - the date to be bounded\n * @param {Interval} interval - the interval to bound to\n * @returns {Date} the date bounded by the start and the end of the interval\n * @throws {TypeError} 2 arguments required\n */\nexport default function clamp(date, _ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(2, arguments);\n return min([max([date, start]), end]);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Number | undefined} an index of the date closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * const dateToCompare = new Date(2015, 8, 6)\n * const datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * const result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return NaN;\n var timeToCompare = dateToCompare.getTime();\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n if (isNaN(Number(currentDate))) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result == null || distance < Number(minDistance)) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Date | undefined} the date from the array closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * const dateToCompare = new Date(2015, 8, 6)\n * const result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return new Date(NaN);\n var timeToCompare = dateToCompare.getTime();\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (isNaN(Number(currentDate))) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result == null || distance < Number(minDistance)) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name daysToWeeks\n * @category Conversion Helpers\n * @summary Convert days to weeks.\n *\n * @description\n * Convert a number of days to a full number of weeks.\n *\n * @param {number} days - number of days to be converted\n *\n * @returns {number} the number of days converted in weeks\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 14 days to weeks:\n * const result = daysToWeeks(14)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = daysToWeeks(13)\n * //=> 1\n */\nexport default function daysToWeeks(days) {\n requiredArgs(1, arguments);\n var weeks = days / daysInWeek;\n return Math.floor(weeks);\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addDays from \"../addDays/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * const result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n *\n * // How many business days are between\n * // 30 November 2021 and 1 November 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 30),\n * new Date(2021, 10, 1)\n * )\n * //=> 21\n *\n * // How many business days are between\n * // 1 November 2021 and 1 December 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 11, 1)\n * )\n * //=> -22\n *\n * // How many business days are between\n * // 1 November 2021 and 1 November 2021 ?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 10, 1)\n * )\n * //=> 0\n */\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return NaN;\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7);\n\n // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n return result === 0 ? 0 : result;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * const result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * const result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekLeft);\n var timestampRight = startOfISOWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import getQuarter from \"../getQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import addISOWeekYears from \"../addISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * const result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarISOWeekYears from \"../differenceInCalendarISOWeekYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport subISOWeekYears from \"../subISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * const result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight));\n dateLeft = subISOWeekYears(dateLeft, sign * difference);\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = Number(compareAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastISOWeekYearNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","import addHours from \"../addHours/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachHourOfInterval\n * @category Interval Helpers\n * @summary Return the array of hours within the specified time interval.\n *\n * @description\n * Return the array of hours within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each hour between 6 October 2014, 12:00 and 6 October 2014, 15:00\n * const result = eachHourOfInterval({\n * start: new Date(2014, 9, 6, 12),\n * end: new Date(2014, 9, 6, 15)\n * })\n * //=> [\n * // Mon Oct 06 2014 12:00:00,\n * // Mon Oct 06 2014 13:00:00,\n * // Mon Oct 06 2014 14:00:00,\n * // Mon Oct 06 2014 15:00:00\n * // ]\n */\nexport default function eachHourOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import addMinutes from \"../addMinutes/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMinuteOfInterval\n * @category Interval Helpers\n * @summary Return the array of minutes within the specified time interval.\n *\n * @description\n * Returns the array of minutes within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The step must be equal to or greater than 1\n * @throws {TypeError} 1 argument required\n * @returns {Date[]} the array with starts of minutes from the minute of the interval start to the minute of the interval end\n * @throws {RangeError} `options.step` must be a number equal to or greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03\n * const result = eachMinuteOfInterval({\n * start: new Date(2014, 9, 14, 13),\n * end: new Date(2014, 9, 14, 13, 3)\n * })\n * //=> [\n * // Wed Oct 14 2014 13:00:00,\n * // Wed Oct 14 2014 13:01:00,\n * // Wed Oct 14 2014 13:02:00,\n * // Wed Oct 14 2014 13:03:00\n * // ]\n */\nexport default function eachMinuteOfInterval(interval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var startDate = startOfMinute(toDate(interval.start));\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n if (startTime >= endTime) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number equal to or greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addMinutes(currentDate, step);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * const result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n var dates = [];\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addQuarters from \"../addQuarters/index.js\";\nimport startOfQuarter from \"../startOfQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * const result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\nexport default function eachQuarterOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\n return quarters;\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * const result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options);\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0);\n weeks.push(toDate(currentWeek));\n currentWeek = addWeeks(currentWeek, 1);\n currentWeek.setHours(15);\n }\n return weeks;\n}","import eachDayOfInterval from \"../eachDayOfInterval/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * const result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\n }\n return weekends;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * const result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate.getTime())) throw new RangeError('The passed date is invalid');\n var endDate = endOfMonth(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport endOfYear from \"../endOfYear/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * const result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n var endDate = endOfYear(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * const result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import endOfDay from \"../endOfDay/index.js\";\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","/**\n * @name endOfTomorrow\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n * @pure false\n *\n * @description\n * Return the end of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nexport default function endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","/**\n * @name endOfYesterday\n * @category Day Helpers\n * @summary Return the end of yesterday.\n * @pure false\n *\n * @description\n * Return the end of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nexport default function endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _options$roundingMeth;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var roundingMethod = String((_options$roundingMeth = options === null || options === void 0 ? void 0 : options.roundingMethod) !== null && _options$roundingMeth !== void 0 ? _options$roundingMeth : 'round');\n var roundingMethodFn;\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft);\n\n // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var defaultUnit = options === null || options === void 0 ? void 0 : options.unit;\n var unit;\n if (!defaultUnit) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(defaultUnit);\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && defaultUnit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * const result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceToNowStrict(dirtyDate, options) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), options);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\n\n/**\n * @name formatDuration\n * @category Common Helpers\n * @summary Formats a duration in human-readable format\n *\n * @description\n * Return human-readable duration string i.e. \"9 months 2 days\"\n *\n * @param {Duration} duration - the duration to format\n * @param {Object} [options] - an object with options.\n * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format\n * @param {boolean} [options.zero=false] - should zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {string} the formatted date string\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Format full duration\n * formatDuration({\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds'\n *\n * @example\n * // Format partial duration\n * formatDuration({ months: 9, days: 2 })\n * //=> '9 months 2 days'\n *\n * @example\n * // Customize the format\n * formatDuration(\n * {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * },\n * { format: ['months', 'weeks'] }\n * ) === '9 months 1 week'\n *\n * @example\n * // Customize the zeros presence\n * formatDuration({ years: 0, months: 9 })\n * //=> '9 months'\n * formatDuration({ years: 0, months: 9 }, { zero: true })\n * //=> '0 years 9 months'\n *\n * @example\n * // Customize the delimiter\n * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })\n * //=> '2 years, 9 months, 3 weeks'\n */\nexport default function formatDuration(duration, options) {\n var _ref, _options$locale, _options$format, _options$zero, _options$delimiter;\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var format = (_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : defaultFormat;\n var zero = (_options$zero = options === null || options === void 0 ? void 0 : options.zero) !== null && _options$zero !== void 0 ? _options$zero : false;\n var delimiter = (_options$delimiter = options === null || options === void 0 ? void 0 : options.delimiter) !== null && _options$delimiter !== void 0 ? _options$delimiter : ' ';\n if (!locale.formatDistance) {\n return '';\n }\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var value = duration[unit];\n if (typeof value === 'number' && (zero || duration[unit])) {\n return acc.concat(locale.formatDistance(token, value));\n }\n return acc;\n }, []).join(delimiter);\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n var _options$format, _options$representati;\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n var separator = result === '' ? '' : 'T';\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n var time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO9075\n * @category Common Helpers\n * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).\n *\n * @description\n * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18 19:00:52'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075, short format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918 190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, date only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, time only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52'\n */\nexport default function formatISO9075(dirtyDate, options) {\n var _options$format, _options$representati;\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with a space\n var separator = result === '' ? '' : ' ';\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n return result;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * const result = formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (_typeof(duration) !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name formatRFC3339\n * @category Common Helpers\n * @summary Format the date according to the RFC 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in RFC 3339 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.fractionDigits` must be between 0 and 3\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 2 digits of second fraction:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })\n * //=> '2019-09-18T19:00:52.23Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 3 digits of second fraction\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })\n * //=> '2019-09-18T19:00:52.234Z'\n */\nexport default function formatRFC3339(dirtyDate, options) {\n var _options$fractionDigi;\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var fractionDigits = Number((_options$fractionDigi = options === null || options === void 0 ? void 0 : options.fractionDigits) !== null && _options$fractionDigi !== void 0 ? _options$fractionDigi : 0);\n\n // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = originalDate.getFullYear();\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n var fractionalSecond = '';\n if (fractionDigits > 0) {\n var milliseconds = originalDate.getMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, fractionDigits - 3));\n fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits);\n }\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second).concat(fractionalSecond).concat(offset);\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nvar days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n/**\n * @name formatRFC7231\n * @category Common Helpers\n * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).\n *\n * @description\n * Return the formatted date string in RFC 7231 format.\n * The result will always be in UTC timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in RFC 7231 format:\n * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))\n * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'\n */\nexport default function formatRFC7231(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var dayName = days[originalDate.getUTCDay()];\n var dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2);\n var monthName = months[originalDate.getUTCMonth()];\n var year = originalDate.getUTCFullYear();\n var hour = addLeadingZeros(originalDate.getUTCHours(), 2);\n var minute = addLeadingZeros(originalDate.getUTCMinutes(), 2);\n var second = addLeadingZeros(originalDate.getUTCSeconds(), 2);\n\n // Result variables.\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$weekStartsOn, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var weekStartsOn = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.weekStartsOn) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : 0);\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n var diff = differenceInCalendarDays(date, baseDate);\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n var token;\n if (diff < -6) {\n token = 'other';\n } else if (diff < -1) {\n token = 'lastWeek';\n } else if (diff < 0) {\n token = 'yesterday';\n } else if (diff < 1) {\n token = 'today';\n } else if (diff < 2) {\n token = 'tomorrow';\n } else if (diff < 7) {\n token = 'nextWeek';\n } else {\n token = 'other';\n }\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n return format(date, formatStr, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp (in seconds). Decimal values will be discarded.\n *\n * @param {Number} unixTime - the given Unix timestamp (in seconds)\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * const result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * const result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import toDate from \"../toDate/index.js\";\nimport isLeapYear from \"../isLeapYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * const result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n if (String(new Date(date)) === 'Invalid Date') {\n return NaN;\n }\n return isLeapYear(date) ? 366 : 365;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * const result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n return decade;\n}","import { getDefaultOptions as getInternalDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport assign from \"../_lib/assign/index.js\";\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions]{@link https://date-fns.org/docs/setDefaultOptions}.\n *\n * @returns {Object} default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport default function getDefaultOptions() {\n return assign({}, getInternalDefaultOptions());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n if (day === 0) {\n day = 7;\n }\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * const result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var thisYear = startOfISOWeekYear(dirtyDate);\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf();\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n if (!isOverlapping) {\n return 0;\n }\n var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getDate from \"../getDate/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 inclusively\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * const result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth(date, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var currentDayOfMonth = getDate(date);\n if (isNaN(currentDayOfMonth)) return NaN;\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n if (lastDayOfFirstWeek <= 0) lastDayOfFirstWeek += 7;\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n return Math.ceil(remainingDaysAfterFirstWeek / 7) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMilliseconds\n * @category Conversion Helpers\n * @summary Convert hours to milliseconds.\n *\n * @description\n * Convert a number of hours to a full number of milliseconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted to milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to milliseconds:\n * const result = hoursToMilliseconds(2)\n * //=> 7200000\n */\nexport default function hoursToMilliseconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * millisecondsInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMinutes\n * @category Conversion Helpers\n * @summary Convert hours to minutes.\n *\n * @description\n * Convert a number of hours to a full number of minutes.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to minutes:\n * const result = hoursToMinutes(2)\n * //=> 120\n */\nexport default function hoursToMinutes(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * minutesInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToSeconds\n * @category Conversion Helpers\n * @summary Convert hours to seconds.\n *\n * @description\n * Convert a number of hours to a full number of seconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to seconds:\n * const result = hoursToSeconds(2)\n * //=> 7200\n */\nexport default function hoursToSeconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * secondsInHour);\n}","import compareAsc from \"../compareAsc/index.js\";\nimport add from \"../add/index.js\";\nimport differenceInDays from \"../differenceInDays/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport differenceInYears from \"../differenceInYears/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intervalToDuration\n * @category Common Helpers\n * @summary Convert interval to duration\n *\n * @description\n * Convert a interval object to a duration object.\n *\n * @param {Interval} interval - the interval to convert to duration\n *\n * @returns {Duration} The duration Object\n * @throws {TypeError} Requires 2 arguments\n * @throws {RangeError} `start` must not be Invalid Date\n * @throws {RangeError} `end` must not be Invalid Date\n *\n * @example\n * // Get the duration between January 15, 1929 and April 4, 1968.\n * intervalToDuration({\n * start: new Date(1929, 0, 15, 12, 0, 0),\n * end: new Date(1968, 3, 4, 19, 5, 0)\n * })\n * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }\n */\nexport default function intervalToDuration(interval) {\n requiredArgs(1, arguments);\n var start = toDate(interval.start);\n var end = toDate(interval.end);\n if (isNaN(start.getTime())) throw new RangeError('Start Date is invalid');\n if (isNaN(end.getTime())) throw new RangeError('End Date is invalid');\n var duration = {};\n duration.years = Math.abs(differenceInYears(end, start));\n var sign = compareAsc(end, start);\n var remainingMonths = add(start, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(end, remainingMonths));\n var remainingDays = add(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(end, remainingDays));\n var remainingHours = add(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(end, remainingHours));\n var remainingMinutes = add(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(end, remainingMinutes));\n var remainingSeconds = add(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(end, remainingSeconds));\n return duration;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intlFormat\n * @category Common Helpers\n * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).\n *\n * @description\n * Return the formatted date string in the given format.\n * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.\n * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)\n *\n * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.\n *\n * @param {Date|Number} argument - the original date.\n * @param {Object} [formatOptions] - an object with options.\n * @param {'lookup'|'best fit'} [formatOptions.localeMatcher='best fit'] - locale selection algorithm.\n * @param {'narrow'|'short'|'long'} [formatOptions.weekday] - representation the days of the week.\n * @param {'narrow'|'short'|'long'} [formatOptions.era] - representation of eras.\n * @param {'numeric'|'2-digit'} [formatOptions.year] - representation of years.\n * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [formatOptions.month='numeric'] - representation of month.\n * @param {'numeric'|'2-digit'} [formatOptions.day='numeric'] - representation of day.\n * @param {'numeric'|'2-digit'} [formatOptions.hour='numeric'] - representation of hours.\n * @param {'numeric'|'2-digit'} [formatOptions.minute] - representation of minutes.\n * @param {'numeric'|'2-digit'} [formatOptions.second] - representation of seconds.\n * @param {'short'|'long'} [formatOptions.timeZoneName] - representation of names of time zones.\n * @param {'basic'|'best fit'} [formatOptions.formatMatcher='best fit'] - format selection algorithm.\n * @param {Boolean} [formatOptions.hour12] - determines whether to use 12-hour time format.\n * @param {String} [formatOptions.timeZone] - the time zone to use.\n * @param {Object} [localeOptions] - an object with locale.\n * @param {String|String[]} [localeOptions.locale] - the locale code\n * @returns {String} the formatted date string.\n * @throws {TypeError} 1 argument required.\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 10 October 2019 in German.\n * // Convert the date with format's options and locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * weekday: 'long',\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * }, {\n * locale: 'de-DE',\n * })\n * //=> Freitag, 4. Oktober 2019\n *\n * @example\n * // Represent 10 October 2019.\n * // Convert the date with format's options.\n * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * year: 'numeric',\n * month: 'numeric',\n * day: 'numeric',\n * hour: 'numeric',\n * })\n * //=> 10/4/2019, 12 PM\n *\n * @example\n * // Represent 10 October 2019 in Korean.\n * // Convert the date with locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * locale: 'ko-KR',\n * })\n * //=> 2019. 10. 4.\n *\n * @example\n * // Represent 10 October 2019 in middle-endian format:\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))\n * //=> 10/4/2019\n */\nexport default function intlFormat(date, formatOrLocale, localeOptions) {\n var _localeOptions;\n requiredArgs(1, arguments);\n var formatOptions;\n if (isFormatOptions(formatOrLocale)) {\n formatOptions = formatOrLocale;\n } else {\n localeOptions = formatOrLocale;\n }\n return new Intl.DateTimeFormat((_localeOptions = localeOptions) === null || _localeOptions === void 0 ? void 0 : _localeOptions.locale, formatOptions).format(date);\n}\nfunction isFormatOptions(opts) {\n return opts !== undefined && !('locale' in opts);\n}","import { secondsInDay, secondsInHour, secondsInMinute, secondsInMonth, secondsInQuarter, secondsInWeek, secondsInYear } from \"../constants/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport differenceInCalendarQuarters from \"../differenceInCalendarQuarters/index.js\";\nimport differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intlFormatDistance\n * @category Common Helpers\n * @summary Formats distance between two dates in a human-readable format\n * @description\n * The function calculates the difference between two dates and formats it as a human-readable string.\n *\n * The function will pick the most appropriate unit depending on the distance between dates. For example, if the distance is a few hours, it might return `x hours`. If the distance is a few months, it might return `x months`.\n *\n * You can also specify a unit to force using it regardless of the distance to get a result like `123456 hours`.\n *\n * See the table below for the unit picking logic:\n *\n * | Distance between dates | Result (past) | Result (future) |\n * | ---------------------- | -------------- | --------------- |\n * | 0 seconds | now | now |\n * | 1-59 seconds | X seconds ago | in X seconds |\n * | 1-59 minutes | X minutes ago | in X minutes |\n * | 1-23 hours | X hours ago | in X hours |\n * | 1 day | yesterday | tomorrow |\n * | 2-6 days | X days ago | in X days |\n * | 7 days | last week | next week |\n * | 8 days-1 month | X weeks ago | in X weeks |\n * | 1 month | last month | next month |\n * | 2-3 months | X months ago | in X months |\n * | 1 quarter | last quarter | next quarter |\n * | 2-3 quarters | X quarters ago | in X quarters |\n * | 1 year | last year | next year |\n * | 2+ years | X years ago | in X years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with.\n * @param {Object} [options] - an object with options.\n * @param {String} [options.unit] - formats the distance with the given unit ('year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second').\n * @param {String|String[]} [options.locale] - the locale to use.\n * @param {String} [options.localeMatcher='best fit'] - the locale matching algorithm to use. Other value: 'lookup'.\n * See MDN for details [Locale identification and negotiation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)\n * @param {String} [options.numeric='auto'] - the output message format. The values are 'auto' (e.g. `yesterday`), 'always'(e.g. `1 day ago`).\n * @param {String} [options.style='long'] - the length of the result. The values are: 'long' (e.g. `1 month`), 'short' (e.g. 'in 1 mo.'), 'narrow' (e.g. 'in 1 mo.').\n * The narrow one could be similar to the short one for some locales.\n * @returns {String} the distance in words according to language-sensitive relative time formatting.\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.unit` must not be invalid Unit\n * @throws {RangeError} `options.locale` must not be invalid locale\n * @throws {RangeError} `options.localeMatcher` must not be invalid localeMatcher\n * @throws {RangeError} `options.numeric` must not be invalid numeric\n * @throws {RangeError} `options.style` must not be invalid style\n *\n * @example\n * // What is the distance between the dates when the fist date is after the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0)\n * )\n * //=> 'in 1 hour'\n *\n * // What is the distance between the dates when the fist date is before the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0)\n * )\n * //=> '1 hour ago'\n *\n * @example\n * // Use the unit option to force the function to output the result in quarters. Without setting it, the example would return \"next year\"\n * intlFormatDistance(\n * new Date(1987, 6, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { unit: 'quarter' }\n * )\n * //=> 'in 5 quarters'\n *\n * @example\n * // Use the locale option to get the result in Spanish. Without setting it, the example would return \"in 1 hour\".\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { locale: 'es' }\n * )\n * //=> 'dentro de 1 hora'\n *\n * @example\n * // Use the numeric option to force the function to use numeric values. Without setting it, the example would return \"tomorrow\".\n * intlFormatDistance(\n * new Date(1986, 3, 5, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { numeric: 'always' }\n * )\n * //=> 'in 1 day'\n *\n * @example\n * // Use the style option to force the function to use short values. Without setting it, the example would return \"in 2 years\".\n * intlFormatDistance(\n * new Date(1988, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { style: 'short' }\n * )\n * //=> 'in 2 yr'\n */\nexport default function intlFormatDistance(date, baseDate, options) {\n requiredArgs(2, arguments);\n var value = 0;\n var unit;\n var dateLeft = toDate(date);\n var dateRight = toDate(baseDate);\n if (!(options !== null && options !== void 0 && options.unit)) {\n // Get the unit based on diffInSeconds calculations if no unit is specified\n var diffInSeconds = differenceInSeconds(dateLeft, dateRight); // The smallest unit\n\n if (Math.abs(diffInSeconds) < secondsInMinute) {\n value = differenceInSeconds(dateLeft, dateRight);\n unit = 'second';\n } else if (Math.abs(diffInSeconds) < secondsInHour) {\n value = differenceInMinutes(dateLeft, dateRight);\n unit = 'minute';\n } else if (Math.abs(diffInSeconds) < secondsInDay && Math.abs(differenceInCalendarDays(dateLeft, dateRight)) < 1) {\n value = differenceInHours(dateLeft, dateRight);\n unit = 'hour';\n } else if (Math.abs(diffInSeconds) < secondsInWeek && (value = differenceInCalendarDays(dateLeft, dateRight)) && Math.abs(value) < 7) {\n unit = 'day';\n } else if (Math.abs(diffInSeconds) < secondsInMonth) {\n value = differenceInCalendarWeeks(dateLeft, dateRight);\n unit = 'week';\n } else if (Math.abs(diffInSeconds) < secondsInQuarter) {\n value = differenceInCalendarMonths(dateLeft, dateRight);\n unit = 'month';\n } else if (Math.abs(diffInSeconds) < secondsInYear) {\n if (differenceInCalendarQuarters(dateLeft, dateRight) < 4) {\n // To filter out cases that are less than a year but match 4 quarters\n value = differenceInCalendarQuarters(dateLeft, dateRight);\n unit = 'quarter';\n } else {\n value = differenceInCalendarYears(dateLeft, dateRight);\n unit = 'year';\n }\n } else {\n value = differenceInCalendarYears(dateLeft, dateRight);\n unit = 'year';\n }\n } else {\n // Get the value if unit is specified\n unit = options === null || options === void 0 ? void 0 : options.unit;\n if (unit === 'second') {\n value = differenceInSeconds(dateLeft, dateRight);\n } else if (unit === 'minute') {\n value = differenceInMinutes(dateLeft, dateRight);\n } else if (unit === 'hour') {\n value = differenceInHours(dateLeft, dateRight);\n } else if (unit === 'day') {\n value = differenceInCalendarDays(dateLeft, dateRight);\n } else if (unit === 'week') {\n value = differenceInCalendarWeeks(dateLeft, dateRight);\n } else if (unit === 'month') {\n value = differenceInCalendarMonths(dateLeft, dateRight);\n } else if (unit === 'quarter') {\n value = differenceInCalendarQuarters(dateLeft, dateRight);\n } else if (unit === 'year') {\n value = differenceInCalendarYears(dateLeft, dateRight);\n }\n }\n var rtf = new Intl.RelativeTimeFormat(options === null || options === void 0 ? void 0 : options.locale, {\n localeMatcher: options === null || options === void 0 ? void 0 : options.localeMatcher,\n numeric: (options === null || options === void 0 ? void 0 : options.numeric) || 'auto',\n style: options === null || options === void 0 ? void 0 : options.style\n });\n return rtf.format(value, unit);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","/**\n * @name isExists\n * @category Common Helpers\n * @summary Is the given date exists?\n *\n * @description\n * Checks if the given arguments convert to an existing date.\n *\n * @param {Number} year of the date to check\n * @param {Number} month of the date to check\n * @param {Number} day of the date to check\n * @returns {Boolean} the date exists\n * @throws {TypeError} 3 arguments required\n *\n * @example\n * // For the valid date:\n * const result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isExists(2018, 1, 31)\n * //=> false\n */\nexport default function isExists(year, month, day) {\n if (arguments.length < 3) {\n throw new TypeError('3 argument required, but only ' + arguments.length + ' present');\n }\n var date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * const result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDate() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * const result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 5;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * const result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import parse from \"../parse/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `isMatch('50', 'yy') //=> true`\n *\n * `isMatch('75', 'yy') //=> true`\n *\n * while `uu` will use the year as is:\n *\n * `isMatch('50', 'uu') //=> true`\n *\n * `isMatch('75', 'uu') //=> true`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * const result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * const result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n * locale: eo\n * })\n * //=> true\n */\nexport default function isMatch(dateString, formatString, options) {\n requiredArgs(2, arguments);\n return isValid(parse(dateString, formatString, new Date(), options));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * const result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday(date) {\n requiredArgs(1, arguments);\n return toDate(date).getDay() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * const result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isPast(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() < Date.now();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour (and same day)?\n *\n * @description\n * Are the given dates in the same hour (and same day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour (and same day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 5 September 06:00:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 5, 6, 0))\n * //=> false\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week (and month and year)?\n *\n * @description\n * Are the given dates in the same week (and month and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week (and month and year)\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same week?\n * const result = isSameWeek(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, options);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, options);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week (and year)?\n *\n * @description\n * Are the given dates in the same ISO week (and year)?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * const result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n *\n * @example\n * // Are 1 September 2014 and 1 September 2015 in the same ISO week?\n * const result = isSameISOWeek(new Date(2014, 8, 1), new Date(2015, 8, 1))\n * //=> false\n */\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * const result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}","import startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute (and hour and day)?\n *\n * @description\n * Are the given dates in the same minute (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15 in the same minute?\n * const result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 5 September 2014 06:30:00 in the same minute?\n * const result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 5, 6, 30)\n * )\n * //=> false\n */\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isSameHour from \"../isSameHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisHour\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * const result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\nexport default function isThisHour(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameHour(Date.now(), dirtyDate);\n}","import isSameISOWeek from \"../isSameISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisISOWeek\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * const result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isThisISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameISOWeek(dirtyDate, Date.now());\n}","import isSameMinute from \"../isSameMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMinute\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * const result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\nexport default function isThisMinute(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMinute(Date.now(), dirtyDate);\n}","import isSameMonth from \"../isSameMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * const result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nexport default function isThisMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMonth(Date.now(), dirtyDate);\n}","import isSameQuarter from \"../isSameQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisQuarter\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * const result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isThisQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameQuarter(Date.now(), dirtyDate);\n}","import isSameSecond from \"../isSameSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisSecond\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * const result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\nexport default function isThisSecond(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameSecond(Date.now(), dirtyDate);\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisWeek\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * const result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * const result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })\n * //=> false\n */\n\nexport default function isThisWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n return isSameWeek(dirtyDate, Date.now(), options);\n}","import isSameYear from \"../isSameYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * const result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * const result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 4;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from \"../addDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTomorrow\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n * @pure false\n *\n * @description\n * Is the given date tomorrow?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * const result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\nexport default function isTomorrow(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, addDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * const result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * const result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 3;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * const result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * const result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}","import lastDayOfWeek from \"../lastDayOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * const result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * const result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * const result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * const result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/lightFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Fraction of second | S | 0, 1, ..., 9 |\n * | | SS | 00, 01, ..., 99 |\n * | | SSS | 000, 001, ..., 999 |\n * | | SSSS | ... |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '2014-02-11'\n */\n\nexport default function lightFormat(dirtyDate, formatStr) {\n requiredArgs(2, arguments);\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var tokens = formatStr.match(formattingTokensRegExp);\n\n // The only case when formattingTokensRegExp doesn't match the string is when it's empty\n if (!tokens) return '';\n var result = tokens.map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n return formatter(utcDate, substring);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matches = input.match(escapedStringRegExp);\n if (!matches) {\n return input;\n }\n return matches[1].replace(doubleQuoteRegExp, \"'\");\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n// Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\nvar daysInYear = 365.2425;\n\n/**\n * @name milliseconds\n * @category Millisecond Helpers\n * @summary\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * @description\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * One month is a year divided by 12.\n *\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // 1 year in milliseconds\n * milliseconds({ years: 1 })\n * //=> 31556952000\n *\n * // 3 months in milliseconds\n * milliseconds({ months: 3 })\n * //=> 7889238000\n */\nexport default function milliseconds(_ref) {\n var years = _ref.years,\n months = _ref.months,\n weeks = _ref.weeks,\n days = _ref.days,\n hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n requiredArgs(1, arguments);\n var totalDays = 0;\n if (years) totalDays += years * daysInYear;\n if (months) totalDays += months * (daysInYear / 12);\n if (weeks) totalDays += weeks * 7;\n if (days) totalDays += days;\n var totalSeconds = totalDays * 24 * 60 * 60;\n if (hours) totalSeconds += hours * 60 * 60;\n if (minutes) totalSeconds += minutes * 60;\n if (seconds) totalSeconds += seconds;\n return Math.round(totalSeconds * 1000);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name millisecondsToHours\n * @category Conversion Helpers\n * @summary Convert milliseconds to hours.\n *\n * @description\n * Convert a number of milliseconds to a full number of hours.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200000 milliseconds to hours:\n * const result = millisecondsToHours(7200000)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToHours(7199999)\n * //=> 1\n */\nexport default function millisecondsToHours(milliseconds) {\n requiredArgs(1, arguments);\n var hours = milliseconds / millisecondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name millisecondsToMinutes\n * @category Conversion Helpers\n * @summary Convert milliseconds to minutes.\n *\n * @description\n * Convert a number of milliseconds to a full number of minutes.\n *\n * @param {number} milliseconds - number of milliseconds to be converted.\n *\n * @returns {number} the number of milliseconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 60000 milliseconds to minutes:\n * const result = millisecondsToMinutes(60000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToMinutes(119999)\n * //=> 1\n */\nexport default function millisecondsToMinutes(milliseconds) {\n requiredArgs(1, arguments);\n var minutes = milliseconds / millisecondsInMinute;\n return Math.floor(minutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name millisecondsToSeconds\n * @category Conversion Helpers\n * @summary Convert milliseconds to seconds.\n *\n * @description\n * Convert a number of milliseconds to a full number of seconds.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 1000 miliseconds to seconds:\n * const result = millisecondsToSeconds(1000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToSeconds(1999)\n * //=> 1\n */\nexport default function millisecondsToSeconds(milliseconds) {\n requiredArgs(1, arguments);\n var seconds = milliseconds / millisecondsInSecond;\n return Math.floor(seconds);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name minutesToHours\n * @category Conversion Helpers\n * @summary Convert minutes to hours.\n *\n * @description\n * Convert a number of minutes to a full number of hours.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 140 minutes to hours:\n * const result = minutesToHours(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = minutesToHours(179)\n * //=> 2\n */\nexport default function minutesToHours(minutes) {\n requiredArgs(1, arguments);\n var hours = minutes / minutesInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToMilliseconds\n * @category Conversion Helpers\n * @summary Convert minutes to milliseconds.\n *\n * @description\n * Convert a number of minutes to a full number of milliseconds.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to milliseconds\n * const result = minutesToMilliseconds(2)\n * //=> 120000\n */\nexport default function minutesToMilliseconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * millisecondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToSeconds\n * @category Conversion Helpers\n * @summary Convert minutes to seconds.\n *\n * @description\n * Convert a number of minutes to a full number of seconds.\n *\n * @param { number } minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to seconds\n * const result = minutesToSeconds(2)\n * //=> 120\n */\nexport default function minutesToSeconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * secondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name monthsToQuarters\n * @category Conversion Helpers\n * @summary Convert number of months to quarters.\n *\n * @description\n * Convert a number of months to a full number of quarters.\n *\n * @param {number} months - number of months to be converted.\n *\n * @returns {number} the number of months converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 6 months to quarters:\n * const result = monthsToQuarters(6)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = monthsToQuarters(7)\n * //=> 2\n */\nexport default function monthsToQuarters(months) {\n requiredArgs(1, arguments);\n var quarters = months / monthsInQuarter;\n return Math.floor(quarters);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name monthsToYears\n * @category Conversion Helpers\n * @summary Convert number of months to years.\n *\n * @description\n * Convert a number of months to a full number of years.\n *\n * @param {number} months - number of months to be converted\n *\n * @returns {number} the number of months converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 36 months to years:\n * const result = monthsToYears(36)\n * //=> 3\n *\n * // It uses floor rounding:\n * const result = monthsToYears(40)\n * //=> 3\n */\nexport default function monthsToYears(months) {\n requiredArgs(1, arguments);\n var years = months / monthsInYear;\n return Math.floor(years);\n}","import addDays from \"../addDays/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextDay\n * @category Weekday Helpers\n * @summary When is the next day of the week?\n *\n * @description\n * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {Day} day - day of the week\n * @returns {Date} - the date is the next day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the next Monday after Mar, 20, 2020?\n * const result = nextDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 23 2020 00:00:00\n *\n * @example\n * // When is the next Tuesday after Mar, 21, 2020?\n * const result = nextDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 24 2020 00:00:00\n */\nexport default function nextDay(date, day) {\n requiredArgs(2, arguments);\n var delta = day - getDay(date);\n if (delta <= 0) delta += 7;\n return addDays(date, delta);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextFriday\n * @category Weekday Helpers\n * @summary When is the next Friday?\n *\n * @description\n * When is the next Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Friday after Mar, 22, 2020?\n * const result = nextFriday(new Date(2020, 2, 22))\n * //=> Fri Mar 27 2020 00:00:00\n */\nexport default function nextFriday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 5);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextMonday\n * @category Weekday Helpers\n * @summary When is the next Monday?\n *\n * @description\n * When is the next Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Monday after Mar, 22, 2020?\n * const result = nextMonday(new Date(2020, 2, 22))\n * //=> Mon Mar 23 2020 00:00:00\n */\nexport default function nextMonday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 1);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSaturday\n * @category Weekday Helpers\n * @summary When is the next Saturday?\n *\n * @description\n * When is the next Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Saturday after Mar, 22, 2020?\n * const result = nextSaturday(new Date(2020, 2, 22))\n * //=> Sat Mar 28 2020 00:00:00\n */\nexport default function nextSaturday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 6);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSunday\n * @category Weekday Helpers\n * @summary When is the next Sunday?\n *\n * @description\n * When is the next Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Sunday after Mar, 22, 2020?\n * const result = nextSunday(new Date(2020, 2, 22))\n * //=> Sun Mar 29 2020 00:00:00\n */\nexport default function nextSunday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 0);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextThursday\n * @category Weekday Helpers\n * @summary When is the next Thursday?\n *\n * @description\n * When is the next Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Thursday after Mar, 22, 2020?\n * const result = nextThursday(new Date(2020, 2, 22))\n * //=> Thur Mar 26 2020 00:00:00\n */\nexport default function nextThursday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 4);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextTuesday\n * @category Weekday Helpers\n * @summary When is the next Tuesday?\n *\n * @description\n * When is the next Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Tuesday after Mar, 22, 2020?\n * const result = nextTuesday(new Date(2020, 2, 22))\n * //=> Tue Mar 24 2020 00:00:00\n */\nexport default function nextTuesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 2);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextWednesday\n * @category Weekday Helpers\n * @summary When is the next Wednesday?\n *\n * @description\n * When is the next Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Wednesday after Mar, 22, 2020?\n * const result = nextWednesday(new Date(2020, 2, 22))\n * //=> Wed Mar 25 2020 00:00:00\n */\nexport default function nextWednesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 3);\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name parseJSON\n * @category Common Helpers\n * @summary Parse a JSON date string\n *\n * @description\n * Converts a complete ISO date string in UTC time, the typical format for transmitting\n * a date in JSON, to a JavaScript `Date` instance.\n *\n * This is a minimal implementation for converting dates retrieved from a JSON API to\n * a `Date` instance which can be used with other functions in the `date-fns` library.\n * The following formats are supported:\n *\n * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`\n * - `2000-03-15T05:20:10Z`: Without milliseconds\n * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+05:45`: With a positive or negative offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon\n * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol\n * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds\n * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting\n *\n * For convenience and ease of use these other input types are also supported\n * via [toDate]{@link https://date-fns.org/docs/toDate}:\n *\n * - A `Date` instance will be cloned\n * - A `number` will be treated as a timestamp\n *\n * Any other input type or invalid date strings will return an `Invalid Date`.\n *\n * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n */\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n if (typeof argument === 'string') {\n var parts = argument.match(/(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{0,7}))?(?:Z|(.)(\\d{2}):?(\\d{2})?)?/);\n if (parts) {\n // Group 8 matches the sign\n return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4] - (+parts[9] || 0) * (parts[8] == '-' ? -1 : 1), +parts[5] - (+parts[10] || 0) * (parts[8] == '-' ? -1 : 1), +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n return new Date(NaN);\n }\n return toDate(argument);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport subDays from \"../subDays/index.js\";\n/**\n * @name previousDay\n * @category Weekday Helpers\n * @summary When is the previous day of the week?\n *\n * @description\n * When is the previous day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {number} day - day of the week\n * @returns {Date} - the date is the previous day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the previous Monday before Mar, 20, 2020?\n * const result = previousDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 16 2020 00:00:00\n *\n * @example\n * // When is the previous Tuesday before Mar, 21, 2020?\n * const result = previousDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 17 2020 00:00:00\n */\nexport default function previousDay(date, day) {\n requiredArgs(2, arguments);\n var delta = getDay(date) - day;\n if (delta <= 0) delta += 7;\n return subDays(date, delta);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousFriday\n * @category Weekday Helpers\n * @summary When is the previous Friday?\n *\n * @description\n * When is the previous Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Friday before Jun, 19, 2021?\n * const result = previousFriday(new Date(2021, 5, 19))\n * //=> Fri June 18 2021 00:00:00\n */\nexport default function previousFriday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 5);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousMonday\n * @category Weekday Helpers\n * @summary When is the previous Monday?\n *\n * @description\n * When is the previous Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Monday before Jun, 18, 2021?\n * const result = previousMonday(new Date(2021, 5, 18))\n * //=> Mon June 14 2021 00:00:00\n */\nexport default function previousMonday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 1);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSaturday\n * @category Weekday Helpers\n * @summary When is the previous Saturday?\n *\n * @description\n * When is the previous Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Saturday before Jun, 20, 2021?\n * const result = previousSaturday(new Date(2021, 5, 20))\n * //=> Sat June 19 2021 00:00:00\n */\nexport default function previousSaturday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 6);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSunday\n * @category Weekday Helpers\n * @summary When is the previous Sunday?\n *\n * @description\n * When is the previous Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Sunday before Jun, 21, 2021?\n * const result = previousSunday(new Date(2021, 5, 21))\n * //=> Sun June 20 2021 00:00:00\n */\nexport default function previousSunday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 0);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousThursday\n * @category Weekday Helpers\n * @summary When is the previous Thursday?\n *\n * @description\n * When is the previous Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Thursday before Jun, 18, 2021?\n * const result = previousThursday(new Date(2021, 5, 18))\n * //=> Thu June 17 2021 00:00:00\n */\nexport default function previousThursday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 4);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousTuesday\n * @category Weekday Helpers\n * @summary When is the previous Tuesday?\n *\n * @description\n * When is the previous Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Tuesday before Jun, 18, 2021?\n * const result = previousTuesday(new Date(2021, 5, 18))\n * //=> Tue June 15 2021 00:00:00\n */\nexport default function previousTuesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 2);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousWednesday\n * @category Weekday Helpers\n * @summary When is the previous Wednesday?\n *\n * @description\n * When is the previous Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Wednesday before Jun, 18, 2021?\n * const result = previousWednesday(new Date(2021, 5, 18))\n * //=> Wed June 16 2021 00:00:00\n */\nexport default function previousWednesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 3);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name quartersToMonths\n * @category Conversion Helpers\n * @summary Convert number of quarters to months.\n *\n * @description\n * Convert a number of quarters to a full number of months.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 quarters to months\n * const result = quartersToMonths(2)\n * //=> 6\n */\nexport default function quartersToMonths(quarters) {\n requiredArgs(1, arguments);\n return Math.floor(quarters * monthsInQuarter);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name quartersToYears\n * @category Conversion Helpers\n * @summary Convert number of quarters to years.\n *\n * @description\n * Convert a number of quarters to a full number of years.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 8 quarters to years\n * const result = quartersToYears(8)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = quartersToYears(11)\n * //=> 2\n */\nexport default function quartersToYears(quarters) {\n requiredArgs(1, arguments);\n var years = quarters / quartersInYear;\n return Math.floor(years);\n}","import toDate from \"../toDate/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute (or number of minutes).\n * Rounds up when the given date is exactly between the nearest round minutes.\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * const result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n *\n * @example\n * // Round 10 July 2014 12:07:30 to nearest quarter hour:\n * const result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })\n * // rounds up because given date is exactly between 12:00:00 and 12:15:00\n * //=> Thu Jul 10 2014 12:15:00\n */\nexport default function roundToNearestMinutes(dirtyDate, options) {\n var _options$nearestTo;\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n var nearestTo = toInteger((_options$nearestTo = options === null || options === void 0 ? void 0 : options.nearestTo) !== null && _options$nearestTo !== void 0 ? _options$nearestTo : 1);\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60;\n var roundingMethod = getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod);\n var roundedMinutes = roundingMethod(minutes / nearestTo) * nearestTo;\n var remainderMinutes = minutes % nearestTo;\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name secondsToHours\n * @category Conversion Helpers\n * @summary Convert seconds to hours.\n *\n * @description\n * Convert a number of seconds to a full number of hours.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200 seconds into hours\n * const result = secondsToHours(7200)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToHours(7199)\n * //=> 1\n */\nexport default function secondsToHours(seconds) {\n requiredArgs(1, arguments);\n var hours = seconds / secondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name secondsToMilliseconds\n * @category Conversion Helpers\n * @summary Convert seconds to milliseconds.\n *\n * @description\n * Convert a number of seconds to a full number of milliseconds.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 seconds into milliseconds\n * const result = secondsToMilliseconds(2)\n * //=> 2000\n */\nexport default function secondsToMilliseconds(seconds) {\n requiredArgs(1, arguments);\n return seconds * millisecondsInSecond;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name secondsToMinutes\n * @category Conversion Helpers\n * @summary Convert seconds to minutes.\n *\n * @description\n * Convert a number of seconds to a full number of minutes.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 120 seconds into minutes\n * const result = secondsToMinutes(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToMinutes(119)\n * //=> 1\n */\nexport default function secondsToMinutes(seconds) {\n requiredArgs(1, arguments);\n var minutes = seconds / secondsInMinute;\n return Math.floor(minutes);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * const result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}","import { getDefaultOptions, setDefaultOptions as setInternalDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDefaultOptions\n * @category Common Helpers\n * @summary Set default options including locale.\n * @pure false\n *\n * @description\n * Sets the defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * @param {Object} newOptions - an object with options.\n * @param {Locale} [newOptions.locale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [newOptions.weekStartsOn] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [newOptions.firstWeekContainsDate] - the day of January, which is always in the first week of the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Set global locale:\n * import { es } from 'date-fns/locale'\n * setDefaultOptions({ locale: es })\n * const result = format(new Date(2014, 8, 2), 'PPPP')\n * //=> 'martes, 2 de septiembre de 2014'\n *\n * @example\n * // Start of the week for 2 September 2014:\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Start of the week for 2 September 2014,\n * // when we set that week starts on Monday by default:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Mon Sep 01 2014 00:00:00\n *\n * @example\n * // Manually set options take priority over default options:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2), { weekStartsOn: 0 })\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Remove the option by setting it to `undefined`:\n * setDefaultOptions({ weekStartsOn: 1 })\n * setDefaultOptions({ weekStartsOn: undefined })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n */\nexport default function setDefaultOptions(newOptions) {\n requiredArgs(1, arguments);\n var result = {};\n var defaultOptions = getDefaultOptions();\n for (var property in defaultOptions) {\n if (Object.prototype.hasOwnProperty.call(defaultOptions, property)) {\n ;\n result[property] = defaultOptions[property];\n }\n }\n for (var _property in newOptions) {\n if (Object.prototype.hasOwnProperty.call(newOptions, _property)) {\n if (newOptions[_property] === undefined) {\n delete result[_property];\n } else {\n ;\n result[_property] = newOptions[_property];\n }\n }\n }\n setInternalDefaultOptions(result);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport getISODay from \"../getISODay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getISOWeek from \"../getISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import getWeek from \"../getWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, options) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * const result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, options));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, options);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * @name startOfYesterday\n * @category Day Helpers\n * @summary Return the start of yesterday.\n * @pure false\n *\n * @description\n * Return the start of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nexport default function startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Subtract years and months\n var dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import addBusinessDays from \"../addBusinessDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subBusinessDays\n * @category Day Helpers\n * @summary Substract the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Substract 10 business days from 1 September 2014:\n * const result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addSeconds from \"../addSeconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name weeksToDays\n * @category Conversion Helpers\n * @summary Convert weeks to days.\n *\n * @description\n * Convert a number of weeks to a full number of days.\n *\n * @param {number} weeks - number of weeks to be converted\n *\n * @returns {number} the number of weeks converted in days\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 weeks into days\n * const result = weeksToDays(2)\n * //=> 14\n */\nexport default function weeksToDays(weeks) {\n requiredArgs(1, arguments);\n return Math.floor(weeks * daysInWeek);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name yearsToMonths\n * @category Conversion Helpers\n * @summary Convert years to months.\n *\n * @description\n * Convert a number of years to a full number of months.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years into months\n * const result = yearsToMonths(2)\n * //=> 24\n */\nexport default function yearsToMonths(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * monthsInYear);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name yearsToQuarters\n * @category Conversion Helpers\n * @summary Convert years to quarters.\n *\n * @description\n * Convert a number of years to a full number of quarters.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years to quarters\n * const result = yearsToQuarters(2)\n * //=> 8\n */\nexport default function yearsToQuarters(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * quartersInYear);\n}","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)=20?\"ste\":\"de\")+\"]\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"een minuut\",mm:\"%d minuten\",h:\"een uur\",hh:\"%d uur\",d:\"een dag\",dd:\"%d dagen\",M:\"een maand\",MM:\"%d maanden\",y:\"een jaar\",yy:\"%d jaar\"}};return d.default.locale(n,null,!0),n}));","!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar _barcodes = require('./barcodes/');\n\nvar _barcodes2 = _interopRequireDefault(_barcodes);\n\nvar _merge = require('./help/merge.js');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _linearizeEncodings = require('./help/linearizeEncodings.js');\n\nvar _linearizeEncodings2 = _interopRequireDefault(_linearizeEncodings);\n\nvar _fixOptions = require('./help/fixOptions.js');\n\nvar _fixOptions2 = _interopRequireDefault(_fixOptions);\n\nvar _getRenderProperties = require('./help/getRenderProperties.js');\n\nvar _getRenderProperties2 = _interopRequireDefault(_getRenderProperties);\n\nvar _optionsFromStrings = require('./help/optionsFromStrings.js');\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _ErrorHandler = require('./exceptions/ErrorHandler.js');\n\nvar _ErrorHandler2 = _interopRequireDefault(_ErrorHandler);\n\nvar _exceptions = require('./exceptions/exceptions.js');\n\nvar _defaults = require('./options/defaults.js');\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The protype of the object returned from the JsBarcode() call\n\n\n// Help functions\nvar API = function API() {};\n\n// The first call of the library API\n// Will return an object with all barcodes calls and the data that is used\n// by the renderers\n\n\n// Default values\n\n\n// Exceptions\n// Import all the barcodes\nvar JsBarcode = function JsBarcode(element, text, options) {\n\tvar api = new API();\n\n\tif (typeof element === \"undefined\") {\n\t\tthrow Error(\"No element to render on was provided.\");\n\t}\n\n\t// Variables that will be pased through the API calls\n\tapi._renderProperties = (0, _getRenderProperties2.default)(element);\n\tapi._encodings = [];\n\tapi._options = _defaults2.default;\n\tapi._errorHandler = new _ErrorHandler2.default(api);\n\n\t// If text is set, use the simple syntax (render the barcode directly)\n\tif (typeof text !== \"undefined\") {\n\t\toptions = options || {};\n\n\t\tif (!options.format) {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tapi.options(options)[options.format](text, options).render();\n\t}\n\n\treturn api;\n};\n\n// To make tests work TODO: remove\nJsBarcode.getModule = function (name) {\n\treturn _barcodes2.default[name];\n};\n\n// Register all barcodes\nfor (var name in _barcodes2.default) {\n\tif (_barcodes2.default.hasOwnProperty(name)) {\n\t\t// Security check if the propery is a prototype property\n\t\tregisterBarcode(_barcodes2.default, name);\n\t}\n}\nfunction registerBarcode(barcodes, name) {\n\tAPI.prototype[name] = API.prototype[name.toUpperCase()] = API.prototype[name.toLowerCase()] = function (text, options) {\n\t\tvar api = this;\n\t\treturn api._errorHandler.wrapBarcodeCall(function () {\n\t\t\t// Ensure text is options.text\n\t\t\toptions.text = typeof options.text === 'undefined' ? undefined : '' + options.text;\n\n\t\t\tvar newOptions = (0, _merge2.default)(api._options, options);\n\t\t\tnewOptions = (0, _optionsFromStrings2.default)(newOptions);\n\t\t\tvar Encoder = barcodes[name];\n\t\t\tvar encoded = encode(text, Encoder, newOptions);\n\t\t\tapi._encodings.push(encoded);\n\n\t\t\treturn api;\n\t\t});\n\t};\n}\n\n// encode() handles the Encoder call and builds the binary string to be rendered\nfunction encode(text, Encoder, options) {\n\t// Ensure that text is a string\n\ttext = \"\" + text;\n\n\tvar encoder = new Encoder(text, options);\n\n\t// If the input is not valid for the encoder, throw error.\n\t// If the valid callback option is set, call it instead of throwing error\n\tif (!encoder.valid()) {\n\t\tthrow new _exceptions.InvalidInputException(encoder.constructor.name, text);\n\t}\n\n\t// Make a request for the binary data (and other infromation) that should be rendered\n\tvar encoded = encoder.encode();\n\n\t// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n\t// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\tencoded = (0, _linearizeEncodings2.default)(encoded);\n\n\t// Merge\n\tfor (var i = 0; i < encoded.length; i++) {\n\t\tencoded[i].options = (0, _merge2.default)(options, encoded[i].options);\n\t}\n\n\treturn encoded;\n}\n\nfunction autoSelectBarcode() {\n\t// If CODE128 exists. Use it\n\tif (_barcodes2.default[\"CODE128\"]) {\n\t\treturn \"CODE128\";\n\t}\n\n\t// Else, take the first (probably only) barcode\n\treturn Object.keys(_barcodes2.default)[0];\n}\n\n// Sets global encoder options\n// Added to the api by the JsBarcode function\nAPI.prototype.options = function (options) {\n\tthis._options = (0, _merge2.default)(this._options, options);\n\treturn this;\n};\n\n// Will create a blank space (usually in between barcodes)\nAPI.prototype.blank = function (size) {\n\tvar zeroes = new Array(size + 1).join(\"0\");\n\tthis._encodings.push({ data: zeroes });\n\treturn this;\n};\n\n// Initialize JsBarcode on all HTML elements defined.\nAPI.prototype.init = function () {\n\t// Should do nothing if no elements where found\n\tif (!this._renderProperties) {\n\t\treturn;\n\t}\n\n\t// Make sure renderProperies is an array\n\tif (!Array.isArray(this._renderProperties)) {\n\t\tthis._renderProperties = [this._renderProperties];\n\t}\n\n\tvar renderProperty;\n\tfor (var i in this._renderProperties) {\n\t\trenderProperty = this._renderProperties[i];\n\t\tvar options = (0, _merge2.default)(this._options, renderProperty.options);\n\n\t\tif (options.format == \"auto\") {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tthis._errorHandler.wrapBarcodeCall(function () {\n\t\t\tvar text = options.value;\n\t\t\tvar Encoder = _barcodes2.default[options.format.toUpperCase()];\n\t\t\tvar encoded = encode(text, Encoder, options);\n\n\t\t\trender(renderProperty, encoded, options);\n\t\t});\n\t}\n};\n\n// The render API call. Calls the real render function.\nAPI.prototype.render = function () {\n\tif (!this._renderProperties) {\n\t\tthrow new _exceptions.NoElementException();\n\t}\n\n\tif (Array.isArray(this._renderProperties)) {\n\t\tfor (var i = 0; i < this._renderProperties.length; i++) {\n\t\t\trender(this._renderProperties[i], this._encodings, this._options);\n\t\t}\n\t} else {\n\t\trender(this._renderProperties, this._encodings, this._options);\n\t}\n\n\treturn this;\n};\n\nAPI.prototype._defaults = _defaults2.default;\n\n// Prepares the encodings and calls the renderer\nfunction render(renderProperties, encodings, options) {\n\tencodings = (0, _linearizeEncodings2.default)(encodings);\n\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tencodings[i].options = (0, _merge2.default)(options, encodings[i].options);\n\t\t(0, _fixOptions2.default)(encodings[i].options);\n\t}\n\n\t(0, _fixOptions2.default)(options);\n\n\tvar Renderer = renderProperties.renderer;\n\tvar renderer = new Renderer(renderProperties.element, encodings, options);\n\trenderer.render();\n\n\tif (renderProperties.afterRender) {\n\t\trenderProperties.afterRender();\n\t}\n}\n\n// Export to browser\nif (typeof window !== \"undefined\") {\n\twindow.JsBarcode = JsBarcode;\n}\n\n// Export to jQuery\n/*global jQuery */\nif (typeof jQuery !== 'undefined') {\n\tjQuery.fn.JsBarcode = function (content, options) {\n\t\tvar elementArray = [];\n\t\tjQuery(this).each(function () {\n\t\t\telementArray.push(this);\n\t\t});\n\t\treturn JsBarcode(elementArray, content, options);\n\t};\n}\n\n// Export to commonJS\nmodule.exports = JsBarcode;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Barcode = function Barcode(data, options) {\n\t_classCallCheck(this, Barcode);\n\n\tthis.data = data;\n\tthis.text = options.text || data;\n\tthis.options = options;\n};\n\nexports.default = Barcode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// This is the master class,\n// it does require the start code to be included in the string\nvar CODE128 = function (_Barcode) {\n\t_inherits(CODE128, _Barcode);\n\n\tfunction CODE128(data, options) {\n\t\t_classCallCheck(this, CODE128);\n\n\t\t// Get array of ascii codes from data\n\t\tvar _this = _possibleConstructorReturn(this, (CODE128.__proto__ || Object.getPrototypeOf(CODE128)).call(this, data.substring(1), options));\n\n\t\t_this.bytes = data.split('').map(function (char) {\n\t\t\treturn char.charCodeAt(0);\n\t\t});\n\t\treturn _this;\n\t}\n\n\t_createClass(CODE128, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\t// ASCII value ranges 0-127, 200-211\n\t\t\treturn (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(this.data)\n\t\t\t);\n\t\t}\n\n\t\t// The public encoding function\n\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar bytes = this.bytes;\n\t\t\t// Remove the start code from the bytes and set its index\n\t\t\tvar startIndex = bytes.shift() - 105;\n\t\t\t// Get start set by index\n\t\t\tvar startSet = _constants.SET_BY_CODE[startIndex];\n\n\t\t\tif (startSet === undefined) {\n\t\t\t\tthrow new RangeError('The encoding does not start with a start character.');\n\t\t\t}\n\n\t\t\tif (this.shouldEncodeAsEan128() === true) {\n\t\t\t\tbytes.unshift(_constants.FNC1);\n\t\t\t}\n\n\t\t\t// Start encode with the right type\n\t\t\tvar encodingResult = CODE128.next(bytes, 1, startSet);\n\n\t\t\treturn {\n\t\t\t\ttext: this.text === this.data ? this.text.replace(/[^\\x20-\\x7E]/g, '') : this.text,\n\t\t\t\tdata:\n\t\t\t\t// Add the start bits\n\t\t\t\tCODE128.getBar(startIndex) +\n\t\t\t\t// Add the encoded bits\n\t\t\t\tencodingResult.result +\n\t\t\t\t// Add the checksum\n\t\t\t\tCODE128.getBar((encodingResult.checksum + startIndex) % _constants.MODULO) +\n\t\t\t\t// Add the end bits\n\t\t\t\tCODE128.getBar(_constants.STOP)\n\t\t\t};\n\t\t}\n\n\t\t// GS1-128/EAN-128\n\n\t}, {\n\t\tkey: 'shouldEncodeAsEan128',\n\t\tvalue: function shouldEncodeAsEan128() {\n\t\t\tvar isEAN128 = this.options.ean128 || false;\n\t\t\tif (typeof isEAN128 === 'string') {\n\t\t\t\tisEAN128 = isEAN128.toLowerCase() === 'true';\n\t\t\t}\n\t\t\treturn isEAN128;\n\t\t}\n\n\t\t// Get a bar symbol by index\n\n\t}], [{\n\t\tkey: 'getBar',\n\t\tvalue: function getBar(index) {\n\t\t\treturn _constants.BARS[index] ? _constants.BARS[index].toString() : '';\n\t\t}\n\n\t\t// Correct an index by a set and shift it from the bytes array\n\n\t}, {\n\t\tkey: 'correctIndex',\n\t\tvalue: function correctIndex(bytes, set) {\n\t\t\tif (set === _constants.SET_A) {\n\t\t\t\tvar charCode = bytes.shift();\n\t\t\t\treturn charCode < 32 ? charCode + 64 : charCode - 32;\n\t\t\t} else if (set === _constants.SET_B) {\n\t\t\t\treturn bytes.shift() - 32;\n\t\t\t} else {\n\t\t\t\treturn (bytes.shift() - 48) * 10 + bytes.shift() - 48;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'next',\n\t\tvalue: function next(bytes, pos, set) {\n\t\t\tif (!bytes.length) {\n\t\t\t\treturn { result: '', checksum: 0 };\n\t\t\t}\n\n\t\t\tvar nextCode = void 0,\n\t\t\t index = void 0;\n\n\t\t\t// Special characters\n\t\t\tif (bytes[0] >= 200) {\n\t\t\t\tindex = bytes.shift() - 105;\n\t\t\t\tvar nextSet = _constants.SWAP[index];\n\n\t\t\t\t// Swap to other set\n\t\t\t\tif (nextSet !== undefined) {\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, nextSet);\n\t\t\t\t}\n\t\t\t\t// Continue on current set but encode a special character\n\t\t\t\telse {\n\t\t\t\t\t\t// Shift\n\t\t\t\t\t\tif ((set === _constants.SET_A || set === _constants.SET_B) && index === _constants.SHIFT) {\n\t\t\t\t\t\t\t// Convert the next character so that is encoded correctly\n\t\t\t\t\t\t\tbytes[0] = set === _constants.SET_A ? bytes[0] > 95 ? bytes[0] - 96 : bytes[0] : bytes[0] < 32 ? bytes[0] + 96 : bytes[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\t// Continue encoding\n\t\t\telse {\n\t\t\t\t\tindex = CODE128.correctIndex(bytes, set);\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t}\n\n\t\t\t// Get the correct binary encoding and calculate the weight\n\t\t\tvar enc = CODE128.getBar(index);\n\t\t\tvar weight = index * pos;\n\n\t\t\treturn {\n\t\t\t\tresult: enc + nextCode.result,\n\t\t\t\tchecksum: weight + nextCode.checksum\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn CODE128;\n}(_Barcode3.default);\n\nexports.default = CODE128;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128A = function (_CODE) {\n\t_inherits(CODE128A, _CODE);\n\n\tfunction CODE128A(string, options) {\n\t\t_classCallCheck(this, CODE128A);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128A.__proto__ || Object.getPrototypeOf(CODE128A)).call(this, _constants.A_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128A, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.A_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128A;\n}(_CODE3.default);\n\nexports.default = CODE128A;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128B = function (_CODE) {\n\t_inherits(CODE128B, _CODE);\n\n\tfunction CODE128B(string, options) {\n\t\t_classCallCheck(this, CODE128B);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128B.__proto__ || Object.getPrototypeOf(CODE128B)).call(this, _constants.B_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128B, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.B_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128B;\n}(_CODE3.default);\n\nexports.default = CODE128B;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128C = function (_CODE) {\n\t_inherits(CODE128C, _CODE);\n\n\tfunction CODE128C(string, options) {\n\t\t_classCallCheck(this, CODE128C);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128C.__proto__ || Object.getPrototypeOf(CODE128C)).call(this, _constants.C_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128C, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.C_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128C;\n}(_CODE3.default);\n\nexports.default = CODE128C;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE2 = require('./CODE128');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _auto = require('./auto');\n\nvar _auto2 = _interopRequireDefault(_auto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128AUTO = function (_CODE) {\n\t_inherits(CODE128AUTO, _CODE);\n\n\tfunction CODE128AUTO(data, options) {\n\t\t_classCallCheck(this, CODE128AUTO);\n\n\t\t// ASCII value ranges 0-127, 200-211\n\t\tif (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(data)) {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, (0, _auto2.default)(data), options));\n\t\t} else {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, data, options));\n\t\t}\n\t\treturn _possibleConstructorReturn(_this);\n\t}\n\n\treturn CODE128AUTO;\n}(_CODE3.default);\n\nexports.default = CODE128AUTO;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Match Set functions\nvar matchSetALength = function matchSetALength(string) {\n\treturn string.match(new RegExp('^' + _constants.A_CHARS + '*'))[0].length;\n};\nvar matchSetBLength = function matchSetBLength(string) {\n\treturn string.match(new RegExp('^' + _constants.B_CHARS + '*'))[0].length;\n};\nvar matchSetC = function matchSetC(string) {\n\treturn string.match(new RegExp('^' + _constants.C_CHARS + '*'))[0];\n};\n\n// CODE128A or CODE128B\nfunction autoSelectFromAB(string, isA) {\n\tvar ranges = isA ? _constants.A_CHARS : _constants.B_CHARS;\n\tvar untilC = string.match(new RegExp('^(' + ranges + '+?)(([0-9]{2}){2,})([^0-9]|$)'));\n\n\tif (untilC) {\n\t\treturn untilC[1] + String.fromCharCode(204) + autoSelectFromC(string.substring(untilC[1].length));\n\t}\n\n\tvar chars = string.match(new RegExp('^' + ranges + '+'))[0];\n\n\tif (chars.length === string.length) {\n\t\treturn string;\n\t}\n\n\treturn chars + String.fromCharCode(isA ? 205 : 206) + autoSelectFromAB(string.substring(chars.length), !isA);\n}\n\n// CODE128C\nfunction autoSelectFromC(string) {\n\tvar cMatch = matchSetC(string);\n\tvar length = cMatch.length;\n\n\tif (length === string.length) {\n\t\treturn string;\n\t}\n\n\tstring = string.substring(length);\n\n\t// Select A/B depending on the longest match\n\tvar isA = matchSetALength(string) >= matchSetBLength(string);\n\treturn cMatch + String.fromCharCode(isA ? 206 : 205) + autoSelectFromAB(string, isA);\n}\n\n// Detect Code Set (A, B or C) and format the string\n\nexports.default = function (string) {\n\tvar newString = void 0;\n\tvar cLength = matchSetC(string).length;\n\n\t// Select 128C if the string start with enough digits\n\tif (cLength >= 2) {\n\t\tnewString = _constants.C_START_CHAR + autoSelectFromC(string);\n\t} else {\n\t\t// Select A/B depending on the longest match\n\t\tvar isA = matchSetALength(string) > matchSetBLength(string);\n\t\tnewString = (isA ? _constants.A_START_CHAR : _constants.B_START_CHAR) + autoSelectFromAB(string, isA);\n\t}\n\n\treturn newString.replace(/[\\xCD\\xCE]([^])[\\xCD\\xCE]/, // Any sequence between 205 and 206 characters\n\tfunction (match, char) {\n\t\treturn String.fromCharCode(203) + char;\n\t});\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _SET_BY_CODE;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// constants for internal usage\nvar SET_A = exports.SET_A = 0;\nvar SET_B = exports.SET_B = 1;\nvar SET_C = exports.SET_C = 2;\n\n// Special characters\nvar SHIFT = exports.SHIFT = 98;\nvar START_A = exports.START_A = 103;\nvar START_B = exports.START_B = 104;\nvar START_C = exports.START_C = 105;\nvar MODULO = exports.MODULO = 103;\nvar STOP = exports.STOP = 106;\nvar FNC1 = exports.FNC1 = 207;\n\n// Get set by start code\nvar SET_BY_CODE = exports.SET_BY_CODE = (_SET_BY_CODE = {}, _defineProperty(_SET_BY_CODE, START_A, SET_A), _defineProperty(_SET_BY_CODE, START_B, SET_B), _defineProperty(_SET_BY_CODE, START_C, SET_C), _SET_BY_CODE);\n\n// Get next set by code\nvar SWAP = exports.SWAP = {\n\t101: SET_A,\n\t100: SET_B,\n\t99: SET_C\n};\n\nvar A_START_CHAR = exports.A_START_CHAR = String.fromCharCode(208); // START_A + 105\nvar B_START_CHAR = exports.B_START_CHAR = String.fromCharCode(209); // START_B + 105\nvar C_START_CHAR = exports.C_START_CHAR = String.fromCharCode(210); // START_C + 105\n\n// 128A (Code Set A)\n// ASCII characters 00 to 95 (0–9, A–Z and control codes), special characters, and FNC 1–4\nvar A_CHARS = exports.A_CHARS = \"[\\x00-\\x5F\\xC8-\\xCF]\";\n\n// 128B (Code Set B)\n// ASCII characters 32 to 127 (0–9, A–Z, a–z), special characters, and FNC 1–4\nvar B_CHARS = exports.B_CHARS = \"[\\x20-\\x7F\\xC8-\\xCF]\";\n\n// 128C (Code Set C)\n// 00–99 (encodes two digits with a single code point) and FNC1\nvar C_CHARS = exports.C_CHARS = \"(\\xCF*[0-9]{2}\\xCF*)\";\n\n// CODE128 includes 107 symbols:\n// 103 data symbols, 3 start symbols (A, B and C), and 1 stop symbol (the last one)\n// Each symbol consist of three black bars (1) and three white spaces (0).\nvar BARS = exports.BARS = [11011001100, 11001101100, 11001100110, 10010011000, 10010001100, 10001001100, 10011001000, 10011000100, 10001100100, 11001001000, 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, 11011011000, 11011000110, 11000110110, 10100011000, 10001011000, 10001000110, 10110001000, 10001101000, 10001100010, 11010001000, 11000101000, 11000100010, 10110111000, 10110001110, 10001101110, 10111011000, 10111000110, 10001110110, 11101110110, 11010001110, 11000101110, 11011101000, 11011100010, 11011101110, 11101011000, 11101000110, 11100010110, 11101101000, 11101100010, 11100011010, 11101111010, 11001000010, 11110001010, 10100110000, 10100001100, 10010110000, 10010000110, 10000101100, 10000100110, 10110010000, 10110000100, 10011010000, 10011000010, 10000110100, 10000110010, 11000010010, 11001010000, 11110111010, 11000010100, 10001111010, 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, 11011110110, 11110110110, 10101111000, 10100011110, 10001011110, 10111101000, 10111100010, 11110101000, 11110100010, 10111011110, 10111101110, 11101011110, 11110101110, 11010000100, 11010010000, 11010011100, 1100011101011];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CODE128C = exports.CODE128B = exports.CODE128A = exports.CODE128 = undefined;\n\nvar _CODE128_AUTO = require('./CODE128_AUTO.js');\n\nvar _CODE128_AUTO2 = _interopRequireDefault(_CODE128_AUTO);\n\nvar _CODE128A = require('./CODE128A.js');\n\nvar _CODE128A2 = _interopRequireDefault(_CODE128A);\n\nvar _CODE128B = require('./CODE128B.js');\n\nvar _CODE128B2 = _interopRequireDefault(_CODE128B);\n\nvar _CODE128C = require('./CODE128C.js');\n\nvar _CODE128C2 = _interopRequireDefault(_CODE128C);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.CODE128 = _CODE128_AUTO2.default;\nexports.CODE128A = _CODE128A2.default;\nexports.CODE128B = _CODE128B2.default;\nexports.CODE128C = _CODE128C2.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.CODE39 = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Code_39#Encoding\n\nvar CODE39 = function (_Barcode) {\n\t_inherits(CODE39, _Barcode);\n\n\tfunction CODE39(data, options) {\n\t\t_classCallCheck(this, CODE39);\n\n\t\tdata = data.toUpperCase();\n\n\t\t// Calculate mod43 checksum if enabled\n\t\tif (options.mod43) {\n\t\t\tdata += getCharacter(mod43checksum(data));\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (CODE39.__proto__ || Object.getPrototypeOf(CODE39)).call(this, data, options));\n\t}\n\n\t_createClass(CODE39, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// First character is always a *\n\t\t\tvar result = getEncoding(\"*\");\n\n\t\t\t// Take every character and add the binary representation to the result\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult += getEncoding(this.data[i]) + \"0\";\n\t\t\t}\n\n\t\t\t// Last character is always a *\n\t\t\tresult += getEncoding(\"*\");\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9A-Z\\-\\.\\ \\$\\/\\+\\%]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn CODE39;\n}(_Barcode3.default);\n\n// All characters. The position in the array is the (checksum) value\n\n\nvar characters = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"-\", \".\", \" \", \"$\", \"/\", \"+\", \"%\", \"*\"];\n\n// The decimal representation of the characters, is converted to the\n// corresponding binary with the getEncoding function\nvar encodings = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770];\n\n// Get the binary representation of a character by converting the encodings\n// from decimal to binary\nfunction getEncoding(character) {\n\treturn getBinary(characterValue(character));\n}\n\nfunction getBinary(characterValue) {\n\treturn encodings[characterValue].toString(2);\n}\n\nfunction getCharacter(characterValue) {\n\treturn characters[characterValue];\n}\n\nfunction characterValue(character) {\n\treturn characters.indexOf(character);\n}\n\nfunction mod43checksum(data) {\n\tvar checksum = 0;\n\tfor (var i = 0; i < data.length; i++) {\n\t\tchecksum += characterValue(data[i]);\n\t}\n\n\tchecksum = checksum % 43;\n\treturn checksum;\n}\n\nexports.CODE39 = CODE39;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Base class for EAN8 & EAN13\nvar EAN = function (_Barcode) {\n\t_inherits(EAN, _Barcode);\n\n\tfunction EAN(data, options) {\n\t\t_classCallCheck(this, EAN);\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tvar _this = _possibleConstructorReturn(this, (EAN.__proto__ || Object.getPrototypeOf(EAN)).call(this, data, options));\n\n\t\t_this.fontSize = !options.flat && options.fontSize > options.width * 10 ? options.width * 10 : options.fontSize;\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN, [{\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\treturn this.options.flat ? this.encodeFlat() : this.encodeGuarded();\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar textOptions = { fontSize: this.fontSize };\n\t\t\tvar guardOptions = { height: this.guardHeight };\n\n\t\t\treturn [{ data: _constants.SIDE_BIN, options: guardOptions }, { data: this.leftEncode(), text: this.leftText(), options: textOptions }, { data: _constants.MIDDLE_BIN, options: guardOptions }, { data: this.rightEncode(), text: this.rightText(), options: textOptions }, { data: _constants.SIDE_BIN, options: guardOptions }];\n\t\t}\n\t}, {\n\t\tkey: 'encodeFlat',\n\t\tvalue: function encodeFlat() {\n\t\t\tvar data = [_constants.SIDE_BIN, this.leftEncode(), _constants.MIDDLE_BIN, this.rightEncode(), _constants.SIDE_BIN];\n\n\t\t\treturn {\n\t\t\t\tdata: data.join(''),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN;\n}(_Barcode3.default);\n\nexports.default = EAN;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _constants = require('./constants');\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Binary_encoding_of_data_digits_into_EAN-13_barcode\n\n// Calculate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 12).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 3 : sum + a;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN13 = function (_EAN) {\n\t_inherits(EAN13, _EAN);\n\n\tfunction EAN13(data, options) {\n\t\t_classCallCheck(this, EAN13);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{12}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\t// Adds a last character to the end of the barcode\n\t\tvar _this = _possibleConstructorReturn(this, (EAN13.__proto__ || Object.getPrototypeOf(EAN13)).call(this, data, options));\n\n\t\t_this.lastChar = options.lastChar;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN13, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{13}$/) !== -1 && +this.data[12] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftText', this).call(this, 1, 6);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(1, 6);\n\t\t\tvar structure = _constants.EAN13_STRUCTURE[this.data[0]];\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftEncode', this).call(this, data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightText', this).call(this, 7, 6);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(7, 6);\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightEncode', this).call(this, data, 'RRRRRR');\n\t\t}\n\n\t\t// The \"standard\" way of printing EAN13 barcodes with guard bars\n\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar data = _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'encodeGuarded', this).call(this);\n\n\t\t\t// Extend data with left digit & last character\n\t\t\tif (this.options.displayValue) {\n\t\t\t\tdata.unshift({\n\t\t\t\t\tdata: '000000000000',\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: 'left', fontSize: this.fontSize }\n\t\t\t\t});\n\n\t\t\t\tif (this.options.lastChar) {\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00'\n\t\t\t\t\t});\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00000',\n\t\t\t\t\t\ttext: this.options.lastChar,\n\t\t\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\t}]);\n\n\treturn EAN13;\n}(_EAN3.default);\n\nexports.default = EAN13;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_2#Encoding\n\nvar EAN2 = function (_Barcode) {\n\t_inherits(EAN2, _Barcode);\n\n\tfunction EAN2(data, options) {\n\t\t_classCallCheck(this, EAN2);\n\n\t\treturn _possibleConstructorReturn(this, (EAN2.__proto__ || Object.getPrototypeOf(EAN2)).call(this, data, options));\n\t}\n\n\t_createClass(EAN2, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{2}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\t// Choose the structure based on the number mod 4\n\t\t\tvar structure = _constants.EAN2_STRUCTURE[parseInt(this.data) % 4];\n\t\t\treturn {\n\t\t\t\t// Start bits + Encode the two digits with 01 in between\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN2;\n}(_Barcode3.default);\n\nexports.default = EAN2;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_5#Encoding\n\nvar checksum = function checksum(data) {\n\tvar result = data.split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 9 : sum + a * 3;\n\t}, 0);\n\treturn result % 10;\n};\n\nvar EAN5 = function (_Barcode) {\n\t_inherits(EAN5, _Barcode);\n\n\tfunction EAN5(data, options) {\n\t\t_classCallCheck(this, EAN5);\n\n\t\treturn _possibleConstructorReturn(this, (EAN5.__proto__ || Object.getPrototypeOf(EAN5)).call(this, data, options));\n\t}\n\n\t_createClass(EAN5, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{5}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar structure = _constants.EAN5_STRUCTURE[checksum(this.data)];\n\t\t\treturn {\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN5;\n}(_Barcode3.default);\n\nexports.default = EAN5;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// http://www.barcodeisland.com/ean8.phtml\n\n// Calculate the checksum digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 7).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a : sum + a * 3;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN8 = function (_EAN) {\n\t_inherits(EAN8, _EAN);\n\n\tfunction EAN8(data, options) {\n\t\t_classCallCheck(this, EAN8);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{7}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (EAN8.__proto__ || Object.getPrototypeOf(EAN8)).call(this, data, options));\n\t}\n\n\t_createClass(EAN8, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{8}$/) !== -1 && +this.data[7] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftText', this).call(this, 0, 4);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(0, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftEncode', this).call(this, data, 'LLLL');\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightText', this).call(this, 4, 4);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(4, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightEncode', this).call(this, data, 'RRRR');\n\t\t}\n\t}]);\n\n\treturn EAN8;\n}(_EAN3.default);\n\nexports.default = EAN8;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.checksum = checksum;\n\nvar _encoder = require(\"./encoder\");\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n\nvar UPC = function (_Barcode) {\n\t_inherits(UPC, _Barcode);\n\n\tfunction UPC(data, options) {\n\t\t_classCallCheck(this, UPC);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{11}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPC.__proto__ || Object.getPrototypeOf(UPC)).call(this, data, options));\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPC, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{12}$/) !== -1 && this.data[11] == checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"flatEncoding\",\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(0, 6), \"LLLLLL\");\n\t\t\tresult += \"01010\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(6, 6), \"RRRRRR\");\n\t\t\tresult += \"101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"guardedEncoding\",\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the first digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\" + (0, _encoder2.default)(this.data[0], \"L\"),\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the left side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(1, 5), \"LLLLL\"),\n\t\t\t\ttext: this.text.substr(1, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the middle bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"01010\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the right side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(6, 5), \"RRRRR\"),\n\t\t\t\ttext: this.text.substr(6, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data[11], \"R\") + \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the last digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(11, 1),\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}]);\n\n\treturn UPC;\n}(_Barcode3.default);\n\n// Calulate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\n\n\nfunction checksum(number) {\n\tvar result = 0;\n\n\tvar i;\n\tfor (i = 1; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]);\n\t}\n\tfor (i = 0; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]) * 3;\n\t}\n\n\treturn (10 - result % 10) % 10;\n}\n\nexports.default = UPC;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _UPC = require('./UPC.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n//\n// UPC-E documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E\n\nvar EXPANSIONS = [\"XX00000XXX\", \"XX10000XXX\", \"XX20000XXX\", \"XXX00000XX\", \"XXXX00000X\", \"XXXXX00005\", \"XXXXX00006\", \"XXXXX00007\", \"XXXXX00008\", \"XXXXX00009\"];\n\nvar PARITIES = [[\"EEEOOO\", \"OOOEEE\"], [\"EEOEOO\", \"OOEOEE\"], [\"EEOOEO\", \"OOEEOE\"], [\"EEOOOE\", \"OOEEEO\"], [\"EOEEOO\", \"OEOOEE\"], [\"EOOEEO\", \"OEEOOE\"], [\"EOOOEE\", \"OEEEOO\"], [\"EOEOEO\", \"OEOEOE\"], [\"EOEOOE\", \"OEOEEO\"], [\"EOOEOE\", \"OEEOEO\"]];\n\nvar UPCE = function (_Barcode) {\n\t_inherits(UPCE, _Barcode);\n\n\tfunction UPCE(data, options) {\n\t\t_classCallCheck(this, UPCE);\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPCE.__proto__ || Object.getPrototypeOf(UPCE)).call(this, data, options));\n\t\t// Code may be 6 or 8 digits;\n\t\t// A 7 digit code is ambiguous as to whether the extra digit\n\t\t// is a UPC-A check or number system digit.\n\n\n\t\t_this.isValid = false;\n\t\tif (data.search(/^[0-9]{6}$/) !== -1) {\n\t\t\t_this.middleDigits = data;\n\t\t\t_this.upcA = expandToUPCA(data, \"0\");\n\t\t\t_this.text = options.text || '' + _this.upcA[0] + data + _this.upcA[_this.upcA.length - 1];\n\t\t\t_this.isValid = true;\n\t\t} else if (data.search(/^[01][0-9]{7}$/) !== -1) {\n\t\t\t_this.middleDigits = data.substring(1, data.length - 1);\n\t\t\t_this.upcA = expandToUPCA(_this.middleDigits, data[0]);\n\n\t\t\tif (_this.upcA[_this.upcA.length - 1] === data[data.length - 1]) {\n\t\t\t\t_this.isValid = true;\n\t\t\t} else {\n\t\t\t\t// checksum mismatch\n\t\t\t\treturn _possibleConstructorReturn(_this);\n\t\t\t}\n\t\t} else {\n\t\t\treturn _possibleConstructorReturn(_this);\n\t\t}\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPCE, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.isValid;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'flatEncoding',\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += this.encodeMiddleDigits();\n\t\t\tresult += \"010101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: 'guardedEncoding',\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the UPC-A number system digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[0],\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the 6 UPC-E digits\n\t\t\tresult.push({\n\t\t\t\tdata: this.encodeMiddleDigits(),\n\t\t\t\ttext: this.text.substring(1, 7),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"010101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the UPC-A check digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[7],\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}, {\n\t\tkey: 'encodeMiddleDigits',\n\t\tvalue: function encodeMiddleDigits() {\n\t\t\tvar numberSystem = this.upcA[0];\n\t\t\tvar checkDigit = this.upcA[this.upcA.length - 1];\n\t\t\tvar parity = PARITIES[parseInt(checkDigit)][parseInt(numberSystem)];\n\t\t\treturn (0, _encoder2.default)(this.middleDigits, parity);\n\t\t}\n\t}]);\n\n\treturn UPCE;\n}(_Barcode3.default);\n\nfunction expandToUPCA(middleDigits, numberSystem) {\n\tvar lastUpcE = parseInt(middleDigits[middleDigits.length - 1]);\n\tvar expansion = EXPANSIONS[lastUpcE];\n\n\tvar result = \"\";\n\tvar digitIndex = 0;\n\tfor (var i = 0; i < expansion.length; i++) {\n\t\tvar c = expansion[i];\n\t\tif (c === 'X') {\n\t\t\tresult += middleDigits[digitIndex++];\n\t\t} else {\n\t\t\tresult += c;\n\t\t}\n\t}\n\n\tresult = '' + numberSystem + result;\n\treturn '' + result + (0, _UPC.checksum)(result);\n}\n\nexports.default = UPCE;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n// Standard start end and middle bits\nvar SIDE_BIN = exports.SIDE_BIN = '101';\nvar MIDDLE_BIN = exports.MIDDLE_BIN = '01010';\n\nvar BINARIES = exports.BINARIES = {\n\t'L': [// The L (left) type of encoding\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'G': [// The G type of encoding\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111'],\n\t'R': [// The R (right) type of encoding\n\t'1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100'],\n\t'O': [// The O (odd) encoding for UPC-E\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'E': [// The E (even) encoding for UPC-E\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111']\n};\n\n// Define the EAN-2 structure\nvar EAN2_STRUCTURE = exports.EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG'];\n\n// Define the EAN-5 structure\nvar EAN5_STRUCTURE = exports.EAN5_STRUCTURE = ['GGLLL', 'GLGLL', 'GLLGL', 'GLLLG', 'LGGLL', 'LLGGL', 'LLLGG', 'LGLGL', 'LGLLG', 'LLGLG'];\n\n// Define the EAN-13 structure\nvar EAN13_STRUCTURE = exports.EAN13_STRUCTURE = ['LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL', 'LGLLGG', 'LGGLLG', 'LGGGLL', 'LGLGLG', 'LGLGGL', 'LGGLGL'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Encode data string\nvar encode = function encode(data, structure, separator) {\n\tvar encoded = data.split('').map(function (val, idx) {\n\t\treturn _constants.BINARIES[structure[idx]];\n\t}).map(function (val, idx) {\n\t\treturn val ? val[data[idx]] : '';\n\t});\n\n\tif (separator) {\n\t\tvar last = data.length - 1;\n\t\tencoded = encoded.map(function (val, idx) {\n\t\t\treturn idx < last ? val + separator : val;\n\t\t});\n\t}\n\n\treturn encoded.join('');\n};\n\nexports.default = encode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UPCE = exports.UPC = exports.EAN2 = exports.EAN5 = exports.EAN8 = exports.EAN13 = undefined;\n\nvar _EAN = require('./EAN13.js');\n\nvar _EAN2 = _interopRequireDefault(_EAN);\n\nvar _EAN3 = require('./EAN8.js');\n\nvar _EAN4 = _interopRequireDefault(_EAN3);\n\nvar _EAN5 = require('./EAN5.js');\n\nvar _EAN6 = _interopRequireDefault(_EAN5);\n\nvar _EAN7 = require('./EAN2.js');\n\nvar _EAN8 = _interopRequireDefault(_EAN7);\n\nvar _UPC = require('./UPC.js');\n\nvar _UPC2 = _interopRequireDefault(_UPC);\n\nvar _UPCE = require('./UPCE.js');\n\nvar _UPCE2 = _interopRequireDefault(_UPCE);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.EAN13 = _EAN2.default;\nexports.EAN8 = _EAN4.default;\nexports.EAN5 = _EAN6.default;\nexports.EAN2 = _EAN8.default;\nexports.UPC = _UPC2.default;\nexports.UPCE = _UPCE2.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.GenericBarcode = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GenericBarcode = function (_Barcode) {\n\t_inherits(GenericBarcode, _Barcode);\n\n\tfunction GenericBarcode(data, options) {\n\t\t_classCallCheck(this, GenericBarcode);\n\n\t\treturn _possibleConstructorReturn(this, (GenericBarcode.__proto__ || Object.getPrototypeOf(GenericBarcode)).call(this, data, options)); // Sets this.data and this.text\n\t}\n\n\t// Return the corresponding binary numbers for the data provided\n\n\n\t_createClass(GenericBarcode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\treturn {\n\t\t\t\tdata: \"10101010101010101010101010101010101010101\",\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Resturn true/false if the string provided is valid for this encoder\n\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn true;\n\t\t}\n\t}]);\n\n\treturn GenericBarcode;\n}(_Barcode3.default);\n\nexports.GenericBarcode = GenericBarcode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ITF = function (_Barcode) {\n\t_inherits(ITF, _Barcode);\n\n\tfunction ITF() {\n\t\t_classCallCheck(this, ITF);\n\n\t\treturn _possibleConstructorReturn(this, (ITF.__proto__ || Object.getPrototypeOf(ITF)).apply(this, arguments));\n\t}\n\n\t_createClass(ITF, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^([0-9]{2})+$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Calculate all the digit pairs\n\t\t\tvar encoded = this.data.match(/.{2}/g).map(function (pair) {\n\t\t\t\treturn _this2.encodePair(pair);\n\t\t\t}).join('');\n\n\t\t\treturn {\n\t\t\t\tdata: _constants.START_BIN + encoded + _constants.END_BIN,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Calculate the data of a number pair\n\n\t}, {\n\t\tkey: 'encodePair',\n\t\tvalue: function encodePair(pair) {\n\t\t\tvar second = _constants.BINARIES[pair[1]];\n\n\t\t\treturn _constants.BINARIES[pair[0]].split('').map(function (first, idx) {\n\t\t\t\treturn (first === '1' ? '111' : '1') + (second[idx] === '1' ? '000' : '0');\n\t\t\t}).join('');\n\t\t}\n\t}]);\n\n\treturn ITF;\n}(_Barcode3.default);\n\nexports.default = ITF;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ITF2 = require('./ITF');\n\nvar _ITF3 = _interopRequireDefault(_ITF2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Calculate the checksum digit\nvar checksum = function checksum(data) {\n\tvar res = data.substr(0, 13).split('').map(function (num) {\n\t\treturn parseInt(num, 10);\n\t}).reduce(function (sum, n, idx) {\n\t\treturn sum + n * (3 - idx % 2 * 2);\n\t}, 0);\n\n\treturn Math.ceil(res / 10) * 10 - res;\n};\n\nvar ITF14 = function (_ITF) {\n\t_inherits(ITF14, _ITF);\n\n\tfunction ITF14(data, options) {\n\t\t_classCallCheck(this, ITF14);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{13}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\t\treturn _possibleConstructorReturn(this, (ITF14.__proto__ || Object.getPrototypeOf(ITF14)).call(this, data, options));\n\t}\n\n\t_createClass(ITF14, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{14}$/) !== -1 && +this.data[13] === checksum(this.data);\n\t\t}\n\t}]);\n\n\treturn ITF14;\n}(_ITF3.default);\n\nexports.default = ITF14;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar START_BIN = exports.START_BIN = '1010';\nvar END_BIN = exports.END_BIN = '11101';\n\nvar BINARIES = exports.BINARIES = ['00110', '10001', '01001', '11000', '00101', '10100', '01100', '00011', '10010', '01010'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ITF14 = exports.ITF = undefined;\n\nvar _ITF = require('./ITF');\n\nvar _ITF2 = _interopRequireDefault(_ITF);\n\nvar _ITF3 = require('./ITF14');\n\nvar _ITF4 = _interopRequireDefault(_ITF3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.ITF = _ITF2.default;\nexports.ITF14 = _ITF4.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup\n\nvar MSI = function (_Barcode) {\n\t_inherits(MSI, _Barcode);\n\n\tfunction MSI(data, options) {\n\t\t_classCallCheck(this, MSI);\n\n\t\treturn _possibleConstructorReturn(this, (MSI.__proto__ || Object.getPrototypeOf(MSI)).call(this, data, options));\n\t}\n\n\t_createClass(MSI, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// Start bits\n\t\t\tvar ret = \"110\";\n\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\t// Convert the character to binary (always 4 binary digits)\n\t\t\t\tvar digit = parseInt(this.data[i]);\n\t\t\t\tvar bin = digit.toString(2);\n\t\t\t\tbin = addZeroes(bin, 4 - bin.length);\n\n\t\t\t\t// Add 100 for every zero and 110 for every 1\n\t\t\t\tfor (var b = 0; b < bin.length; b++) {\n\t\t\t\t\tret += bin[b] == \"0\" ? \"100\" : \"110\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// End bits\n\t\t\tret += \"1001\";\n\n\t\t\treturn {\n\t\t\t\tdata: ret,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn MSI;\n}(_Barcode3.default);\n\nfunction addZeroes(number, n) {\n\tfor (var i = 0; i < n; i++) {\n\t\tnumber = \"0\" + number;\n\t}\n\treturn number;\n}\n\nexports.default = MSI;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI10 = function (_MSI) {\n\t_inherits(MSI10, _MSI);\n\n\tfunction MSI10(data, options) {\n\t\t_classCallCheck(this, MSI10);\n\n\t\treturn _possibleConstructorReturn(this, (MSI10.__proto__ || Object.getPrototypeOf(MSI10)).call(this, data + (0, _checksums.mod10)(data), options));\n\t}\n\n\treturn MSI10;\n}(_MSI3.default);\n\nexports.default = MSI10;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1010 = function (_MSI) {\n\t_inherits(MSI1010, _MSI);\n\n\tfunction MSI1010(data, options) {\n\t\t_classCallCheck(this, MSI1010);\n\n\t\tdata += (0, _checksums.mod10)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1010.__proto__ || Object.getPrototypeOf(MSI1010)).call(this, data, options));\n\t}\n\n\treturn MSI1010;\n}(_MSI3.default);\n\nexports.default = MSI1010;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI11 = function (_MSI) {\n\t_inherits(MSI11, _MSI);\n\n\tfunction MSI11(data, options) {\n\t\t_classCallCheck(this, MSI11);\n\n\t\treturn _possibleConstructorReturn(this, (MSI11.__proto__ || Object.getPrototypeOf(MSI11)).call(this, data + (0, _checksums.mod11)(data), options));\n\t}\n\n\treturn MSI11;\n}(_MSI3.default);\n\nexports.default = MSI11;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1110 = function (_MSI) {\n\t_inherits(MSI1110, _MSI);\n\n\tfunction MSI1110(data, options) {\n\t\t_classCallCheck(this, MSI1110);\n\n\t\tdata += (0, _checksums.mod11)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1110.__proto__ || Object.getPrototypeOf(MSI1110)).call(this, data, options));\n\t}\n\n\treturn MSI1110;\n}(_MSI3.default);\n\nexports.default = MSI1110;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.mod10 = mod10;\nexports.mod11 = mod11;\nfunction mod10(number) {\n\tvar sum = 0;\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[i]);\n\t\tif ((i + number.length) % 2 === 0) {\n\t\t\tsum += n;\n\t\t} else {\n\t\t\tsum += n * 2 % 10 + Math.floor(n * 2 / 10);\n\t\t}\n\t}\n\treturn (10 - sum % 10) % 10;\n}\n\nfunction mod11(number) {\n\tvar sum = 0;\n\tvar weights = [2, 3, 4, 5, 6, 7];\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[number.length - 1 - i]);\n\t\tsum += weights[i % weights.length] * n;\n\t}\n\treturn (11 - sum % 11) % 11;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MSI1110 = exports.MSI1010 = exports.MSI11 = exports.MSI10 = exports.MSI = undefined;\n\nvar _MSI = require('./MSI.js');\n\nvar _MSI2 = _interopRequireDefault(_MSI);\n\nvar _MSI3 = require('./MSI10.js');\n\nvar _MSI4 = _interopRequireDefault(_MSI3);\n\nvar _MSI5 = require('./MSI11.js');\n\nvar _MSI6 = _interopRequireDefault(_MSI5);\n\nvar _MSI7 = require('./MSI1010.js');\n\nvar _MSI8 = _interopRequireDefault(_MSI7);\n\nvar _MSI9 = require('./MSI1110.js');\n\nvar _MSI10 = _interopRequireDefault(_MSI9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.MSI = _MSI2.default;\nexports.MSI10 = _MSI4.default;\nexports.MSI11 = _MSI6.default;\nexports.MSI1010 = _MSI8.default;\nexports.MSI1110 = _MSI10.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.codabar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding specification:\n// http://www.barcodeisland.com/codabar.phtml\n\nvar codabar = function (_Barcode) {\n\t_inherits(codabar, _Barcode);\n\n\tfunction codabar(data, options) {\n\t\t_classCallCheck(this, codabar);\n\n\t\tif (data.search(/^[0-9\\-\\$\\:\\.\\+\\/]+$/) === 0) {\n\t\t\tdata = \"A\" + data + \"A\";\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (codabar.__proto__ || Object.getPrototypeOf(codabar)).call(this, data.toUpperCase(), options));\n\n\t\t_this.text = _this.options.text || _this.text.replace(/[A-D]/g, '');\n\t\treturn _this;\n\t}\n\n\t_createClass(codabar, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[A-D][0-9\\-\\$\\:\\.\\+\\/]+[A-D]$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar result = [];\n\t\t\tvar encodings = this.getEncodings();\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult.push(encodings[this.data.charAt(i)]);\n\t\t\t\t// for all characters except the last, append a narrow-space (\"0\")\n\t\t\t\tif (i !== this.data.length - 1) {\n\t\t\t\t\tresult.push(\"0\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttext: this.text,\n\t\t\t\tdata: result.join('')\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"getEncodings\",\n\t\tvalue: function getEncodings() {\n\t\t\treturn {\n\t\t\t\t\"0\": \"101010011\",\n\t\t\t\t\"1\": \"101011001\",\n\t\t\t\t\"2\": \"101001011\",\n\t\t\t\t\"3\": \"110010101\",\n\t\t\t\t\"4\": \"101101001\",\n\t\t\t\t\"5\": \"110101001\",\n\t\t\t\t\"6\": \"100101011\",\n\t\t\t\t\"7\": \"100101101\",\n\t\t\t\t\"8\": \"100110101\",\n\t\t\t\t\"9\": \"110100101\",\n\t\t\t\t\"-\": \"101001101\",\n\t\t\t\t\"$\": \"101100101\",\n\t\t\t\t\":\": \"1101011011\",\n\t\t\t\t\"/\": \"1101101011\",\n\t\t\t\t\".\": \"1101101101\",\n\t\t\t\t\"+\": \"1011011011\",\n\t\t\t\t\"A\": \"1011001001\",\n\t\t\t\t\"B\": \"1001001011\",\n\t\t\t\t\"C\": \"1010010011\",\n\t\t\t\t\"D\": \"1010011001\"\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn codabar;\n}(_Barcode3.default);\n\nexports.codabar = codabar;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE = require('./CODE39/');\n\nvar _CODE2 = require('./CODE128/');\n\nvar _EAN_UPC = require('./EAN_UPC/');\n\nvar _ITF = require('./ITF/');\n\nvar _MSI = require('./MSI/');\n\nvar _pharmacode = require('./pharmacode/');\n\nvar _codabar = require('./codabar');\n\nvar _GenericBarcode = require('./GenericBarcode/');\n\nexports.default = {\n\tCODE39: _CODE.CODE39,\n\tCODE128: _CODE2.CODE128, CODE128A: _CODE2.CODE128A, CODE128B: _CODE2.CODE128B, CODE128C: _CODE2.CODE128C,\n\tEAN13: _EAN_UPC.EAN13, EAN8: _EAN_UPC.EAN8, EAN5: _EAN_UPC.EAN5, EAN2: _EAN_UPC.EAN2, UPC: _EAN_UPC.UPC, UPCE: _EAN_UPC.UPCE,\n\tITF14: _ITF.ITF14,\n\tITF: _ITF.ITF,\n\tMSI: _MSI.MSI, MSI10: _MSI.MSI10, MSI11: _MSI.MSI11, MSI1010: _MSI.MSI1010, MSI1110: _MSI.MSI1110,\n\tpharmacode: _pharmacode.pharmacode,\n\tcodabar: _codabar.codabar,\n\tGenericBarcode: _GenericBarcode.GenericBarcode\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.pharmacode = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf\n\nvar pharmacode = function (_Barcode) {\n\t_inherits(pharmacode, _Barcode);\n\n\tfunction pharmacode(data, options) {\n\t\t_classCallCheck(this, pharmacode);\n\n\t\tvar _this = _possibleConstructorReturn(this, (pharmacode.__proto__ || Object.getPrototypeOf(pharmacode)).call(this, data, options));\n\n\t\t_this.number = parseInt(data, 10);\n\t\treturn _this;\n\t}\n\n\t_createClass(pharmacode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar z = this.number;\n\t\t\tvar result = \"\";\n\n\t\t\t// http://i.imgur.com/RMm4UDJ.png\n\t\t\t// (source: http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf, page: 34)\n\t\t\twhile (!isNaN(z) && z != 0) {\n\t\t\t\tif (z % 2 === 0) {\n\t\t\t\t\t// Even\n\t\t\t\t\tresult = \"11100\" + result;\n\t\t\t\t\tz = (z - 2) / 2;\n\t\t\t\t} else {\n\t\t\t\t\t// Odd\n\t\t\t\t\tresult = \"100\" + result;\n\t\t\t\t\tz = (z - 1) / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove the two last zeroes\n\t\t\tresult = result.slice(0, -2);\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.number >= 3 && this.number <= 131070;\n\t\t}\n\t}]);\n\n\treturn pharmacode;\n}(_Barcode3.default);\n\nexports.pharmacode = pharmacode;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*eslint no-console: 0 */\n\nvar ErrorHandler = function () {\n\tfunction ErrorHandler(api) {\n\t\t_classCallCheck(this, ErrorHandler);\n\n\t\tthis.api = api;\n\t}\n\n\t_createClass(ErrorHandler, [{\n\t\tkey: \"handleCatch\",\n\t\tvalue: function handleCatch(e) {\n\t\t\t// If babel supported extending of Error in a correct way instanceof would be used here\n\t\t\tif (e.name === \"InvalidInputException\") {\n\t\t\t\tif (this.api._options.valid !== this.api._defaults.valid) {\n\t\t\t\t\tthis.api._options.valid(false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow e.message;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\n\t\t\tthis.api.render = function () {};\n\t\t}\n\t}, {\n\t\tkey: \"wrapBarcodeCall\",\n\t\tvalue: function wrapBarcodeCall(func) {\n\t\t\ttry {\n\t\t\t\tvar result = func.apply(undefined, arguments);\n\t\t\t\tthis.api._options.valid(true);\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleCatch(e);\n\n\t\t\t\treturn this.api;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn ErrorHandler;\n}();\n\nexports.default = ErrorHandler;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InvalidInputException = function (_Error) {\n\t_inherits(InvalidInputException, _Error);\n\n\tfunction InvalidInputException(symbology, input) {\n\t\t_classCallCheck(this, InvalidInputException);\n\n\t\tvar _this = _possibleConstructorReturn(this, (InvalidInputException.__proto__ || Object.getPrototypeOf(InvalidInputException)).call(this));\n\n\t\t_this.name = \"InvalidInputException\";\n\n\t\t_this.symbology = symbology;\n\t\t_this.input = input;\n\n\t\t_this.message = '\"' + _this.input + '\" is not a valid input for ' + _this.symbology;\n\t\treturn _this;\n\t}\n\n\treturn InvalidInputException;\n}(Error);\n\nvar InvalidElementException = function (_Error2) {\n\t_inherits(InvalidElementException, _Error2);\n\n\tfunction InvalidElementException() {\n\t\t_classCallCheck(this, InvalidElementException);\n\n\t\tvar _this2 = _possibleConstructorReturn(this, (InvalidElementException.__proto__ || Object.getPrototypeOf(InvalidElementException)).call(this));\n\n\t\t_this2.name = \"InvalidElementException\";\n\t\t_this2.message = \"Not supported type to render on\";\n\t\treturn _this2;\n\t}\n\n\treturn InvalidElementException;\n}(Error);\n\nvar NoElementException = function (_Error3) {\n\t_inherits(NoElementException, _Error3);\n\n\tfunction NoElementException() {\n\t\t_classCallCheck(this, NoElementException);\n\n\t\tvar _this3 = _possibleConstructorReturn(this, (NoElementException.__proto__ || Object.getPrototypeOf(NoElementException)).call(this));\n\n\t\t_this3.name = \"NoElementException\";\n\t\t_this3.message = \"No element to render on.\";\n\t\treturn _this3;\n\t}\n\n\treturn NoElementException;\n}(Error);\n\nexports.InvalidInputException = InvalidInputException;\nexports.InvalidElementException = InvalidElementException;\nexports.NoElementException = NoElementException;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = fixOptions;\n\n\nfunction fixOptions(options) {\n\t// Fix the margins\n\toptions.marginTop = options.marginTop || options.margin;\n\toptions.marginBottom = options.marginBottom || options.margin;\n\toptions.marginRight = options.marginRight || options.margin;\n\toptions.marginLeft = options.marginLeft || options.margin;\n\n\treturn options;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _optionsFromStrings = require(\"./optionsFromStrings.js\");\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _defaults = require(\"../options/defaults.js\");\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getOptionsFromElement(element) {\n\tvar options = {};\n\tfor (var property in _defaults2.default) {\n\t\tif (_defaults2.default.hasOwnProperty(property)) {\n\t\t\t// jsbarcode-*\n\t\t\tif (element.hasAttribute(\"jsbarcode-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"jsbarcode-\" + property.toLowerCase());\n\t\t\t}\n\n\t\t\t// data-*\n\t\t\tif (element.hasAttribute(\"data-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"data-\" + property.toLowerCase());\n\t\t\t}\n\t\t}\n\t}\n\n\toptions[\"value\"] = element.getAttribute(\"jsbarcode-value\") || element.getAttribute(\"data-value\");\n\n\t// Since all atributes are string they need to be converted to integers\n\toptions = (0, _optionsFromStrings2.default)(options);\n\n\treturn options;\n}\n\nexports.default = getOptionsFromElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /* global HTMLImageElement */\n/* global HTMLCanvasElement */\n/* global SVGElement */\n\nvar _getOptionsFromElement = require(\"./getOptionsFromElement.js\");\n\nvar _getOptionsFromElement2 = _interopRequireDefault(_getOptionsFromElement);\n\nvar _renderers = require(\"../renderers\");\n\nvar _renderers2 = _interopRequireDefault(_renderers);\n\nvar _exceptions = require(\"../exceptions/exceptions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Takes an element and returns an object with information about how\n// it should be rendered\n// This could also return an array with these objects\n// {\n// element: The element that the renderer should draw on\n// renderer: The name of the renderer\n// afterRender (optional): If something has to done after the renderer\n// completed, calls afterRender (function)\n// options (optional): Options that can be defined in the element\n// }\n\nfunction getRenderProperties(element) {\n\t// If the element is a string, query select call again\n\tif (typeof element === \"string\") {\n\t\treturn querySelectedRenderProperties(element);\n\t}\n\t// If element is array. Recursivly call with every object in the array\n\telse if (Array.isArray(element)) {\n\t\t\tvar returnArray = [];\n\t\t\tfor (var i = 0; i < element.length; i++) {\n\t\t\t\treturnArray.push(getRenderProperties(element[i]));\n\t\t\t}\n\t\t\treturn returnArray;\n\t\t}\n\t\t// If element, render on canvas and set the uri as src\n\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLImageElement) {\n\t\t\t\treturn newCanvasRenderProperties(element);\n\t\t\t}\n\t\t\t// If SVG\n\t\t\telse if (element && element.nodeName && element.nodeName.toLowerCase() === 'svg' || typeof SVGElement !== 'undefined' && element instanceof SVGElement) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\telement: element,\n\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\trenderer: _renderers2.default.SVGRenderer\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t// If canvas (in browser)\n\t\t\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLCanvasElement) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// If canvas (in node)\n\t\t\t\t\telse if (element && element.getContext) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (element && (typeof element === \"undefined\" ? \"undefined\" : _typeof(element)) === 'object' && !element.nodeName) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.ObjectRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new _exceptions.InvalidElementException();\n\t\t\t\t\t\t}\n}\n\nfunction querySelectedRenderProperties(string) {\n\tvar selector = document.querySelectorAll(string);\n\tif (selector.length === 0) {\n\t\treturn undefined;\n\t} else {\n\t\tvar returnArray = [];\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\treturnArray.push(getRenderProperties(selector[i]));\n\t\t}\n\t\treturn returnArray;\n\t}\n}\n\nfunction newCanvasRenderProperties(imgElement) {\n\tvar canvas = document.createElement('canvas');\n\treturn {\n\t\telement: canvas,\n\t\toptions: (0, _getOptionsFromElement2.default)(imgElement),\n\t\trenderer: _renderers2.default.CanvasRenderer,\n\t\tafterRender: function afterRender() {\n\t\t\timgElement.setAttribute(\"src\", canvas.toDataURL());\n\t\t}\n\t};\n}\n\nexports.default = getRenderProperties;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = linearizeEncodings;\n\n// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\nfunction linearizeEncodings(encodings) {\n\tvar linearEncodings = [];\n\tfunction nextLevel(encoded) {\n\t\tif (Array.isArray(encoded)) {\n\t\t\tfor (var i = 0; i < encoded.length; i++) {\n\t\t\t\tnextLevel(encoded[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tencoded.text = encoded.text || \"\";\n\t\t\tencoded.data = encoded.data || \"\";\n\t\t\tlinearEncodings.push(encoded);\n\t\t}\n\t}\n\tnextLevel(encodings);\n\n\treturn linearEncodings;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function (old, replaceObj) {\n return _extends({}, old, replaceObj);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = optionsFromStrings;\n\n// Convert string to integers/booleans where it should be\n\nfunction optionsFromStrings(options) {\n\tvar intOptions = [\"width\", \"height\", \"textMargin\", \"fontSize\", \"margin\", \"marginTop\", \"marginBottom\", \"marginLeft\", \"marginRight\"];\n\n\tfor (var intOption in intOptions) {\n\t\tif (intOptions.hasOwnProperty(intOption)) {\n\t\t\tintOption = intOptions[intOption];\n\t\t\tif (typeof options[intOption] === \"string\") {\n\t\t\t\toptions[intOption] = parseInt(options[intOption], 10);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof options[\"displayValue\"] === \"string\") {\n\t\toptions[\"displayValue\"] = options[\"displayValue\"] != \"false\";\n\t}\n\n\treturn options;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar defaults = {\n\twidth: 2,\n\theight: 100,\n\tformat: \"auto\",\n\tdisplayValue: true,\n\tfontOptions: \"\",\n\tfont: \"monospace\",\n\ttext: undefined,\n\ttextAlign: \"center\",\n\ttextPosition: \"bottom\",\n\ttextMargin: 2,\n\tfontSize: 20,\n\tbackground: \"#ffffff\",\n\tlineColor: \"#000000\",\n\tmargin: 10,\n\tmarginTop: undefined,\n\tmarginBottom: undefined,\n\tmarginLeft: undefined,\n\tmarginRight: undefined,\n\tvalid: function valid() {}\n};\n\nexports.default = defaults;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CanvasRenderer = function () {\n\tfunction CanvasRenderer(canvas, encodings, options) {\n\t\t_classCallCheck(this, CanvasRenderer);\n\n\t\tthis.canvas = canvas;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(CanvasRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\t// Abort if the browser does not support HTML5 canvas\n\t\t\tif (!this.canvas.getContext) {\n\t\t\t\tthrow new Error('The browser does not support canvas.');\n\t\t\t}\n\n\t\t\tthis.prepareCanvas();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, this.encodings[i].options);\n\n\t\t\t\tthis.drawCanvasBarcode(encodingOptions, this.encodings[i]);\n\t\t\t\tthis.drawCanvasText(encodingOptions, this.encodings[i]);\n\n\t\t\t\tthis.moveCanvasDrawing(this.encodings[i]);\n\t\t\t}\n\n\t\t\tthis.restoreCanvas();\n\t\t}\n\t}, {\n\t\tkey: \"prepareCanvas\",\n\t\tvalue: function prepareCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.save();\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options, ctx);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tthis.canvas.width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\n\t\t\tthis.canvas.height = maxHeight;\n\n\t\t\t// Paint the canvas\n\t\t\tctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\tif (this.options.background) {\n\t\t\t\tctx.fillStyle = this.options.background;\n\t\t\t\tctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\t}\n\n\t\t\tctx.translate(this.options.marginLeft, 0);\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasBarcode\",\n\t\tvalue: function drawCanvasBarcode(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.marginTop + options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = options.marginTop;\n\t\t\t}\n\n\t\t\tctx.fillStyle = options.lineColor;\n\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tvar x = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height);\n\t\t\t\t} else if (binary[b]) {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height * binary[b]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasText\",\n\t\tvalue: function drawCanvasText(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.marginTop + options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.marginTop + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\tctx.font = font;\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\tctx.textAlign = 'right';\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t}\n\n\t\t\t\tctx.fillText(encoding.text, x, y);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"moveCanvasDrawing\",\n\t\tvalue: function moveCanvasDrawing(encoding) {\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.translate(encoding.width, 0);\n\t\t}\n\t}, {\n\t\tkey: \"restoreCanvas\",\n\t\tvalue: function restoreCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.restore();\n\t\t}\n\t}]);\n\n\treturn CanvasRenderer;\n}();\n\nexports.default = CanvasRenderer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _canvas = require('./canvas.js');\n\nvar _canvas2 = _interopRequireDefault(_canvas);\n\nvar _svg = require('./svg.js');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _object = require('./object.js');\n\nvar _object2 = _interopRequireDefault(_object);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = { CanvasRenderer: _canvas2.default, SVGRenderer: _svg2.default, ObjectRenderer: _object2.default };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ObjectRenderer = function () {\n\tfunction ObjectRenderer(object, encodings, options) {\n\t\t_classCallCheck(this, ObjectRenderer);\n\n\t\tthis.object = object;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(ObjectRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tthis.object.encodings = this.encodings;\n\t\t}\n\t}]);\n\n\treturn ObjectRenderer;\n}();\n\nexports.default = ObjectRenderer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.getTotalWidthOfEncodings = exports.calculateEncodingAttributes = exports.getBarcodePadding = exports.getEncodingHeight = exports.getMaximumHeightOfEncodings = undefined;\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getEncodingHeight(encoding, options) {\n\treturn options.height + (options.displayValue && encoding.text.length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom;\n}\n\nfunction getBarcodePadding(textWidth, barcodeWidth, options) {\n\tif (options.displayValue && barcodeWidth < textWidth) {\n\t\tif (options.textAlign == \"center\") {\n\t\t\treturn Math.floor((textWidth - barcodeWidth) / 2);\n\t\t} else if (options.textAlign == \"left\") {\n\t\t\treturn 0;\n\t\t} else if (options.textAlign == \"right\") {\n\t\t\treturn Math.floor(textWidth - barcodeWidth);\n\t\t}\n\t}\n\treturn 0;\n}\n\nfunction calculateEncodingAttributes(encodings, barcodeOptions, context) {\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tvar encoding = encodings[i];\n\t\tvar options = (0, _merge2.default)(barcodeOptions, encoding.options);\n\n\t\t// Calculate the width of the encoding\n\t\tvar textWidth;\n\t\tif (options.displayValue) {\n\t\t\ttextWidth = messureText(encoding.text, options, context);\n\t\t} else {\n\t\t\ttextWidth = 0;\n\t\t}\n\n\t\tvar barcodeWidth = encoding.data.length * options.width;\n\t\tencoding.width = Math.ceil(Math.max(textWidth, barcodeWidth));\n\n\t\tencoding.height = getEncodingHeight(encoding, options);\n\n\t\tencoding.barcodePadding = getBarcodePadding(textWidth, barcodeWidth, options);\n\t}\n}\n\nfunction getTotalWidthOfEncodings(encodings) {\n\tvar totalWidth = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\ttotalWidth += encodings[i].width;\n\t}\n\treturn totalWidth;\n}\n\nfunction getMaximumHeightOfEncodings(encodings) {\n\tvar maxHeight = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tif (encodings[i].height > maxHeight) {\n\t\t\tmaxHeight = encodings[i].height;\n\t\t}\n\t}\n\treturn maxHeight;\n}\n\nfunction messureText(string, options, context) {\n\tvar ctx;\n\n\tif (context) {\n\t\tctx = context;\n\t} else if (typeof document !== \"undefined\") {\n\t\tctx = document.createElement(\"canvas\").getContext(\"2d\");\n\t} else {\n\t\t// If the text cannot be messured we will return 0.\n\t\t// This will make some barcode with big text render incorrectly\n\t\treturn 0;\n\t}\n\tctx.font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t// Calculate the width of the encoding\n\tvar measureTextResult = ctx.measureText(string);\n\tif (!measureTextResult) {\n\t\t// Some implementations don't implement measureText and return undefined.\n\t\t// If the text cannot be measured we will return 0.\n\t\t// This will make some barcode with big text render incorrectly\n\t\treturn 0;\n\t}\n\tvar size = measureTextResult.width;\n\treturn size;\n}\n\nexports.getMaximumHeightOfEncodings = getMaximumHeightOfEncodings;\nexports.getEncodingHeight = getEncodingHeight;\nexports.getBarcodePadding = getBarcodePadding;\nexports.calculateEncodingAttributes = calculateEncodingAttributes;\nexports.getTotalWidthOfEncodings = getTotalWidthOfEncodings;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar svgns = \"http://www.w3.org/2000/svg\";\n\nvar SVGRenderer = function () {\n\tfunction SVGRenderer(svg, encodings, options) {\n\t\t_classCallCheck(this, SVGRenderer);\n\n\t\tthis.svg = svg;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t\tthis.document = options.xmlDocument || document;\n\t}\n\n\t_createClass(SVGRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar currentX = this.options.marginLeft;\n\n\t\t\tthis.prepareSVG();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encoding = this.encodings[i];\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, encoding.options);\n\n\t\t\t\tvar group = this.createGroup(currentX, encodingOptions.marginTop, this.svg);\n\n\t\t\t\tthis.setGroupOptions(group, encodingOptions);\n\n\t\t\t\tthis.drawSvgBarcode(group, encodingOptions, encoding);\n\t\t\t\tthis.drawSVGText(group, encodingOptions, encoding);\n\n\t\t\t\tcurrentX += encoding.width;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"prepareSVG\",\n\t\tvalue: function prepareSVG() {\n\t\t\t// Clear the SVG\n\t\t\twhile (this.svg.firstChild) {\n\t\t\t\tthis.svg.removeChild(this.svg.firstChild);\n\t\t\t}\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tvar width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\t\t\tthis.setSvgAttributes(width, maxHeight);\n\n\t\t\tif (this.options.background) {\n\t\t\t\tthis.drawRect(0, 0, width, maxHeight, this.svg).setAttribute(\"style\", \"fill:\" + this.options.background + \";\");\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSvgBarcode\",\n\t\tvalue: function drawSvgBarcode(parent, options, encoding) {\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = 0;\n\t\t\t}\n\n\t\t\tvar barWidth = 0;\n\t\t\tvar x = 0;\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tx = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tbarWidth++;\n\t\t\t\t} else if (barWidth > 0) {\n\t\t\t\t\tthis.drawRect(x - options.width * barWidth, yFrom, options.width * barWidth, options.height, parent);\n\t\t\t\t\tbarWidth = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Last draw is needed since the barcode ends with 1\n\t\t\tif (barWidth > 0) {\n\t\t\t\tthis.drawRect(x - options.width * (barWidth - 1), yFrom, options.width * barWidth, options.height, parent);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSVGText\",\n\t\tvalue: function drawSVGText(parent, options, encoding) {\n\t\t\tvar textElem = this.document.createElementNS(svgns, 'text');\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\ttextElem.setAttribute(\"style\", \"font:\" + options.fontOptions + \" \" + options.fontSize + \"px \" + options.font);\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"start\");\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"end\");\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"middle\");\n\t\t\t\t\t}\n\n\t\t\t\ttextElem.setAttribute(\"x\", x);\n\t\t\t\ttextElem.setAttribute(\"y\", y);\n\n\t\t\t\ttextElem.appendChild(this.document.createTextNode(encoding.text));\n\n\t\t\t\tparent.appendChild(textElem);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"setSvgAttributes\",\n\t\tvalue: function setSvgAttributes(width, height) {\n\t\t\tvar svg = this.svg;\n\t\t\tsvg.setAttribute(\"width\", width + \"px\");\n\t\t\tsvg.setAttribute(\"height\", height + \"px\");\n\t\t\tsvg.setAttribute(\"x\", \"0px\");\n\t\t\tsvg.setAttribute(\"y\", \"0px\");\n\t\t\tsvg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n\t\t\tsvg.setAttribute(\"xmlns\", svgns);\n\t\t\tsvg.setAttribute(\"version\", \"1.1\");\n\n\t\t\tsvg.setAttribute(\"style\", \"transform: translate(0,0)\");\n\t\t}\n\t}, {\n\t\tkey: \"createGroup\",\n\t\tvalue: function createGroup(x, y, parent) {\n\t\t\tvar group = this.document.createElementNS(svgns, 'g');\n\t\t\tgroup.setAttribute(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n\n\t\t\tparent.appendChild(group);\n\n\t\t\treturn group;\n\t\t}\n\t}, {\n\t\tkey: \"setGroupOptions\",\n\t\tvalue: function setGroupOptions(group, options) {\n\t\t\tgroup.setAttribute(\"style\", \"fill:\" + options.lineColor + \";\");\n\t\t}\n\t}, {\n\t\tkey: \"drawRect\",\n\t\tvalue: function drawRect(x, y, width, height, parent) {\n\t\t\tvar rect = this.document.createElementNS(svgns, 'rect');\n\n\t\t\trect.setAttribute(\"x\", x);\n\t\t\trect.setAttribute(\"y\", y);\n\t\t\trect.setAttribute(\"width\", width);\n\t\t\trect.setAttribute(\"height\", height);\n\n\t\t\tparent.appendChild(rect);\n\n\t\t\treturn rect;\n\t\t}\n\t}]);\n\n\treturn SVGRenderer;\n}();\n\nexports.default = SVGRenderer;","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '